messages
KOOK 消息事件中所收到的消息列表。
messages 会对接收到的事件中的内容进行解析,并转化为各符合内容的消息链。
Event.content 的处理
当 Event.extra 为 KMarkdownEventExtra 类型时,Event.content 会在被追加的时候进行 处理。 所谓处理,就是指根据 TextExtra 中的 mention、 mentionRoles、isMentionAll、 isMentionHere 的信息,根据各信息出现数量依次移除 Event.content 中出现的特殊字符串。
例如,一个消息为:
@forliy hello
Content copied to clipboard
则 Event.content 的实际内容为:
(met)123456(met) hello
Content copied to clipboard
而由于 TextExtra.mention 出现过一次上述的 123456
的信息,因此依次移除掉一个 (met)123456(met)
, 而最终的 MessageContent.plainText 结果则为:
hello
Content copied to clipboard
需要注意的是,这种处理不会移除或清理任何的空字符,所以你可能会发现上面处理结束后的 hello
前是有一个空格的。
如果你希望能够得到最原始的 Event.content,那么请通过原始事件对象(如果有) 或 rawContent 获取, 而不是通过 MessageContent.plainText 或 messages 中的 PlainText 集。
val event: KookMessageEvent = ... // 一个KOOK的消息事件
val rawContent = event.sourceEvent.content
// ...
Content copied to clipboard
转化丢失
将消息转化为一个消息链(尤其是转化kmarkdown类型的消息)的过程中有可能会丢失一部分原有的格式。 因此当你直接通过 messages 重复发送消息时有可能会产生与收到的消息不一致的效果。