消息 (Message)
类型定义
ts
interface Message {
id: string
channel?: Channel
user?: User
member?: Member
quote?: Message
content: string
createdAt?: number
updatedAt?: number
}
API
bot.sendMessage(channelId, content) 内置
- channelId:
string
频道 ID - content:
Fragment
要发送的内容 - 返回值:
Promise<string[]>
发送的消息 ID
向特定频道发送消息。
WARNING
只要你能够获取到会话对象,你就不应使用此 API,而应该使用 session.send()
。一些平台会将主动发送的消息同被动接收后回复的消息区分开来,甚至可能限制主动消息的发送,因此使用 session.send()
总是有更好的可靠性。
TIP
bot.sendMessage()
既可以发送群聊消息,也可以发送私聊消息。当发送私聊消息时,其与 bot.sendPrivateMessage()
的区别在于前者传入的是频道 ID,而后者传入的是用户 ID。
TIP
大多数情况下应当使用 MessageEncoder
实现消息发送功能,而不是直接实现此方法。
bot.sendPrivateMessage(userId, content, guildId?) 内置
- userId:
string
对方 ID - content:
Fragment
要发送的内容 - guildId:
string
群组 ID - 返回值:
Promise<string[]>
发送的消息 ID
向特定用户发送私聊消息。
bot.getMessage(channelId, messageId)
- channelId:
string
频道 ID - messageId:
string
消息 ID - 返回值:
Promise<Message>
获取特定消息。
bot.deleteMessage(channelId, messageId)
- channelId:
string
频道 ID - messageId:
string
消息 ID - 返回值:
Promise<void>
撤回特定消息。
bot.editMessage(channelId, messageId, content)
- channelId:
string
频道 ID - messageId:
string
消息 ID - content:
Fragment
要发送的内容 - 返回值:
Promise<void>
修改特定消息。
bot.getMessageList(channelId, next?, direction?)
- channelId:
string
频道 ID - next:
string
分页令牌,未指定时视为从最新消息向前获取 - direction:
Direction
消息获取方向,可以为'before' | 'after' | 'around'
- 返回值:
Promise<List<Message>>
消息列表
获取频道消息列表。
bot.getMessageIter(channelId) 内置
- channelId:
string
频道 ID - 返回值:
AsyncIterable<Message>
异步迭代器
获取频道消息的异步迭代器。
bot.broadcast(channels, content, delay?) 内置
- channels:
string[]
频道列表 - content:
string
要发送的内容 - delay:
number
发送消息间的延迟,默认值为config.delay.broadcast
- 返回值:
Promise<string[]>
成功发送的消息 ID 列表
向多个频道广播消息。如有失败不会抛出错误。
事件
message-created
- session:
Session
会话对象 - 触发方式: emit
- 别名:
message
收到消息时触发。
message-updated
- session:
Session
会话对象 - 触发方式: emit
消息被修改时触发。
message-deleted
- session:
Session
会话对象 - 触发方式: emit
消息被撤回时触发。