跳到主要内容
版本:3.3.0

消息事件

一些与 消息 相关的事件类型。

消息事件通常会配合着 对象事件 进行实现。

MessageEvent

api.message RemoteMessageContainer ReplySupport

MessageEvent 是所有 消息事件 的基础父类型。

属性

MessageEvent 提供了获取下述属性的能力:

属性类型描述
sourceObjectives本次消息事件发生的主要源。
messageContentRemoteMessageContent本次消息事件所收到的消息。
省略

如果上述属性定义在后续事件中没有发生变化,则将不再赘述。

val source: Objectives = event.source()
val messageContent: ReceivedMessageContent = event.messageContent

source 的值可能会随着当前事件的具体含义范围而变化。具体细节可参考后续的其他事件。

ReplySupport

MessageEvent 继承 ReplySupport,对于消息事件来讲它总是 期望 实现者拥有 消息回复(reply) 的能力。

val message: Message = ...
val receipt: MessageReceipt = event.reply(message)

DeleteSupport

MessageEvent 中的 MessageContent 实现 DeleteSupport。在预期内且权限允许的情况下,代表其能够对此消息进行 删除 。 通常这种行为可以理解为 撤回

并非其本身

事件类型本身并不实现 DeleteSupport

val messageContent: MessageContent = event.messageContent

val isDeleted: Boolean = messageContent.delete()

ContactMessageEvent

api.contact_message MessageEvent UserEvent

ContactMessageEvent 中,属性 usersource 返回类型一致,为 User 类型。

val user: User = event.user()
// same as
val source: User = event.source()

FriendMessageEvent

api.friend_message ContactMessageEvent FriendEvent
属性类型描述
friendFriend本次消息事件中消息的发送者对象。
user同上同上
source同上同上
val friend: Friend = event.friend()
val user: Friend = event.user()
val source: Friend = event.source()

ChatRoomMessageEvent

api.chat_room_message MessageEvent OrganizationEvent MessageContainer

ChatRoomMessageEvent 中,属性 sourceChatRoom 类型。

属性类型描述
authorMember本次消息事件中消息的发送者对象。
sourceChatRoom本次消息事件发生所在的聊天室。
organization同上同上

在 Kotlin 中,ChatRoomMessageEvent 为属性 author 提供了 in/use 扩展函数:

event.inAuthor { // this: Author
// ...
}
event.useAuthor { author: Author ->
// ...
}

GroupMessageEvent

api.group_message ChatRoomMessageEvent GroupEvent

一个来自于 的消息事件。

属性类型描述
sourceGroup此事件所来源的群。
group同上同上
val source: Group = event.source()
val group: Group = event.group()

ChannelMessageEvent

api.channel_message ChatRoomMessageEvent ChannelEvent
属性类型描述
sourceChannel此事件所来源的子频道。
channel同上同上
val source: Channel = event.source()
val channel: Channel = event.channel()

MessageReactedEvent

尚未投入使用