plainText

abstract override val plainText: String(source)

接收到的被替换/移除所有 特殊文本(内嵌格式 内容后的纯文本消息内容。

mentions 替换

plainText 会按照 mentions 逐次替换对应的内嵌消息字符串。

例如,发送的消息为:

@张三 你好

此时收到的消息中的 content

<qqbot-at-user id="123456" /> 你好

那么就会根据 mentions 进行替换,最终的 plainText 的值为:

你好

⚠️ 注意!此处的 " 你好" 前面是大概率有空格的,因为在默认情况下不会对消息有过多的操作,而替换后的前后空格也将会被保留。 如果有需要,请注意在判断之前先进行 trim 等操作来消除空格,或者使用例如 @ContentTrim 等相关功能。

被替换掉的 mention 会被解析在 messages 中作为 At

mention everyone 替换

mentionEveryonetrue 时, plainText 会尝试清理文本中第一个 <qqbot-at-everyone />

如果是群消息(即没有 QGSourceMessage 类型,只有 content),则会全部进行转化。

被替换的 <qqbot-at-everyone /> 会被解析于 messages 中作为 AtAll

mention channel 替换

消息内嵌格式中提及一个子频道的格式如下:

<#channel_id>

plainText 会寻找并清除这些类型的消息。例如一个消息如下:

这个频道 #频道01 快去看看吧!

那么收到的消息则为

这个频道 <#654321> 快去看看吧!

plainText 进行转化后的结果为

这个频道  快去看看吧!

被替换掉的 channel mention 会在 messages 中被转化为 At (且 At.typechannel )。

emoji 替换

消息内嵌格式中发送一个 系统表情 时的格式为

<emoji:id>

它们在 plainText 中也同样会被解析掉。被解析掉的 emoji 会在 messages 中被作为 Face

原始Content

如果你想要得到本次消息最原始的 content,直接使用 sourceContent 获取

val contentText = receiveContent.sourceMessage.content

See also