发送模板消息

::: warning 注意

  • 要求操作人在该子频道具有发送消息模板消息 的权限。
  • 调用前需要先申请消息模板,这一步会得到一个模板 id,在请求时填在 ark.template_id 上
  • 发送成功之后,会触发一个创建消息的事件。
  • 可用模板参考可用模板
  • 如果发送的消息中包含链接(网页、图片、视频链接等),需要提前在机器人管理端报备,操作流程:操作路径为:“开发设置” -> “消息 URL 配置”

:::

使用示例

需要关注ark字段的使用。

  1. import qqbot
  2. token = qqbot.Token({appid}, {token})
  3. msg_api = qqbot.MessageAPI(token, False)
  4. message = msg_api.post_message(channel_id, message_send_request)

参数说明

参数 必填 类型 说明
channelID string 子频道 ID
message_send_request MessageSendRequest 消息体结构

MessageSendRequest

字段名 类型 描述
content string 消息内容,文本内容,支持内嵌格式
embed MessageEmbed embed 消息,一种特殊的 ark
ark MessageArk ark 消息
image string 图片 url 地址
msg_id string 要回复的消息 id。带了 msg_id 视为被动回复消息,否则视为主动推送消息

MessageEmbed

字段名 类型 描述
title string 标题
description string 描述
prompt string 消息弹窗内容
timestamp string 消息创建时间
fields MessageEmbedField[] 消息创建时间,是个 ISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”

MessageEmbedField

字段名 类型 描述
name string 字段名
value string 字段值

MessageArk

字段名 类型 描述
template_id number ark 模板 id(需要先申请)
kv MessageAkrKv[] kv 值列表

MessageArkKv

字段名 类型 描述
key string key
value string value
obj MessageArkObj[] ark obj 类型的列表

MessageArkObj

字段名 类型 描述
obj_kv MessageArkObjKv[] ark objkv 列表

MessageArkObjKv

字段名 类型 描述
key string key
value string value

参数示例

假设模板如下,其中#META_LIST#类型为数组、#META_URL#类型为 URL、其他为文本。

  1. {
  2. "app": "com.tencent.miniapp",
  3. "view": "detail",
  4. "ver": "0.0.0.1",
  5. "desc": "#DESC#",
  6. "prompt": "[QQ小程序]#PROMPT#",
  7. "meta": {
  8. "detail": {
  9. "title": "#TITLE#",
  10. "desc": "#META_DESC#",
  11. "url": "#META_URL#",
  12. "list": "#META_LIST#"
  13. }
  14. }
  15. }

请求体中的 ark 内容为

  1. {
  2. "ark": {
  3. "template_id": 1,
  4. "kv": [
  5. {
  6. "key": "#DESC#",
  7. "value": "机器人订阅消息"
  8. },
  9. {
  10. "key": "#PROMPT#",
  11. "value": "XX机器人"
  12. },
  13. {
  14. "key": "#TITLE#",
  15. "value": "XX机器人消息"
  16. },
  17. {
  18. "key": "#META_URL#",
  19. "value": "http://domain.com/"
  20. },
  21. {
  22. "key": "#META_LIST#",
  23. "obj": [
  24. {
  25. "obj_kv": [
  26. {
  27. "key": "name",
  28. "value": "aaa"
  29. },
  30. {
  31. "key": "age",
  32. "value": "3"
  33. }
  34. ]
  35. },
  36. {
  37. "obj_kv": [
  38. {
  39. "key": "name",
  40. "value": "bbb"
  41. },
  42. {
  43. "key": "age",
  44. "value": "4"
  45. }
  46. ]
  47. }
  48. ]
  49. }
  50. ]
  51. }
  52. }

则实际下发的 json 为

  1. {
  2. "app": "com.tencent.miniapp",
  3. "view": "detail",
  4. "ver": "0.0.0.1",
  5. "desc": "机器人订阅消息",
  6. "prompt": "[QQ小程序]XX机器人",
  7. "meta": {
  8. "detail": {
  9. "title": "XX机器人消息",
  10. "url": "http://domain.com/",
  11. "list": [
  12. { "name": "aaa", "age": "3" },
  13. { "name": "bbb", "age": "4" }
  14. ]
  15. }
  16. }
  17. }

返回说明

返回Message 对象。

Message

字段名 类型 描述
id string 消息 id
channel_id string 子频道 ID
guild_id string 频道 ID
content string 消息内容
timestamp string 消息创建时间,是个 iISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”
edited_timestamp string 消息编辑时间,是个 iISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”
mention_everyone boolean 是否是@全员消息
author User 消息创建者
member Member 消息创建者的 member 信息

User

字段名 类型 描述
id string 用户 ID
username string 用户名
bot boolean 是否是机器人

Member

字段名 类型 描述
roles string[] 用户在频道内的身份组 ID,默认值可参考DefaultRoleIDs
joined_at string 用户加入频道的时间,是个 ISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”

DefaultRoleIDs

系统默认生成下列身份组 ID。

身份组 ID 默认值 描述
1 全体成员
2 管理员
4 群主/创建者
5 子频道管理员

返回示例

  1. {
  2. "id": "101234567890abcdef",
  3. "channel_id": "10001",
  4. "guild_id": "6400000001",
  5. "content": "<@!1234>hello world",
  6. "timestamp": "2021-05-13T14:45:45+08:00",
  7. "tts": false,
  8. "mention_everyone": false,
  9. "author": {
  10. "id": "12345",
  11. "username": "abc",
  12. "avatar": "",
  13. "bot": true
  14. },
  15. "pinned": false,
  16. "type": 0,
  17. "flags": 0
  18. }