使用Java编写酷Q插件

Author Avatar
yiheng 2018年08月05日
  • 在其它设备中阅读本文章

突然对酷Q感兴趣起来,于是就尝试使用Java编写酷Q的插件用作机器人

根据论坛的信息,有人使用曲线救国的方法让酷Q支持了Java编写插件

论坛地址:https://cqp.cc/t/37318

api文档:http://sobte.gitee.io/jcq-wiki/

获取插件

论坛中获取以下文件

com.sobte.cqp.jcq.cpk

将此文件放入酷Q的app目录下,然后加载此插件

需要指定32位Java的安装目录

创建项目

IDEA中创建一个JavaKotlingradle项目,我将其命名为了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,实现接口ICQVerIMsgIRequest并实现所有方法

按文档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

点击启用测试