Skip to content

消息段 ​

使用 { "type": "…", "data": { … } } 数组表示消息。不支持的段会报错,不会静默忽略。

类型群聊好友 / 临时私聊data
text支持支持text: string
at支持不支持user_id: 正整数或字符串 all
image支持支持file_id: string
voice支持支持file_id: string
video支持支持file_id: string
face支持支持按 kind 指定表情字段
ark支持支持卡片结构,通常使用卡片接口返回值
reply支持支持reply_reference_id: integer;兼容 message_id: integer

文字与提及 ​

json
[
  { "type": "text", "data": { "text": "你好" } },
  { "type": "at", "data": { "user_id": 234567890 } }
]

全体成员使用 {"type":"at","data":{"user_id":"all"}},仍受 QQ 权限和次数限制。旧字段 uin、uid 不再接受。

图片、语音与视频 ​

先调用对应群或好友上传接口,再使用它返回的消息段或 file_id:

json
[{ "type": "image", "data": { "file_id": "上传结果中的 file_id" } }]

媒体绑定当前账号、协议和目标会话。临时会话上传使用 upload_friend_image、upload_friend_voice、upload_friend_video,并传入与发送时相同的 group_id、user_id。不同账号、协议、好友或群的媒体引用不能混用,退出账号后需重新上传。

群视频必须单独发送。好友和临时会话的语音、视频必须作为唯一消息段。文件来源受管理员的媒体目录权限约束,也可使用 file_transfer 的完成引用;不能读取框架凭据、数据库或任意系统文件。

表情 ​

json
[{ "type": "face", "data": { "kind": "qq_face", "face_id": "190" } }]

超级表情使用 kind=super_face:type=33 需要 category_id=1、package_id、text;type=37 需要非零 category_id、face_id、package_id、text。未知 kind/type 会拒绝。

引用回复 ​

json
[
  { "type": "reply", "data": { "message_id": 123 } },
  { "type": "text", "data": { "text": "已收到" } }
]

发送引用段中的 message_id 来自事件顶层、发送结果或历史读取,是框架缓存编号,不是 msg_seq,也不是接收引用段内部的同名字段。引用必须属于同一账号、协议及会话;一条消息只能包含一个引用并需要正文。缓存过期时会拒绝。

接收消息段 ​

接收到的 reply.data 保留旧字段,并用两个明确字段区分上游标识和可发送的引用编号:

字段类型说明
message_idstring兼容旧接收格式的 QQ MsgUID 十进制字符串;未提供时为空字符串,不能作为发送引用编号
source_msg_uidstring与上面的原始 MsgUID 相同,可能超出 JavaScript 安全整数范围,请始终保留字符串
reply_reference_idinteger 或 null被引用原文的框架缓存编号;只有原文仍在本账号、协议及会话的缓存中时才提供,否则为 null

回复当前收到的整条消息时,使用事件顶层 message_id。若要引用该消息中引用的更早原文,使用非 null 的 reply_reference_id:

json
[
  { "type": "reply", "data": { "reply_reference_id": 123 } },
  { "type": "text", "data": { "text": "回复这段原文" } }
]

发送时优先使用 reply_reference_id;未提供或为 null 时,仍兼容旧的数字型 message_id。即使同时携带原始 UID 字符串,也只能依据有效的本地引用编号发送。source_msg_uid、接收引用段中的字符串 message_id、msg_seq 都不能代替该编号;缺失或失效时不能自行猜测或拼造。

临时会话的上游推送可能没有群号,这时不会生成可误用的引用编号。只有群身份完整的临时消息才可引用回复。

合并转发 ​

upload_group_forward_msg 与 upload_friend_forward_msg 支持 1–200 个节点。每项使用 user_id、nickname、time、message,或提供 source_message_id。跨会话媒体须先重新上传到目标会话。send=false 仅上传;send=true 会发送转发卡片并等待真实消息确认。

萌卡 · 自托管 QQ 机器人框架