messages

abstract override val messages: Messages(source)

KOOK 消息事件中所收到的消息列表。

messages 会对接收到的事件中的内容进行解析,并转化为各符合内容的消息链。

Event.content 的处理

Event.extraKMarkdownEventExtra 类型时,Event.content 会在被追加的时候进行 处理。 所谓处理,就是指根据 TextExtra 中的 mentionmentionRolesisMentionAllisMentionHere 的信息,根据各信息出现数量依次移除 Event.content 中出现的特殊字符串。

例如,一个消息为:

@forliy hello

Event.content 的实际内容为:

(met)123456(met) hello

而由于 TextExtra.mention 出现过一次上述的 123456 的信息,因此依次移除掉一个 (met)123456(met), 而最终的 MessageContent.plainText 结果则为:

hello

需要注意的是,这种处理不会移除或清理任何的空字符,所以你可能会发现上面处理结束后的 hello 前是有一个空格的。

如果你希望能够得到最原始的 Event.content,那么请通过原始事件对象(如果有) 或 rawContent 获取, 而不是通过 MessageContent.plainTextmessages 中的 PlainText 集。

val event: KookMessageEvent = ... // 一个KOOK的消息事件
val rawContent = event.sourceEvent.content
// ...

转化丢失

将消息转化为一个消息链(尤其是转化kmarkdown类型的消息)的过程中有可能会丢失一部分原有的格式。 因此当你直接通过 messages 重复发送消息时有可能会产生与收到的消息不一致的效果。

消息引用

有关消息引用的信息需要通过 reference API 查询获取,不会被包含在 messages 中。