interface Message
可发送的或从服务器接收的消息. 采用这样的消息模式是因为 QQ 的消息多元化, 一条消息中可包含 纯文本, 图片 等.
消息 分为
这与使用 String 的使用非常类似.
比较 SingleMessage 与 String:
if(message.contentToString() == "你好") qq.sendMessage(event)
连接 Message 与 Message, String, (使用 operator Message.plus):
text = PlainText("Hello ")
qq.sendMessage(text + "world")
Message1 + Message2 + Message3
, 类似 String 的连接:
+----------+ plus +----------+ plus +----------+ | Message1 | <------ | Message2 | <------ | Message3 | +----------+ +----------+ +----------+
但注意: 不能 String + Message
. 只能 Message + String
除 MessageChain 外, 所有 Message 的实现类都有伴生对象实现 Key 接口.
所有 CharSequence 的行为均由 toString 委托.
即, appendable.append(message)
相当于 appendable.append(message.toString())
See Also
Key |
类型 Key. 由伴生对象实现, 表示一个 Message 对象的类型. interface Key<out M : Message> |
contains |
open operator fun |
contentEquals |
判断内容是否与 another 相等. open fun contentEquals(another: Message, ignoreCase: Boolean = false): Boolean open fun contentEquals(another: String, ignoreCase: Boolean = false): Boolean |
contentToString |
转为最接近官方格式的字符串. 如 abstract fun contentToString(): String |
eq |
open infix fun
将 contentToString 与 other 比较 open infix fun |
followedBy |
将 open fun followedBy(tail: Message): MessageChain |
followedBy1 |
open fun |
plus |
open operator fun plus(another: Message): MessageChain open operator fun plus(another: SingleMessage): MessageChain open operator fun plus(another: String): MessageChain open operator fun plus(another: CharSequence): MessageChain |
plus1 |
open fun open fun open fun open fun |
toString |
得到包含 mirai 消息元素代码的, 易读的字符串. 如 abstract fun toString(): String |
asMessageChain |
得到包含 this 的 MessageChain. fun Message.asMessageChain(): MessageChain |
flatten |
扁平化 Message fun Message.flatten(): Sequence<SingleMessage> |
isContentEmpty |
判断消息内容是否为空. fun Message.isContentEmpty(): Boolean |
isContentNotEmpty |
fun Message.isContentNotEmpty(): Boolean |
isNotPlain |
fun Message.isNotPlain(): Boolean |
isNotPlain2 |
fun Message. |
isPlain |
fun Message.isPlain(): Boolean |
isPlain2 |
fun Message. |
repeat |
fun Message.repeat(count: Int): MessageChain |
repeat2 |
fun Message. |
sendTo |
suspend fun <C : Contact> Message.sendTo(contact: C): MessageReceipt<C> |
times |
operator fun Message.times(count: Int): MessageChain |
toForwardMessage |
转换为 ForwardMessage fun Message.toForwardMessage(sender: User, time: Int = currentTimeSeconds.toInt(), displayStrategy: DisplayStrategy = DisplayStrategy): ForwardMessage fun Message.toForwardMessage(senderId: Long, senderName: String, time: Int = currentTimeSeconds.toInt(), displayStrategy: DisplayStrategy = DisplayStrategy): ForwardMessage |
Image |
自定义表情 (收藏的表情) 和普通图片. interface Image : Message, MessageContent |
MessageChain |
消息链. 空的实现为 EmptyMessageChain interface MessageChain : Message, Iterable<SingleMessage> |
MessageSource |
消息源, 它存在于 MessageChain 中, 用于表示这个消息的来源. sealed class MessageSource : Message, MessageMetadata, ConstrainSingle<MessageSource> |
QuoteReply |
引用回复. class QuoteReply : Message, MessageMetadata, ConstrainSingle<QuoteReply> |
SingleMessage |
interface SingleMessage : Message |