# 发送消息
说明
发送消息分为,主动推送与被动回复,主动消息和被动消息在不同的场景下,发送的频次有不同的规则。
发送消息的接口有4
个场景:QQ单聊、QQ群聊、文字子频道、频道私信
主动消息与被动消息说明: QQ 用户可以在 QQ 客户端主动设置是否接收机器人发送的主动消息,如果设置了关闭,主动消息一律发送失败。
- 单聊
- 主动消息每月
4 条
,超额会发送失败。(例如:给相同用户每月最多发 4 条) - 被动消息(回复类)有效时间为
60 分钟
,每个消息最多回复5 次
,超时或超频会发送(回复)失败;
- 主动消息每月
- 群聊
- 主动消息每月
4 条
,超额会发送失败。(例如:给相同群每月最多发 4 条) - 被动消息(回复类)有效时间为
5 分钟
,每个消息最多回复5 次
,超时或超频会发送(回复)失败;
- 主动消息每月
- 文字子频道
- 主动消息在频道主或管理设置了情况下,按设置的数量进行限频。在未设置的情况遵循如下限制:
- 主动推送消息,默认每天往每个子频道可推送的消息数是
20
条,超过会被限制。 - 主动推送消息在每个频道中,每天可以往
2
个子频道推送消息。超过后会被限制。
- 主动推送消息,默认每天往每个子频道可推送的消息数是
- 不论主动消息还是被动消息,在一个子频道中,
每秒
最多可发送5 条
消息。 - 被动回复消息有效期为
5 分钟
,超时会发送失败。 - 发送消息接口要求机器人接口需要连接到
WebSocket
上保持在线状态 - 有关主动消息审核,可以通过
事件订阅 Intents
中审核事件MESSAGE_AUDIT
返回MessageAudited
对象获取结果。
- 主动消息在频道主或管理设置了情况下,按设置的数量进行限频。在未设置的情况遵循如下限制:
- 频道私信
- 私信场景下,每个机器人每天可以对一个用户发
2 条
主动消息。 - 私信场景下,每个机器人每天累计可以发
200 条
主动消息。 - 被动回复消息有效期为
5 分钟
,超时会发送失败。
- 私信场景下,每个机器人每天可以对一个用户发
发动的消息内容包含 URL 的说明:
如开发者需要在消息内容发送含有 url 信息的消息,请现在 q.qq.com 后台-开发设置-消息URL配置 预先配置,否则会发送失败。 调用发消息 http 接口的 timeout 建议设置最低为 5 秒,避免出现实际消息已发送成功,但没接收到同步的结果返回。
# 单聊
说明
单独发动消息给用户。
- 请求
基本 HTTP URL /v2/users/{openid}/messages HTTP Method POST - 路径参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
openid | string | 是 | QQ 用户的 openid,可在各类事件中获得。 |
- 请求参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
content | string | 否 | 文本内容 |
msg_type | int | 是 | 消息类型:0 是文本,2 是 markdown, 3 ark,4 embed,7 media 富媒体 |
markdown | object | 否 | Markdown对象 |
keyboard | object | 否 | Keyboard对象 |
ark | object | 否 | Ark对象 |
media | object | 否 | 富媒体单聊的file_info |
message_reference | object | 否 | 【暂未支持】消息引用 |
event_id | string | 否 | 前置收到的事件 ID,用于发送被动消息,支持事件:"INTERACTION_CREATE"、"C2C_MSG_RECEIVE"、"FRIEND_ADD" |
msg_id | string | 否 | 前置收到的用户发送过来的消息 ID,用于发送被动(回复)消息 |
msg_seq | int | 否 | 回复消息的序号,与 msg_id 联合使用,避免相同消息id回复重复发送,不填默认是1。相同的 msg_id + msg_seq 重复发送会失败。 |
- 返回参数
属性 | 类型 | 说明 |
---|---|---|
id | string | 消息唯一ID |
timestamp | int | 发送时间 |
- 常见错误码
- 当 msg_type = 7 时,content 字段需要填入一个值,譬如一个空格 “ ”,后续版本会修复该问题。、
code | message | 说明 |
---|---|---|
22009 | msg limit exceed | 消息发送超频 |
304082 | upload media info fail | 富媒体资源拉取失败,请重试 |
304083 | convert media info fail | 富媒体资源拉取失败,请重试 |
# 群聊
说明
发动消息到群。
- 请求
基本 HTTP URL /v2/groups/{group_openid}/messages HTTP Method POST - 路径参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
group_openid | string | 是 | 群聊的 openid |
- 请求参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
content | string | 是 | 文本内容 |
msg_type | int | 是 | 消息类型: 0 文本,2 是 markdown,3 ark 消息,4 embed,7 media 富媒体 |
markdown | object | 否 | Markdown对象 |
keyboard | object | 否 | Keyboard对象 |
media | object | 否 | 富媒体群聊的file_info |
ark | object | 否 | Ark对象 |
message_reference | object | 否 | 【暂未支持】消息引用 |
event_id | string | 否 | 前置收到的事件 ID,用于发送被动消息,支持事件:"INTERACTION_CREATE"、"GROUP_ADD_ROBOT"、"GROUP_MSG_RECEIVE" |
msg_id | string | 否 | 前置收到的用户发送过来的消息 ID,用于发送被动消息(回复) |
msg_seq | int | 否 | 回复消息的序号,与 msg_id 联合使用,避免相同消息id回复重复发送,不填默认是 1。相同的 msg_id + msg_seq 重复发送会失败。 |
- 返回参数
属性 | 类型 | 说明 |
---|---|---|
id | string | 消息唯一 ID |
timestamp | int | 发送时间 |
- 常见错误码
- 当 msg_type = 7 时,content 字段需要填入一个值,譬如一个空格 “ ”,后续版本会修复该问题。
code | message | 说明 |
---|---|---|
22009 | msg limit exceed | 消息发送超频 |
304082 | upload media info fail | 富媒体资源拉取失败,请重试 |
304083 | convert media info fail | 富媒体资源拉取失败,请重试 |
# 文字子频道
说明
发动消息到文字子频道。
- 请求
基本 HTTP URL /channels/{channel_id}/messages HTTP Method POST - 详细文档 发送消息|QQ机器人文档
# 频道私信
发动消息到频道私信,请求参数与文字子频道发送消息参数一致
- 请求
基本 HTTP URL /dms/{guild_id}/messages HTTP Method POST - 详细文档 发送私信|QQ机器人文档