# 发送消息
::: danger 注意
主动推送能力于 2025 年 4 月 21 日起不再提供,接口调用时会收到错误信息。
公告信息:[【关于QQ机器人消息推送策略调整通知】](https://q.qq.com/miniapp#/news/detail/974e66a946a5e54c441ca983585a7aab)
:::
::: tip 说明
发送消息分为,主动推送与被动回复,主动消息和被动消息在不同的场景下,发送的频次有不同的规则。
发送消息的接口有`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 秒,避免出现实际消息已发送成功,但没接收到同步的结果返回。
## 单聊
::: tip 说明
单独发动消息给用户。
:::
- **请求**
| 基本 |
| 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](../type/markdown.md#数据结构与协议)对象 |
| keyboard | object | 否 | [Keyboard](../trans/msg-btn.md#数据结构与协议)对象 |
| ark | object | 否 | [Ark](../type/ark.md#数据结构与协议)对象 |
| media | object | 否 | [富媒体单聊](./rich-media.md#用于单聊)的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 | 富媒体资源拉取失败,请重试 |
## 群聊
::: tip 说明
发动消息到群。
:::
- **请求**
| 基本 |
| 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](../type/markdown.md#数据结构与协议)对象 |
| keyboard | object | 否 | [Keyboard](../trans/msg-btn.md#数据结构与协议)对象 |
| media | object | 否 | [富媒体群聊](./rich-media.md#用于群聊)的file_info |
| ark | object | 否 | [Ark](../type/ark.md#数据结构与协议)对象 |
| 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 | 富媒体资源拉取失败,请重试 |
## 文字子频道
::: tip 说明
发动消息到文字子频道。
:::
- **请求**
| 基本 |
| HTTP URL |
/channels/{channel_id}/messages |
| HTTP Method |
POST |
- **详细文档**
[发送消息|QQ机器人文档](../post_messages.md)
## 频道私信
发动消息到频道私信,请求参数与文字子频道发送消息参数一致
- **请求**
| 基本 |
| HTTP URL |
/dms/{guild_id}/messages |
| HTTP Method |
POST |
- **详细文档**
[发送私信|QQ机器人文档](../dms/post_dms_messages.md)