使用Java开发QQ机器人- CQ & HTTP TO CQ
警告 此方法已经无效,可以看simple-robot框架 2.x的帖子:如何用Java写QQ机器人 v2.0。
使用酷Q平台下的HTTP TO CQ插件以及simple-robot核心标准库作为依赖。
此插件与框架的 简陋 简单介绍:文档处简介
使用Java开发QQ机器人框架的方法一(也是更加推荐的方法):方法一: 使用CQ HTTP插件
前往项目Github地址点击star
以收获作者的感谢:GayHub
快速开始
一、安装
1. 下载并安装 酷Q
前往酷Q官方下载地址下载酷Q应用,并安装(启动一次),然后关闭。
2. 下载并安装 HTTP TO CQ插件
①. 前往HTTP TO CQ
的 releases 下载最新版本。
②. 将下载好的.cpk
格式文件移动至酷Q
根目录下的/app
文件夹下。
③. 启动一次酷Q程序,右键酷Q标志,选择:应用 > 应用管理
,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcC80kIu-1582724960083)(https://i.vgy.me/QpgBpK.png)]
然后将会出现应用管理界面,选择HTTP API插件并选择启用,如图所示:
HTTP TO CQ插件自带UI,对于新手来说还是比较友好的。其配置UI图例如图:
3. 创建Java项目
你可以使用一切支持的方式来自动构建项目,以下将会举几个例子:
[info] 版本号请自行替换为 Maven仓库中的最新版本:https://img.shields.io/maven-central/v/io.github.ForteScarlet.simple-robot-core/component-forhttpapi
①. Maven
<dependency><groupId>io.github.ForteScarlet.simple-robot-core</groupId><artifactId>component-forhttpapi</artifactId><version>${version}</version>
</dependency>
②. Gradle
implementation 'io.github.ForteScarlet.simple-robot-core:component-forhttpapi:${version}'
③. Grape
@Grapes(@Grab(group='io.github.ForteScarlet.simple-robot-core', module='component-forhttpapi', version='${version}')
)
)
二. 使用
4. 配置
有两个地方需要你进行配置:
- 酷Q的
HTTP TO CQ
- 你需要启动的Java程序
从Java的配置开始吧。
由于目前文件配置尚比较繁琐,便暂时先只介绍代码配置的方式。如果对目前的较为繁琐的文件配置有兴趣,请在了解代码配置的情况下查看 文件配置方式
首先,创建一个类,实现com.forte.qqrobot.component.forhttpapi.HttpApp
接口,并实现接口中的before
与after
方法。
现在假定你这个类叫做
RunApp
, 方便后续的代称。当然,它实际上叫做什么都无所谓。
可以发现,before
方法中存在一个叫做HttpConfiguration
的参数,我们就要通过这个参数对象进行配置。
以下我将会列举最常见的几项配置信息,而全面的配置可选项请查看核心通用配置 与 组件额外配置
关于HTTP TO CQ的配置与Java程序的配置信息,我简单画了这么一个对应关系图:
!!! 千万别忘了写端口号! 插件的提交地址的默认值并没有写端口号,这是个坑 !!!
5. 运行
历尽千辛万苦,终于到了这一步。
首先,新建一个main
方法在任意地方。
写下以下代码,并且别忘了那个RunApp
实际上代表了什么:
HttpApplication application = new HttpApplication();
// 启动
application.run(new RunApp());
[success] 如果这时候一看到控制台所输出的日志中最终出现了你的机器人的一些信息,那么恭喜,这说明你已经发送、获取、设置消息了。
那么能不能监听到消息呢?写一些代码来测试一下吧。
6. 第一个监听器
①. 新建一个类
[info] 尽量在
RunApp
的同级目录或者子级目录下创建。
创建好之后,在这个类上标注一个注解:@com.forte.qqrobot.anno.depend.Beans
, 即@Beans
②. 写一个监听私信的方法
我们写一个监听私信消息满足正则:hello.*
的私信消息监听函数,且当我们收到消息后,复读。
完整代码如下:
@Beans
public class TestListener {@Listen(MsgGetTypes.privateMsg)@Filter("hello.*")public void testListen1(PrivateMsg msg, MsgSender sender) {System.out.println(msg);// 以下三种方法均可,效果相同sender.SENDER.sendPrivateMsg(msg, msg.getMsg());
// sender.SENDER.sendPrivateMsg(msg.getQQ(), msg.getMsg());
// sender.SENDER.sendPrivateMsg(msg.getQQCode(), msg.getMsg());}
}
注:如果在默认配置的情况下,监听器的被扫描包范围在
RunApp
启动器的同级包目录与其子目录。
③. 在来一次
这次我们再启动一次,如果发现启动日志中成功加载了这个监听函数,那就试着给你的机器人发送一句hello world
吧。
如果它也回复了你一句hello world
,那么说明至此你已经成功了,可以继续深入的探索 文档 中所提供的丰富功能并实现你想要的机器人吧~
7. 失败了?
如果跟着上述流程完整无误的操作却无法成功,也不要气馁,尝试根据常见问题汇总进行排查。