事件

事件, 也就是上报.

参考: go-cqhttp 帮助中心: 参考, go-cqhttp 帮助中心: 数据结构

关于下面 API 中 快速操作 的使用方式, 请参考: go-cqhttp 参考: 快速操作

本页面中, 数据类型是使用 golang 数据类型来表示的.

通用数据

下面定义了上报数据所包含的通用数据, 这些可能在你进行面向对象封装并处理继承关系时有用

所有上报

所有上报都将包含下面的有效通用数据

字段名数据类型可能的值说明
timeint64-事件发生的unix时间戳
self_idint64-收到事件的机器人的 QQ 号
post_typestring 参考message, message_sent, request, notice, meta_event表示该上报的类型, 消息, 消息发送, 请求, 通知, 或元事件

: messagemessage_sent的数据是一致的, 区别仅在于后者是bot发出的消息. 默认配置下不会上报message_sent, 仅在配置messagereport-self-message项为true时上报

消息上报

post_typemessage message_sent 的上报将会有以下有效通用数据

字段名数据类型可能的值说明
message_typestring 参考private, group消息类型
sub_typestring 参考group, public表示消息的子类型
message_idint32-消息 ID
user_idint64-发送者 QQ 号
messagemessage 参考-一个消息链
raw_messagestring 参考-CQ 码格式的消息
fontint0字体
senderobject 参考-发送者信息

请求上报

post_type 为 request 的上报会有以下有效通用数据

字段名数据类型可能的值说明
request_typestring 参考-请求类型

通知上报

post_type 为 notice 的上报会有以下有效通用数据

字段名数据类型可能的值说明
notice_typestring 参考-通知类型

元事件上报

post_type 为 meta_event 的上报会有以下有效数据

字段名数据类型可能的值说明
meta_event_typestring 参考-元数据类型

数据定义

下面定义了各种上报的数据字段, 标注 * 号的字段表示它属于通用数据

message 数据类型表示一个消息链, 关于消息链, 参考: go-cqhttp 帮助中心: 参考

↓ 消息上报 ↓

下面的提到的上报, 都是消息上报. 消息上报的 post_type 值为 message, 其通用数据如下:

字段名数据类型可能的值说明
message_typestring 参考private, group消息类型
sub_typestring 参考group, public表示消息的子类型
message_idint32-消息 ID
user_idint64-发送者 QQ 号
messagemessage-一个消息链
raw_messagestring 参考-CQ 码格式的消息
fontint0字体
senderobject 参考-发送者信息

私聊消息

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考message上报类型
* message_typestringprivate消息类型
* sub_typestring 参考friendgroupgroup_selfother消息子类型, 如果是好友则是 friend, 如果是群临时会话则是 group, 如果是在群中自身发送则是 group_self
* message_idint32-消息 ID
* user_idint64-发送者 QQ 号
* messagemessage 参考-消息内容
* raw_messagestring 参考-原始消息内容
* fontint32-字体
* senderobject 参考-发送人信息
target_idint64-接收者 QQ 号
temp_sourceint-临时会话来源

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

快速操作

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

群消息

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考message上报类型
* message_typestringgroup消息类型
* sub_typestringnormalanonymousnotice消息子类型, 正常消息是 normal, 匿名消息是 anonymous, 系统提示 ( 如「管理员已禁止群内匿名聊天」 ) 是 notice
* message_idint32-消息 ID
* user_idint64-发送者 QQ 号
* messagemessage 参考-消息内容
* raw_messagestring-原始消息内容
* fontint32-字体
* senderobject 参考-发送人信息
group_idint64-群号
anonymousobject-匿名信息, 如果不是匿名消息则为 null

注意

anonymous 字段从 go-cqhttp-v0.9.36 开始支持

其中 anonymous 字段的内容如下:

字段名数据类型说明
idint64匿名用户 ID
namestring匿名用户名称
flagstring匿名用户 flag, 在调用禁言 API 时需要传入

sender 字段的内容如下:

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

快速操作

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

↓ 通知上报 ↓

下面的提到的上报, 都是通知上报. 消息上报的 post_type 值为 notice, 通用数据如下:

字段名数据类型可能的值说明
notice_typestring 参考-通知类型

私聊消息撤回

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考friend_recall通知类型
user_idint64好友 QQ 号
message_idint64被撤回的消息 ID

群消息撤回

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_recall通知类型
group_idint64群号
user_idint64消息发送者 QQ 号
operator_idint64操作者 QQ 号
message_idint64被撤回的消息 ID

群成员增加

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_increase通知类型
sub_typestringapproveinvite事件子类型, 分别表示管理员已同意入群、管理员邀请入群
group_idint64-群号
operator_idint64-操作者 QQ 号
user_idint64-加入者 QQ 号

群成员减少

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_decrease通知类型
sub_typestringleavekickkick_me事件子类型, 分别表示主动退群、成员被踢、登录号被踢
group_idint64-群号
operator_idint64-操作者 QQ 号 ( 如果是主动退群, 则和 user_id 相同 )
user_idint64-离开者 QQ 号

群管理员变动

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_admin通知类型
sub_typestringsetunset事件子类型, 分别表示设置和取消管理员
group_idint64-群号
user_idint64-管理员 QQ 号

群文件上传

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_upload通知类型
group_idint64-群号
user_idint64-发送者 QQ 号
fileobject-文件信息

其中 file 字段的内容如下:

字段名数据类型说明
idstring文件 ID
namestring文件名
sizeint64文件大小 ( 字节数 )
busidint64busid ( 目前不清楚有什么作用 )

群禁言

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_ban通知类型
sub_typestringbanlift_ban事件子类型, 分别表示禁言、解除禁言
group_idint64-群号
operator_idint64-操作者 QQ 号
user_idint64-被禁言 QQ 号 (为全员禁言时为0)
durationint64-禁言时长, 单位秒 (为全员禁言时为-1)

好友添加

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考friend_add通知类型
user_idint64-新添加好友 QQ 号

好友戳一戳(双击头像)

事件数据

字段名数据类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考notify消息类型
sub_typestringpoke提示类型
sender_idint64发送者 QQ 号
user_idint64发送者 QQ 号
target_idint64被戳者 QQ 号

群内戳一戳(双击头像)

注意

此事件无法在手表协议上触发

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考notify消息类型
sub_typestringpoke提示类型
group_idint64群号
user_idint64发送者 QQ 号
target_idint64被戳者 QQ 号

群红包运气王提示

注意

此事件无法在手表协议上触发

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考notify消息类型
sub_typestringlucky_king提示类型
group_idint64群号
user_idint64红包发送者id
target_idint64运气王id

群成员荣誉变更提示

注意

此事件无法在手表协议上触发

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考notify消息类型
sub_typestringhonor提示类型
group_idint64群号
user_idint64成员id
honor_typestringtalkative:龙王 performer:群聊之火 emotion:快乐源泉荣誉类型

群成员头衔变更

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考notify消息类型
sub_typestringtitle提示类型
group_idint64群号
user_idint64变更头衔的用户 QQ 号
titlestring获得的新头衔

群成员名片更新

注意

此事件不保证时效性, 仅在收到消息时校验卡片

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考group_card消息类型
group_idint64群号
user_idint64成员id
card_newstring新名片
card_oldstring旧名片

PS

当名片为空时 card_xx 字段为空字符串, 并不是昵称

接收到离线文件

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考offline_file消息类型
user_idint64发送者id
fileobject文件数据

file object

字段类型可能的值说明
namestring文件名
sizeint64文件大小
urlstring下载链接

其他客户端在线状态变更

事件数据

字段类型可能的值说明
* post_typestring 参考notice上报类型
* notice_typestring 参考client_status消息类型
clientDevice*客户端信息
onlinebool当前是否在线

精华消息变更

事件数据

字段类型可能的值说明
* timeint64时间
* self_idint64BOT QQ 号
* post_typestring 参考notice上报类型
* notice_typestring 参考essence消息类型
sub_typestringadd,delete添加为add,移出为delete
group_idint64群号
sender_idint64消息发送者ID
operator_idint64操作者ID
message_idint32消息ID

↓ 请求上报 ↓

下面的提到的上报, 都是请求上报. 消息上报的 post_type 值为 request, 通用数据如下:

字段名数据类型可能的值说明
request_typestring 参考-请求类型

加好友请求

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考request上报类型
* request_typestring 参考friend请求类型
user_idint64-发送请求的 QQ 号
commentstring-验证信息
flagstring-请求 flag, 在调用处理请求的 API 时需要传入

快速操作

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

加群请求/邀请

事件数据

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考request上报类型
* request_typestring 参考group请求类型
sub_typestringaddinvite请求子类型, 分别表示加群请求、邀请登录号入群
group_idint64-群号
user_idint64-发送请求的 QQ 号
commentstring-验证信息
flagstring-请求 flag, 在调用处理请求的 API 时需要传入

快速操作

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

↓ 元事件上报 ↓

下面的提到的上报, 都是元事件上报. 消息上报的 post_type 值为 meta_event, 通用数据如下:

字段名数据类型可能的值说明
meta_event_typestring 参考-元数据类型

心跳包

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考meta_event上报类型
* meta_event_typestring 参考heartbeat元事件类型
statusStatus 参考-应用程序状态
intervalint64-距离上一次心跳包的时间(单位是毫秒)

生命周期

字段名数据类型可能的值说明
* timeint64-事件发生的时间戳
* self_idint64-收到事件的机器人 QQ 号
* post_typestring 参考meta_event上报类型
* meta_event_typestring 参考lifecycle元事件类型
sub_typestringenable, disable, connect子类型