使用Java编写酷Q插件
突然对酷Q感兴趣起来,于是就尝试使用Java编写酷Q的插件用作机器人
根据论坛的信息,有人使用曲线救国的方法让酷Q支持了Java编写插件
api文档:http://sobte.gitee.io/jcq-wiki/
获取插件
从论坛中获取以下文件
com.sobte.cqp.jcq.cpk
将此文件放入酷Q的app目录下,然后加载此插件
需要指定32位Java的安装目录
创建项目
IDEA中创建一个Java
和Kotlin
的gradle
项目,我将其命名为了coolQbotTest
修改build.gradle
,在依赖中添加
implementation 'com.sobte.cqp:jcq-coolq:1.2.7'
然后根据文档,在官方文件的基础上修改json配置文件
在这里发现一个坑,这个json文件编码必须为GBK,请注意
主要修改以下几项
"name": "test1", // 应用名称
"version": "1.0.0", // 应用版本
"version_id": 1, // 应用顺序版本(每次发布时至少+1)
"author": "yiheng", // 应用作者
"class": "moe.yiheng.Bot", // 应用加载主类,默认使用appid加载,如需使用则删除前面注释
"description": "应用描述",
删除menu
下的设置菜单
删除auth
下不需要的权限
编写抽象类 Basebot
因为Api提供的类JcqAppAbstract
实现了接口JcqListener
,而接口中有近20个方法,放在bot主类中可读性极差还不方便,于是就写了一个BaseBot
,顺便在BaseBot
中将消息输出到控制台
继承类JcqAppAbstract
,实现接口ICQVer
,IMsg
,IRequest
并实现所有方法
按文档appinfo
这步很重要,写错了bot无法运行,请严格按文档要求写
@Override
public String appInfo() {
String appID = "moe.yiheng.test";// 记住编译后的文件和json也要使用appid做文件名
return CQAPIVER + "," + appID;
}
记住这里的appID
然后给监听方法逐个加上输出
BaseBot.kt
的代码可以在这里找到
编写bot代码
编写一个类,与json配置中的主类对应
继承类BaseBot
然后重写要监听的方法
监听的方法定义在com.sobte.cqp.jcq.event.JcqListener
,可以根据文档得知方法用途
我重写了privateMsg
方法,监听私聊消息并将这句消息重复发送回去
代码:
@Override
public int privateMsg(int subType, int msgId, long fromQQ, @NotNull String msg, int font) {
super.privateMsg(subType, msgId, fromQQ, msg, font);
CQ.sendPrivateMsg(fromQQ, msg);
return MSG_IGNORE;
}
部署bot
将bot打包为jar(无需指定main类)
将jar包名字修改为之前的appId (比如我是moe.yiheng.test.jar
)
将json配置文件也修改为appId.json
两个文件一起丢到%酷Q位置%\app\com.sobte.cqp.jcq\app
目录下,重启酷Q
然后进入插件[JCQ]开发工具
的管理界面,应当可以看到你的bot
点击启用测试