Home

Awesome

JavaCQ SDK Tool

前言

本插件将酷Q扩展可以间接使用Java进行开发
本文档适用于有一定Java基础的开发者阅读
以下提供详细步骤,推荐使用maven进行开发
文档不够详细的部分可以源码,源码的注释也是非常全的
视频教学:待续~ 酷Q帖子:https://cqp.cc/t/37318

开发环境

  1. 电脑上已安装32位 JDK(JRE) 1.6以上版本
    注:酷Q未提供64位版本,所以JRE必须为32位,否则JRE无法正常加载
  2. 下载 酷QJavaCQ SDK Tool 插件 ,安装并启用工具插件
    注:启用时发生依赖DLL链接错误,多半因为JVM相关 VC库 未安装
  3. 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.iniJCQ配置文件
JCQ.cfgJCQ应用配置文件,此文件较为重要,不做解释

JCQ Tool 配置文件

JavaVM 相关

keyvalue
JrePath自定义JRE路径配置 (默认从注册表读JRE目录)
ClassPath设置JVM启动加载类路径
MinSizeJVM堆内存最小设置
MaxSizeJVM堆内存最大设置
MinPermSizeJVM非堆内存最小设置
MaxPermSizeJVM非堆内存最大设置

JVM内存限制

32位虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB 一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G,而64bit以上的处理器就不会有限制了

JavaCQ 相关

keyvalue
VersionJCQ Tool版本(清空此值,则重新生成核心文件)

JSON 文件介绍

正常插件是由以下两部分组成的

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基础,则可以转到下文的快速开发

  1. 下载 Demo ,导入到开发工具中
  2. 参考上方json介绍,根据自己需求修改json文件,文件名需和 appid 相同
  3. 查看项目中lib目录,导入其中所需jar文件
  4. 打开包中的应用主类,这里建议包到主类的全类名尽量和 appid 保持一致
    注:酷Q是事件驱动的模式,json中定义的事件,在主类中实现事件
  5. 根据自己的需求 编写,修改 所需代码,相关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;
    }
  1. 在json中,指定主类
    注:如不设置则利用appid加载,最后一个单词自动大写查找 例:appid(com.example.demo) 则加载类 com.example.Demo
  2. 然后使用开发工具进行编译打包成jar
  3. 将jar依赖lib导入放置到,全局lib或单独lib中,jcq-coolq和commons-codec,工具自带了,可以不用导入
    注:导入的依赖jar,尽量保证版本一致,避免不必要的错误
  4. 将打包好的jar和json,一起复制到 app 目录下
  5. 启动或重启酷Q即可运行插件
    注:因为JRE不能重新加载,重新加载插件需重启酷Q,重启插件无效
  6. 触发事件开始体验自己的插件吧,喵呜~

快速开发

此步骤面向一定Java基础的开发者

  1. 待续,暂未完成....

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)
emojiemoji表情(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