@SinceMirai("0.33.0") sealed class MessageSource : Message, MessageMetadata, ConstrainSingle<MessageSource>
消息源, 它存在于 MessageChain 中, 用于表示这个消息的来源.
MessageSource 由 metadata (元数据), form & target, content 组成
官方客户端通过 metadata 这三个数据定位消息, 撤回和引用回复都是如此.
See Also
Key |
companion object Key : Key<MessageSource> |
bot |
所属 Bot abstract val bot: Bot |
fromId |
发送人. abstract val fromId: Long |
id |
消息 id (序列号). abstract val id: Int |
internalId |
内部 id. 仅用于协议模块使用. abstract val internalId: Int |
key |
val key: Key<MessageSource> |
originalMessage |
原消息内容. abstract val originalMessage: MessageChain |
targetId |
消息发送目标. abstract val targetId: Long |
time |
发送时间时间戳, 单位为秒. abstract val time: Int |
contentToString |
返回空字符串, 因 MessageMetadata 的约束. fun contentToString(): String |
toString |
返回 fun toString(): String |
typeName |
此 Key 指代的 Message 类型名. 一般为 val typeName: String |
copyAmend |
复制这个消息源, 并以 block 修改 fun MessageSource.copyAmend(block: MessageSourceAmender.() -> Unit): OfflineMessageSource |
flatten |
扁平化 Message fun Message.flatten(): Sequence<SingleMessage> |
isAboutFriend |
判断是否是发送给好友, 或从好友接收的消息的消息源 fun MessageSource.isAboutFriend(): Boolean |
isAboutGroup |
判断是否是发送给群, 或从群接收的消息的消息源 fun MessageSource.isAboutGroup(): Boolean |
isAboutTemp |
判断是否是发送给临时会话, 或从临时会话接收的消息的消息源 fun MessageSource.isAboutTemp(): Boolean |
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. |
quote |
引用这条消息 fun MessageSource.quote(): QuoteReply |
recall |
撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息. suspend fun MessageSource.recall(): Unit |
recallIn |
在一段时间后撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息. fun MessageSource.recallIn(timeMillis: Long, coroutineContext: CoroutineContext = EmptyCoroutineContext): Job |
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 |
OfflineMessageSource |
由一条消息中的 QuoteReply 得到的 MessageSource.
此消息源可能来自一条与机器人无关的消息. 因此无法提供对象化的 abstract class OfflineMessageSource : MessageSource |
OnlineMessageSource |
在线消息的 MessageSource. 拥有对象化的 sender, target, 也可以直接 recall 和 quote sealed class OnlineMessageSource : MessageSource |