使用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

点击启用测试