Awesome
JavaCQ SDK Tool
前言
本插件将酷Q扩展可以间接使用Java进行开发
本文档适用于有一定Java基础的开发者阅读
以下提供详细步骤,推荐使用maven进行开发
文档不够详细的部分可以源码,源码的注释也是非常全的
视频教学:待续~ 酷Q帖子:https://cqp.cc/t/37318
开发环境
- 电脑上已安装32位 JDK(JRE) 1.6以上版本
注:酷Q未提供64位版本,所以JRE必须为32位,否则JRE无法正常加载 - 下载 酷Q 和 JavaCQ SDK Tool 插件 ,安装并启用工具插件
注:启用时发生依赖DLL链接错误,多半因为JVM相关 VC库 未安装 - Java开发工具:MyEclipse、Eclipse、Intelij IDEA等 主流开发工具均可开发
JCQ Tool 目录结构
根目录 (例:酷Q/data/app/com.sobte.cqp.jcq/)
目录 | 描述 |
---|---|
bin/ | 存放重要的JCQ插件管理工具和酷QAPI工具 |
app/ | 插件放置处,即放置您所编写并打包好的jar |
conf/ | 核心配置目录 |
lib/ | 全局lib目录,需手动创建 |
小提示
jar插件同名文件夹下创建lib,可以使用独立lib(可在json中修改此位置)
优先级:独立lib > 全局lib > JCQ自带lib
每个插件都是独立的,互不影响,各插件加载类时优先级越高的最先加载
全局lib 和 独立lib 根据需求使用 注意类加载优先级
配置文件
文件 | 描述 |
---|---|
setting.ini | JCQ配置文件 |
JCQ.cfg | JCQ应用配置文件,此文件较为重要,不做解释 |
JCQ Tool 配置文件
JavaVM 相关
key | value |
---|---|
JrePath | 自定义JRE路径配置 (默认从注册表读JRE目录) |
ClassPath | 设置JVM启动加载类路径 |
MinSize | JVM堆内存最小设置 |
MaxSize | JVM堆内存最大设置 |
MinPermSize | JVM非堆内存最小设置 |
MaxPermSize | JVM非堆内存最大设置 |
JVM内存限制
32位虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB 一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G,而64bit以上的处理器就不会有限制了
JavaCQ 相关
key | value |
---|---|
Version | JCQ Tool版本(清空此值,则重新生成核心文件) |
JSON 文件介绍
正常插件是由以下两部分组成的
- json:此文件用于描述插件信息
- jar :此文件是插件所有class打包而成
JSON文件是用于存储插件信息的文本文件 下面介绍下Json基本信息,详情查看Demo中json注释
整体部分
{
"ret" : 1, // 返回码,固定为1
"apiver" : 9, // Api版本,本SDK为9
"name" : "name", // 应用的名称
"version" : "1.0.0", // 应用文本版本号 例:1.0.0
"version_id" : 1, // 应用顺序版本(每次发布时至少+1)
"author" : "author", // 应用作者
//"path" : "lib", // 应用lib加载处,默认插件同名文件夹目录下lib文件夹,此目录可以填相对路径和绝对路径,相对:应用同名文件夹
//"class" : "com.example.Demo", // 应用加载主类,注意必须填写全类名,默认使用appid加载,如需使用则删除前面注释
"description": "", // 应用描述
"event" : [], // 事件列表,同一事件类型可重复定义(发布前请删除无用事件)
"menu" : [], // 设置菜单
"status" : [], // 悬浮窗状态 (暂无实际功能,后期加入)
"auth" : [] // 应用权限
}
事件部分
{
// 这是事件部分json,其他部分与上面一致
"event":
[
// 这里列举私聊事件为例,其他参考Demo中的json
{
"id" : 1, // 事件ID,保持唯一即可
"type" : 21, // 事件类型,事件类型,用于区分各函数的功能
"name" : "私聊消息处理", // 事件名称
"function": "privateMsg", // 事件对应主类中的函数
"priority": 30000 // 事件优先级 (参见 cqp.im/deveventpriority)
}
]
}
菜单部分
{
// 这是事件部分json,其他部分与上面一致
"event":
[
// 菜单会在管理器中被调用
{
"name": "设置A", //菜单名称
"function": "menuA" //菜单对应主类中的函数
}
]
}
最后必须将文件名改为 [appid].json 并和你的jar插件放置到app目录下
使用Demo开发
如果有一定Java基础,则可以转到下文的快速开发
- 下载 Demo ,导入到开发工具中
- 参考上方json介绍,根据自己需求修改json文件,文件名需和 appid 相同
- 查看项目中
lib
目录,导入其中所需jar文件 - 打开包中的应用主类,这里建议包到主类的全类名尽量和 appid 保持一致
注:酷Q是事件驱动的模式,json中定义的事件,在主类中实现事件 - 根据自己的需求 编写,修改 所需代码,相关CQ类说明在文档下方
// 群消息事件,详情参考Demo中的主类
public int groupMsg(int subType, int msgId, long fromGroup, long fromQQ, String fromAnonymous, String msg, int font) {
// 以下是群消息要执行的代码
CQ.sendGroupMsg(fromGroup, msg + "Java插件");
return 0;
}
- 在json中,指定主类
注:如不设置则利用appid加载,最后一个单词自动大写查找 例:appid(com.example.demo) 则加载类 com.example.Demo - 然后使用开发工具进行编译打包成jar
- 将jar依赖lib导入放置到,全局lib或单独lib中,jcq-coolq和commons-codec,工具自带了,可以不用导入
注:导入的依赖jar,尽量保证版本一致,避免不必要的错误 - 将打包好的jar和json,一起复制到
app
目录下 - 启动或重启酷Q即可运行插件
注:因为JRE不能重新加载,重新加载插件需重启酷Q,重启插件无效 - 触发事件开始体验自己的插件吧,喵呜~
快速开发
此步骤面向一定Java基础的开发者
- 待续,暂未完成....
Maven 导入
<groupId>org.meowy.cqp</groupId>
<artifactId>jcq-coolq</artifactId>
<version>1.3.0</version>
JCQ-CoolQ 常用类说明
JCQ JavaDoc http://sobte.gitee.io/jcq-wiki/
其中包括JCQ所有类的注释
CoolQ 类
酷Q操作的核心类
方法 | 说明 |
---|---|
deleteMsg | 撤回消息,需Pro版 |
getAppDirectory | 获取应用目录,如果目录不存在则自动创建,目录末尾带 "" |
getCookies | 获取Cookie,慎用,此接口需要严格授权 |
getCsrfToken | 获取CsrfToken,即QQ网页用到的bkn/g_tk等 慎用,此接口需要严格授权 |
getGroupList | 获取群列表 |
getGroupMemberInfo | 获取群成员信息 |
getGroupMemberInfoV2 | 获取群成员信息 |
getGroupMemberList | 获取群成员列表 |
getLoginNick | 获取登录昵称 |
getLoginQQ | 获取登录QQ |
getRecord | 接收消息中的语音(record) |
getFont | 转换数据到字体信息 |
getGroupFile | 获取群文件信息 |
getAnonymous | 获取匿名信息 |
getStrangerInfo | 获取陌生人信息 |
addLog | 不推荐使用本方法,请使用log开头的方法 |
logDebug | 添加日志,级别:调试,颜色:灰色 |
logError | 添加日志,级别:错误,颜色:红色 |
logFatal | 添加日志,级别:致命错误,颜色:深红 |
logInfo | 添加日志,级别:信息,颜色:黑色 |
logInfoRecv | 添加日志,级别:信息(接收),颜色:蓝色 |
logInfoSend | 添加日志,级别:信息(发送),颜色:绿色 |
logInfoSuccess | 添加日志,级别:信息(成功),颜色:紫色 |
logWarning | 添加日志,级别:警告,颜色:橙色 |
sendDiscussMsg | 发送讨论组消息 |
sendGroupMsg | 发送群消息 |
sendLike | 发送手机赞 |
sendLikeV2 | 发送手机赞 |
sendPrivateMsg | 发送私聊消息 |
setDiscussLeave | 退出讨论组 |
setFatal | 置错误提示 |
setFriendAddRequest | 处理好友添加请求 |
setGroupAddRequest | 处理群添加请求 |
setGroupAddRequestV2 | 处理群添加请求 |
setGroupAdmin | 设置群管理员 |
setGroupAnonymous | 群匿名设置 |
setGroupAnonymousBan | 禁言匿名群员 |
setGroupBan | 禁言群员 |
setGroupCard | 设置群成员名片 |
setGroupKick | 移除群员 |
setGroupLeave | 退出QQ群,慎用,此接口需要严格授权 |
setGroupSpecialTitle | 设置群成员专属头衔,需群主权限 |
setGroupWholeBan | 全群禁言 |
getLastStatus | 获取最后状态 |
CQCode 类
CQ码 ,用于辅助开发加快开发效率,以下方法均返回 CQ码 文本
方法 | 说明 |
---|---|
decode | 特殊字符,反转义 |
encode | 特殊字符,转义,避免冲突 |
anonymous | 匿名发消息(anonymous) - 仅支持群 |
analysis | 解析CQ码 |
getFaceId | 从CQ码中获取QQ表情ID,错误返回 -1 |
getFaceIds | 从CQ码中获取所有QQ表情ID |
at | 提醒某人,@某人(at) |
getAt | 从CQ码中获取at的QQ号,-1 为全体,错误为 -1000 |
getAts | 从CQ码中获取所有at的QQ号 |
contact | 发送名片分享(contact) |
emoji | emoji表情(emoji) |
getEmoji | 从CQ码中获取emoji表情ID,错误返回 -1 |
getEmojis | 从CQ码中获取所有emoji表情ID |
face | 表情QQ表情(face) |
image | 发送图片(image),需Pro版 |
imageUseGet | 使用Get方式获取图片并发送图片(image),需Pro版 |
imageUsePost | 使用Post方式获取图片并发送图片(image),需Pro版 |
getImage | 从CQ码中获取图片的路径,如 [CQ:image,file=1.jpg] 则返回 1.jpg |
getCQImage | 从CQ码中获取图片的 CQImage 对象 |
getCQImages | 从CQ码中获取所有 CQImage 对象 |
location | 发送位置分享(location) |
music | 发送音乐(music) |
record | 发送语音(record) |
getRecord | 从CQ码中获取语音的路径,如 [CQ:record,file=1.amr] 则返回 1.amr |
getRecordFile | 从CQ码中获取语音的文件对象 |
shake | 窗口抖动(shake) - 仅支持好友 |
isShake | 判断CQ码中是否包含 窗口抖动(shake) |
share | 发送链接分享(share) |
支持赞助作者
可以加入交流群赞助:427984429