发送消息

向指定子频道推送消息。

::: warning 注意

  • 要求操作人在该子频道具有发送消息的权限。
  • 主动推送消息,默认每天往每个频道可推送的消息数是 20 条,超过会被限制。
  • 主动推送消息在每个频道中,每天可以往 2 个子频道推送消息,超过后会被限制。
  • 不论主动消息还是被动消息,在一个子频道中,每 1s 只能发送 5 条消息。
  • 被动回复消息有效期为 5 分钟,超时会报错。
  • 发送消息接口要求机器人接口需要链接到 websocket gateway上保持在线状态。
  • 有关主动消息审核,可以通过 Intents 中审核事件 MESSAGE_AUDIT 返回 MessageAudited 对象获取结果。

:::

使用示例

  1. token := token.BotToken("appid", "token")
  2. api := botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)
  3. ctx := context.Background()
  4. message, err := api.PostMessage(ctx, channelId, &dto.MessageToCreate{
  5. MsgID: msgId, //如果未空则表示主动消息
  6. Content: "hello world",
  7. })
  8. if err != nil {
  9. log.Fatalln("调用 PostMessage 接口失败, err = ", err)
  10. }

参数说明

参数 必填 类型 说明
channelId string 子频道 ID
MessageToCreate MessageToCreate 消息体结构

MessageToCreate

字段名 类型 描述
Content string 消息内容,文本内容,支持内嵌格式
Embed Embed embed 消息,一种特殊的 ark
Ark Ark ark 消息
Image string 图片 url 地址
MsgID string 要回复的消息 id。带了 msg_id 视为被动回复消息,否则视为主动推送消息
MessageReference MessageReference 引用消息对象

contentembedarkimage至少需要有一个字段,否则无法下发消息。

被动回复消息

::: warning 注意

被动消息需是用户@机器人的消息,否则将会报错。

:::

Embed

详见消息内嵌格式

Ark

详见发送模板消息

MessageReference

详情见发送引用消息

返回说明

主动消息都需要审核,返回结果如下:

  1. {
  2. "code": 304023,
  3. "message": "push message is waiting for audit now"
  4. }

若为私域机器人可正常返回Message 对象。

Message

字段名 类型 描述
ID string 消息 ID
ChannelID string 子频道 ID
GuildID string 频道 ID
Content string 消息内容
Timestamp Timestamp 消息创建时间,是个 iISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”
Author User 消息创建者
Member Member 消息创建者的 member 信息

User

字段名 类型 描述
ID string 用户 ID
Username string 用户名
Avatar string 用户头像地址
Bot bool 是否是机器人
UnionOpenID string 特殊关联应用的 openid,需要特殊申请并配置后才会返回。如需申请,请联系平台运营人员。
UnionUserAccount string 机器人关联的互联应用的用户信息,与 union_openid 关联的应用是同一个。如需申请,请联系平台运营人员。

Member

字段名 类型 描述
GuildID string 频道ID
User User 用户基础信息,来自 QQ 资料,只有成员相关接口中会填充此信息
Nick string 用户在频道内的昵称
Roles string[] 用户在频道内的身份组 ID,默认值可参考DefaultRoleIDs
JoinedAt Timestamp 用户加入频道的时间,是个 ISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”

DefaultRoleIDs

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

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

Timestamp

字段名 类型 描述
Timestamp string 时间

返回示例

以发送文本内容hello world为例,下面是返回示例:

data:

  1. {
  2. "id": "101234567890abcdef",
  3. "channel_id": "10001",
  4. "guild_id": "6400000001",
  5. "content": "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. "embeds": [{}],
  16. "pinned": false,
  17. "type": 0,
  18. "flags": 0
  19. }