这部分是从 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 |
friend 、group 、discuss 、other |
消息子类型,如果是好友则是 friend ,如果从群或讨论组来的临时会话则分别是 group 、discuss |
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 |
性别,male 或 female 或 unknown |
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 |
normal 、anonymous 、notice |
消息子类型,正常消息是 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 |
性别,male 或 female 或 unknown |
age |
number (int32) |
年龄 |
area |
string |
地区 |
level |
string |
成员等级 |
role |
string |
角色,owner 或 admin 或 member |
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 |
性别,male 或 female 或 unknown |
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 |
set 、unset |
事件子类型,分别表示设置和取消管理员 |
groupId |
number (int64) |
- |
群号 |
userId |
number (int64) |
- |
管理员 QQ 号 |
字段名 |
数据类型 |
可能的值 |
说明 |
postType |
string |
notice |
上报类型 |
noticeType |
string |
groupDecrease |
通知类型 |
subType |
string |
leave 、kick 、kickMe |
事件子类型,分别表示主动退群、成员被踢、登录号被踢 |
groupId |
number (int64) |
- |
群号 |
operatorId |
number (int64) |
- |
操作者 QQ 号(如果是主动退群,则和 userId 相同) |
userId |
number (int64) |
- |
离开者 QQ 号 |
字段名 |
数据类型 |
可能的值 |
说明 |
postType |
string |
notice |
上报类型 |
noticeType |
string |
groupIncrease |
通知类型 |
subType |
string |
approve 、invite |
事件子类型,分别表示管理员已同意入群、管理员邀请入群 |
groupId |
number (int64) |
- |
群号 |
operatorId |
number (int64) |
- |
操作者 QQ 号 |
userId |
number (int64) |
- |
加入者 QQ 号 |
字段名 |
数据类型 |
可能的值 |
说明 |
postType |
string |
notice |
上报类型 |
noticeType |
string |
groupBan |
通知类型 |
subType |
string |
ban 、liftBan |
事件子类型,分别表示禁言、解除禁言 |
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 |
add 、invite |
请求子类型,分别表示加群请求、邀请登录号入群 |
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 |
enable 、disable 、connect |
事件子类型,分别表示插件启用、插件停用、WebSocket 连接成功 |
注意,目前生命周期元事件中,只有 HTTP 上报(配置了 post_url
)的情况下可以收到 enable
和 disable
,只有 WebSocket 和反向 WebSocket 可以收到 connect
。
心跳类型的元事件需要通过设置配置项 enable_heartbeat
为 true
开启,并可通过 heartbeat_interval
配置心跳间隔(单位毫秒)。
字段名 |
数据类型 |
可能的值 |
说明 |
postType |
string |
metaEvent |
上报类型 |
metaEventType |
string |
heartbeat |
元事件类型 |
status |
object |
- |
状态信息 |
interval |
number (int64) |
- |
到下次心跳的间隔,单位毫秒 |
其中 status
字段的内容和 get_status
接口的响应数据 相同。