Skip to content

Latest commit

 

History

History
324 lines (250 loc) · 12.6 KB

Event.md

File metadata and controls

324 lines (250 loc) · 12.6 KB

事件上报

这部分是从 https://cqhttp.cc/docs/4.14/#/Post 抄过来改一改的

数据类型的 number (int64) 就是 Long

数据类型的 number (int32) 就是 Integer

使用方法

@Component
public class DemoPlugin extends CQPlugin {
    @Override
    public int onPrivateMessage(CoolQ cq, CQPrivateMessageEvent event) {
        // 直接在这里event.getXXX();
        // 如果有嵌套可以继续get, 比如 event.getSender().getNickname()
        Long userId = event.getUserId();
        return MESSAGE_IGNORE;
    }
}

事件列表

私聊消息

上报数据

字段名 数据类型 可能的值 说明
postType string message 上报类型
messageType string private 消息类型
subType string friendgroupdiscussother 消息子类型,如果是好友则是 friend,如果从群或讨论组来的临时会话则分别是 groupdiscuss
messageId number (int32) - 消息 ID
userId number (int64) - 发送者 QQ 号
message message - 消息内容
rawMessage string - 原始消息内容
font number (int32) - 字体
sender object - 发送人信息

其中 sender 字段的内容如下:

字段名 数据类型 说明
userId number (int64) 发送者 QQ 号
nickname string 昵称
sex string 性别,malefemaleunknown
age number (int32) 年龄

需要注意的是,sender 中的各字段是尽最大努力提供的,也就是说,不保证每个字段都一定存在,也不保证存在的字段都是完全正确的(缓存可能过期)。

示例
{
    "time": 1515204254,
    "post_type": "message",
    "message_type": "private",
    "sub_type": "friend",
    "message_id": 12,
    "user_id": 12345678,
    "message": "你好~",
    "raw_message": "你好~",
    "font": 456,
    "sender": {
        "nickname": "小不点",
        "sex": "male",
        "age": 18
    }
}

下面的其它事件同这个类似,将不再给出。

响应数据

字段名 数据类型 说明 默认情况
reply message 要回复的内容 不回复
autoEscape boolean 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 reply 字段是字符串时有效 不转义

群消息

上报数据

字段名 数据类型 可能的值 说明
postType string message 上报类型
messageType string group 消息类型
subType string normalanonymousnotice 消息子类型,正常消息是 normal,匿名消息是 anonymous,系统提示(如「管理员已禁止群内匿名聊天」)是 notice
messageId number (int32) - 消息 ID
groupId number (int64) - 群号
userId number (int64) - 发送者 QQ 号
anonymous object - 匿名信息,如果不是匿名消息则为 null
message message - 消息内容
rawMessage string - 原始消息内容
font number (int32) - 字体
sender object - 发送人信息

其中 anonymous 字段的内容如下:

字段名 数据类型 说明
id number (int64) 匿名用户 ID
name string 匿名用户名称
flag string 匿名用户 flag,在调用禁言 API 时需要传入

sender 字段的内容如下:

字段名 数据类型 说明
userId number (int64) 发送者 QQ 号
nickname string 昵称
card string 群名片/备注
sex string 性别,malefemaleunknown
age number (int32) 年龄
area string 地区
level string 成员等级
role string 角色,owneradminmember
title string 专属头衔

需要注意的是,sender 中的各字段是尽最大努力提供的,也就是说,不保证每个字段都一定存在,也不保证存在的字段都是完全正确的(缓存可能过期)。尤其对于匿名消息,此字段不具有参考价值。

响应数据

字段名 数据类型 说明 默认情况
reply message 要回复的内容 不回复
autoEscape boolean 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 reply 字段是字符串时有效 不转义
atSender boolean 是否要在回复开头 at 发送者(自动添加),发送者是匿名用户时无效 at 发送者
delete boolean 撤回该条消息 不撤回
kick boolean 把发送者踢出群组(需要登录号权限足够),不拒绝此人后续加群请求,发送者是匿名用户时无效 不踢
ban boolean 把发送者禁言 banDuration 指定时长,对匿名用户也有效 不禁言
banDuration number 禁言时长 30 分钟

讨论组消息

上报数据

字段名 数据类型 可能的值 说明
postType string message 上报类型
messageType string discuss 消息类型
messageId number (int32) - 消息 ID
discussId number (int64) - 讨论组 ID
userId number (int64) - 发送者 QQ 号
message message - 消息内容
rawMessage string - 原始消息内容
font number (int32) - 字体
sender object - 发送人信息

其中 sender 字段的内容如下:

字段名 数据类型 说明
userId number (int64) 发送者 QQ 号
nickname string 昵称
sex string 性别,malefemaleunknown
age number (int32) 年龄

响应数据

字段名 数据类型 说明 默认情况
reply message 要回复的内容 不回复
autoEscape boolean 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 reply 字段是字符串时有效 不转义
atSender boolean 是否要在回复开头 at 发送者(自动添加) at 发送者

群文件上传

注意:仅群文件上传表现为事件,好友发送文件在 酷Q 中没有独立的事件,而是直接表现为好友消息,请注意在编写业务逻辑时进行判断。

上报数据

字段名 数据类型 可能的值 说明
postType string notice 上报类型
noticeType string groupUpload 通知类型
groupId number (int64) - 群号
userId number (int64) - 发送者 QQ 号
file object - 文件信息

其中 file 字段的内容如下:

字段名 数据类型 说明
id string 文件 ID
name string 文件名
size number (int64) 文件大小(字节数)
busid number (int64) busid(目前不清楚有什么作用)

群管理员变动

上报数据

字段名 数据类型 可能的值 说明
postType string notice 上报类型
noticeType string groupAdmin 通知类型
subType string setunset 事件子类型,分别表示设置和取消管理员
groupId number (int64) - 群号
userId number (int64) - 管理员 QQ 号

群成员减少

上报数据

字段名 数据类型 可能的值 说明
postType string notice 上报类型
noticeType string groupDecrease 通知类型
subType string leavekickkickMe 事件子类型,分别表示主动退群、成员被踢、登录号被踢
groupId number (int64) - 群号
operatorId number (int64) - 操作者 QQ 号(如果是主动退群,则和 userId 相同)
userId number (int64) - 离开者 QQ 号

群成员增加

上报数据

字段名 数据类型 可能的值 说明
postType string notice 上报类型
noticeType string groupIncrease 通知类型
subType string approveinvite 事件子类型,分别表示管理员已同意入群、管理员邀请入群
groupId number (int64) - 群号
operatorId number (int64) - 操作者 QQ 号
userId number (int64) - 加入者 QQ 号

群禁言

上报数据

字段名 数据类型 可能的值 说明
postType string notice 上报类型
noticeType string groupBan 通知类型
subType string banliftBan 事件子类型,分别表示禁言、解除禁言
groupId number (int64) - 群号
operatorId number (int64) - 操作者 QQ 号
userId number (int64) - 被禁言 QQ 号
duration number (int64) - 禁言时长,单位秒

好友添加

上报数据

字段名 数据类型 可能的值 说明
postType string notice 上报类型
noticeType string friendAdd 通知类型
userId number (int64) - 新添加好友 QQ 号

加好友请求

上报数据

字段名 数据类型 可能的值 说明
postType string request 上报类型
requestType string friend 请求类型
userId number (int64) - 发送请求的 QQ 号
comment string - 验证信息(可能包含 CQ 码,特殊字符被转义)
flag string - 请求 flag,在调用处理请求的 API 时需要传入

响应数据

字段名 数据类型 说明 默认情况
approve boolean 是否同意请求 不处理
remark string 添加后的好友备注(仅在同意时有效) 无备注

加群请求/邀请

上报数据

字段名 数据类型 可能的值 说明
postType string request 上报类型
requestType string group 请求类型
subType string addinvite 请求子类型,分别表示加群请求、邀请登录号入群
groupId number (int64) - 群号
userId number (int64) - 发送请求的 QQ 号
comment string - 验证信息(可能包含 CQ 码,特殊字符被转义)
flag string - 请求 flag,在调用处理请求的 API 时需要传入

响应数据

字段名 数据类型 说明 默认情况
approve boolean 是否同意请求/邀请 不处理
reason string 拒绝理由(仅在拒绝时有效) 无理由

元事件

上面的事件列表是 酷Q 直接支持的、QQ 机器人真实接收到的事件,除了这些,插件自己还会产生一类事件,这里称之为「元事件」,例如生命周期事件、心跳事件等,这类事件与插件(以及 酷Q)本身的运行状态有关,而与 QQ 无关。

元事件的上报方式和普通事件完全一样,post_type 字段为 meta_event

元事件列表

生命周期

字段名 数据类型 可能的值 说明
postType string metaEvent 上报类型
metaEventType string lifecycle 元事件类型
subType string enabledisableconnect 事件子类型,分别表示插件启用、插件停用、WebSocket 连接成功

注意,目前生命周期元事件中,只有 HTTP 上报(配置了 post_url )的情况下可以收到 enabledisable,只有 WebSocket 和反向 WebSocket 可以收到 connect

心跳

心跳类型的元事件需要通过设置配置项 enable_heartbeattrue 开启,并可通过 heartbeat_interval 配置心跳间隔(单位毫秒)。

字段名 数据类型 可能的值 说明
postType string metaEvent 上报类型
metaEventType string heartbeat 元事件类型
status object - 状态信息
interval number (int64) - 到下次心跳的间隔,单位毫秒

其中 status 字段的内容和 get_status 接口的响应数据 相同。