mirai-core / net.mamoe.mirai.message.data / MessageSource

MessageSource

@SinceMirai("0.33.0") sealed class MessageSource : Message, MessageMetadata, ConstrainSingle<MessageSource>

消息源, 它存在于 MessageChain 中, 用于表示这个消息的来源.

组成

MessageSource 由 metadata (元数据), form & target, content 组成

metadata

官方客户端通过 metadata 这三个数据定位消息, 撤回和引用回复都是如此.

form & target

content

消息源可用于 引用回复撤回.

See Also

Bot.recall

MessageSource.quote

OnlineMessageSource

OfflineMessageSource

Types

Key

companion object Key : Key<MessageSource>

Properties

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

Functions

contentToString

返回空字符串, 因 MessageMetadata 的约束.

fun contentToString(): String

toString

返回 "[mirai:source:$id,$internalId]"

fun toString(): String

Companion Object Properties

typeName

Key 指代的 Message 类型名. 一般为 class.simpleName, 如 "QuoteReply", "PlainText"

val typeName: String

Extension Functions

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.isNotPlain2(): Boolean

isPlain

fun Message.isPlain(): Boolean

isPlain2

fun Message.isPlain2(): Boolean

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.repeat2(count: Int): MessageChain

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

Inheritors

OfflineMessageSource

由一条消息中的 QuoteReply 得到的 MessageSource. 此消息源可能来自一条与机器人无关的消息. 因此无法提供对象化的 sendertarget 获取.

abstract class OfflineMessageSource : MessageSource

OnlineMessageSource

在线消息的 MessageSource. 拥有对象化的 sender, target, 也可以直接 recallquote

sealed class OnlineMessageSource : MessageSource