Package net.mamoe.mirai.message.data

Types

Link copied to clipboard
abstract class AbstractMessageKey<out M : SingleMessage>(val safeCast: (SingleMessage) -> M?) : MessageKey<M>

独立的 MessageKey 的实现. '独立' 即 final, 不支持多态类型. 适用于作为最顶层的 MessageKey, 如 MessageSource.

Link copied to clipboard
abstract class AbstractPolymorphicMessageKey<out B : SingleMessage, out M : B>(baseKey: MessageKey<B>, safeCast: (SingleMessage) -> M?) : AbstractMessageKey<M> , MessageKey<M>

多态 MessageKey.

Link copied to clipboard
abstract class AbstractServiceMessage : ServiceMessage
Link copied to clipboard
data class At(val target: Long) : MessageContent, CodableMessage

At 一个群成员. 只能发送给一个群.

Link copied to clipboard
object AtAll : MessageContent, CodableMessage

"@全体成员".

Link copied to clipboard
interface Audio : MessageContent, ConstrainSingle

语音消息.

Link copied to clipboard
enum AudioCodec : Enum<AudioCodec>

语音编码方式.

Link copied to clipboard
class CombinedMessage constructor(    val element: Message,     val tail: Message,     val hasConstrainSingle: Boolean) : AbstractMessageChain, List<SingleMessage>

树状消息链的一个节点. element 为当前元素, tail 为下一个元素.

Link copied to clipboard
interface ConstrainSingle : SingleMessage

约束一个 MessageChain 中只存在这一种类型的元素. 新元素将会替换旧元素, 保持原顺序.

Link copied to clipboard
sealed class CustomMessage : SingleMessage

自定义消息

Link copied to clipboard
abstract class CustomMessageMetadata : CustomMessage, MessageMetadata

自定义消息元数据.

Link copied to clipboard
data class Dice(val value: Int) : MarketFace, CodableMessage

骰子.

Link copied to clipboard

不含任何元素的 MessageChain. 已弃用, 请使用 emptyMessageChain

Link copied to clipboard
data class Face(val id: Int) : MessageContent, CodableMessage

QQ 自带表情

Link copied to clipboard
data class FlashImage(val image: Image) : MessageContent, HummerMessage, CodableMessage, ConstrainSingle

闪照. 闪照的内容取决于 image 代表的图片.

Link copied to clipboard
data class ForwardMessage(    val preview: List<String>,     val title: String,     val brief: String,     val source: String,     val summary: String,     val nodeList: List<ForwardMessage.Node>) : MessageContent, ConstrainSingle

合并转发消息

Link copied to clipboard
class ForwardMessageBuilder : MutableList<ForwardMessage.INode>

转发消息 DSL 构建器.

Link copied to clipboard
annotation class ForwardMessageDsl

标记转发消息 DSL

Link copied to clipboard

一些特殊的消息

Link copied to clipboard
interface Image : Message, MessageContent, CodableMessage

自定义表情 (收藏的表情) 和普通图片.

Link copied to clipboard
enum ImageType : Enum<ImageType>
Link copied to clipboard
interface InternalImageProtocol

内部图片协议实现

Link copied to clipboard
data class LightApp(val content: String) : RichMessage, CodableMessage

小程序.

Link copied to clipboard
interface MarketFace : HummerMessage

商城表情

Link copied to clipboard

消息链, List<SingleMessage>, 即 单个消息元素 的有序集合.

Link copied to clipboard
class MessageChainBuilder : MutableList<SingleMessage> , Appendable

MessageChain 构建器.

Link copied to clipboard
interface MessageContent : SingleMessage

带内容的消息.

Link copied to clipboard
interface MessageKey<out M : SingleMessage>

类型 Key. 由伴生对象实现, 表示一个 Message 对象的类型.

Link copied to clipboard
interface MessageMetadata : SingleMessage

消息元数据, 即不含内容的元素.

Link copied to clipboard
enum MessageOriginKind : Enum<MessageOriginKind>
Link copied to clipboard
sealed class MessageSource : Message, MessageMetadata, ConstrainSingle

表示聊天中的一条消息的定位信息, 即消息源.

Link copied to clipboard
class MessageSourceAmender(origin: MessageSource) : MessageSourceBuilder

MessageSource 复制修改器. 不会修改原 MessageSource, 而是会创建一个新的 MessageSource.

Link copied to clipboard
open class MessageSourceBuilder

离线消息源构建器.

Link copied to clipboard
enum MessageSourceKind : Enum<MessageSourceKind>

消息来源类型

Link copied to clipboard
enum MusicKind : Enum<MusicKind>
Link copied to clipboard
data class MusicShare(    val kind: MusicKind,     val title: String,     val summary: String,     val jumpUrl: String,     val pictureUrl: String,     val musicUrl: String,     val brief: String) : MessageContent, ConstrainSingle, CodableMessage

QQ 互联通道音乐分享.

Link copied to clipboard
interface OfflineAudio : Audio

离线语音消息.

Link copied to clipboard
abstract class OfflineMessageSource : MessageSource

一条在本地构建的, 或其他不保证指向一条服务器上存在的消息的消息源.

Link copied to clipboard
interface OnlineAudio : Audio

在线语音消息, 即从消息事件中接收到的语音消息.

Link copied to clipboard
sealed class OnlineMessageSource : MessageSource

从服务器接收的在线消息的 MessageSource.

Link copied to clipboard
value class OrNullDelegate<out R>

可空的委托

Link copied to clipboard
data class PlainText(val content: String) : MessageContent, CodableMessage

纯文本.

Link copied to clipboard
data class PokeMessage @MiraiInternalApi constructor(    val name: String,     val pokeType: Int,     val id: Int) : HummerMessage, CodableMessage

戳一戳. 可以发送给好友或群.

Link copied to clipboard
data class QuoteReply(val source: MessageSource) : Message, MessageMetadata, ConstrainSingle

引用回复. QuoteReply 被作为 MessageMetadata, 因为它不包含实际的消息内容.

Link copied to clipboard
data class RawForwardMessage(val nodeList: List<ForwardMessage.Node>)

未通过 DisplayStrategy 渲染的合并转发消息. RawForwardMessage 仅作为一个中间件, 用于 ForwardMessageBuilder.

Link copied to clipboard
interface RichMessage : MessageContent, ConstrainSingle

XML, JSON 消息等富文本消息.

Link copied to clipboard
interface ServiceMessage : RichMessage, CodableMessage

服务消息, 可以是 JSON 消息或 XML 消息.

Link copied to clipboard

MessageChain 中包含秀图时的标记.

Link copied to clipboard
class SimpleServiceMessage(val serviceId: Int, val content: String) : ServiceMessage

服务消息, 可以是 JSON 消息或 XML 消息.

Link copied to clipboard
interface SingleMessage : Message

单个消息元素. 与之相对的是 MessageChain, 是多个 SingleMessage 的集合.

Link copied to clipboard
interface UnsupportedMessage : MessageContent

mirai 尚未支持的消息类型.

Link copied to clipboard
data class VipFace @MiraiInternalApi constructor(val kind: VipFace.Kind, val count: Int) : HummerMessage, CodableMessage

VIP 表情.

Link copied to clipboard

Functions

Link copied to clipboard
inline fun <M : SingleMessage> MessageChain.anyIsInstance(): Boolean

this 中存在 M 的实例时返回 true.

Link copied to clipboard
inline fun Member.at(): At

At 这个成员

Link copied to clipboard
inline fun buildForwardMessage(    context: Contact,     displayStrategy: ForwardMessage.DisplayStrategy = DisplayStrategy,     block: ForwardMessageBuilder.() -> Unit): ForwardMessage

构造一条 ForwardMessage

inline fun MessageEvent.buildForwardMessage(    context: Contact = this.subject,     displayStrategy: ForwardMessage.DisplayStrategy = DisplayStrategy,     block: ForwardMessageBuilder.() -> Unit): ForwardMessage

使用 DSL 构建一个 ForwardMessage.

Link copied to clipboard
inline fun buildMessageChain(block: MessageChainBuilder.() -> Unit): MessageChain

构建一个 MessageChain. 用法查看 MessageChainBuilder.

inline fun buildMessageChain(initialSize: Int, block: MessageChainBuilder.() -> Unit): MessageChain

使用特定的容器大小构建一个 MessageChain. 用法查看 MessageChainBuilder.

Link copied to clipboard
inline fun Bot.buildMessageSource(kind: MessageSourceKind, block: MessageSourceBuilder.() -> Unit): OfflineMessageSource
inline fun IMirai.buildMessageSource(    botId: Long,     kind: MessageSourceKind,     block: MessageSourceBuilder.() -> Unit): OfflineMessageSource

使用 DSL 构建一个 OfflineMessageSource. 用法参考 MessageSourceBuilder.

Link copied to clipboard
fun MessageChain.contentsList(): List<MessageContent>
Link copied to clipboard
fun MessageChain.contentsSequence(): Sequence<MessageContent>

获取 Sequence<MessageContent> 相当于 this.asSequence().filterIsInstance<MessageContent>()

Link copied to clipboard
@JvmName(name = "copySource")
fun MessageSource.copyAmend(block: MessageSourceAmender.() -> Unit): OfflineMessageSource

复制这个消息源, 并以 block 修改

Link copied to clipboard
fun emptyMessageChain(): MessageChain

返回一个不含任何元素的 MessageChain.

Link copied to clipboard
inline fun FileMessage(    id: String,     internalId: Int,     name: String,     size: Long): FileMessage
Link copied to clipboard
inline fun <M : SingleMessage?> MessageChain.findIsInstance(): M?

获取第一个 M 实例. 在不存在时返回 null.

Link copied to clipboard
inline fun <M : SingleMessage> MessageChain.firstIsInstance(): M

获取第一个 M 实例. 在不存在时抛出 NoSuchElementException.

Link copied to clipboard
inline fun <M : SingleMessage?> MessageChain.firstIsInstanceOrNull(): M?

获取第一个 M 实例. 在不存在时返回 null.

Link copied to clipboard
inline fun Image.flash(): FlashImage

将普通图片转换为闪照.

Link copied to clipboard
inline fun FlashImage(imageId: String): FlashImage

将普通图片转换为闪照.

Link copied to clipboard
inline fun <M : SingleMessage> MessageChain.getOrFail(key: MessageKey<M>, crossinline lazyMessage: (key: MessageKey<M>) -> String = { key.toString() }): M

获取第一个类型为 keyMessage 实例, 在找不到此类型的元素时抛出 NoSuchElementException

Link copied to clipboard
inline operator fun <T : SingleMessage> MessageChain.getValue(thisRef: Any?, property: KProperty<*>): T

提供一个类型的值的委托. 若不存在则会抛出异常 NoSuchElementException

Link copied to clipboard
inline fun Image(imageId: String): Image

通过 Image.imageId 构造一个 Image 以便发送.

inline fun Image(imageId: String, builderAction: Image.Builder.() -> Unit = {}): Image

使用 Image.Builder 构建一个 Image.

Link copied to clipboard
fun Message.isContentBlank(): Boolean

当消息内容为空白时返回 true.

Link copied to clipboard
fun Message.isContentEmpty(): Boolean

当消息内容为空时返回 true.

Link copied to clipboard
fun MessageKey<*>.isInstance(message: SingleMessage): Boolean

尝试 MessageKey.safeCast, 成功时返回 true

Link copied to clipboard
@JvmName(name = "newChain")
inline fun messageChainOf(vararg messages: Message): MessageChain

返回一个包含 messages 所有元素的消息链, 保留顺序.

Link copied to clipboard
fun MessageChain.metadataList(): List<MessageMetadata>
Link copied to clipboard
fun MessageChain.metadataSequence(): Sequence<MessageMetadata>

获取 Sequence<MessageMetadata> 相当于 this.asSequence().filterIsInstance<MessageMetadata>()

Link copied to clipboard
inline fun OfflineAudio(onlineAudio: OnlineAudio): OfflineAudio

使用 OnlineAudio 的信息构造 OfflineAudio.

inline fun OfflineAudio(    filename: String,     fileMd5: ByteArray,     fileSize: Long,     codec: AudioCodec,     extraData: ByteArray?): OfflineAudio

构造 OfflineAudio. 有关参数的含义, 参考 Audio.

Link copied to clipboard
inline fun <T : R, R : SingleMessage?> MessageChain.orElse(lazyDefault: () -> R): OrNullDelegate<R>

提供一个类型的 Message 的委托, 若不存在这个类型的 Message 则委托会提供 null

Link copied to clipboard
inline fun <T : SingleMessage> MessageChain.orNull(): OrNullDelegate<T?>

提供一个类型的 Message 的委托, 若不存在这个类型的 Message 则委托会提供 null

Link copied to clipboard
inline suspend operator fun Message.plus(another: Flow<Message>): MessageChain

another 按顺序连接到这个消息的尾部.

Link copied to clipboard
inline suspend fun QuoteReply.recallSource()

撤回引用的源消息

Link copied to clipboard
inline fun Message.repeat(count: Int): MessageChain

将此消息元素按顺序重复 count 次.

Link copied to clipboard
inline suspend fun <C : Contact> Message.sendTo(contact: C): MessageReceipt<C>

this 发送给指定联系人

Link copied to clipboard
inline operator fun Message.times(count: Int): MessageChain

将此消息元素按顺序重复 count 次.

Link copied to clipboard
fun <T : CustomMessage> T.toByteArray(): ByteArray

序列化这个消息

Link copied to clipboard
fun Iterable<MessageEvent>.toForwardMessage(displayStrategy: ForwardMessage.DisplayStrategy = DisplayStrategy): ForwardMessage
fun Message.toForwardMessage(    sender: User,     time: Int = currentTimeSeconds().toInt(),     displayStrategy: ForwardMessage.DisplayStrategy = DisplayStrategy): ForwardMessage
fun Message.toForwardMessage(    senderId: Long,     senderName: String,     time: Int = currentTimeSeconds().toInt(),     displayStrategy: ForwardMessage.DisplayStrategy = DisplayStrategy): ForwardMessage

转换为 ForwardMessage

Link copied to clipboard
inline fun Array<out Message>.toMessageChain(): MessageChain
@JvmName(name = "newChain")
inline fun Iterable<Message>.toMessageChain(): MessageChain
@JvmName(name = "newChain")
inline fun Iterator<Message>.toMessageChain(): MessageChain
@JvmName(name = "newChain")
fun Sequence<Message>.toMessageChain(): MessageChain
@JvmName(name = "newChain")
suspend fun Flow<Message>.toMessageChain(): MessageChain

扁平化 this 并创建一个 MessageChain.

@JvmName(name = "newChain")
fun Message.toMessageChain(): MessageChain
@JvmName(name = "newChain")
fun Stream<Message>.toMessageChain(): MessageChain

扁平化 this 并创建一个 MessageChain.

Link copied to clipboard
@JvmName(name = "toOfflineMessageSource")
fun OnlineMessageSource.toOffline(): OfflineMessageSource

将在线消息源转换为离线消息源.

Link copied to clipboard
inline fun String.toPlainText(): PlainText

构造 PlainText

Link copied to clipboard
inline fun Audio.toVoice(): Voice

将 2.7 新增的 Audio 转为旧版本的 Voice, 以兼容某些情况.

Link copied to clipboard
inline fun UnsupportedMessage(struct: ByteArray): UnsupportedMessage

Properties

Link copied to clipboard
val MessageChain.bot: Bot

消息内部 ids.

val MessageSource.bot: Bot

获取此消息源的相关 Bot.

Link copied to clipboard
val MessageSource.botOrNull: Bot?

获取此消息源的相关 Bot.

Link copied to clipboard
val Message.content: String
Link copied to clipboard
val MessageChain.ids: IntArray

消息 ids.

Link copied to clipboard
val MessageChain.internalId: IntArray

消息内部 ids.

Link copied to clipboard
val MessageSource.kind: MessageSourceKind
val OnlineMessageSource.kind: MessageSourceKind
Link copied to clipboard
val OnlineAudio.lengthDuration: Duration

获取语音长度秒数, 作为 Duration.

Link copied to clipboard
val MessageChain.source: MessageSource

获取这条消息的 消息源.

Link copied to clipboard
val MessageChain.sourceOrNull: MessageSource?

获取这条消息的 消息源.

Link copied to clipboard
val MessageChain.time: Int

消息时间.

Link copied to clipboard
val <A : SingleMessage> MessageKey<A>.topmostKey: MessageKey<*>

获取最上层 MessageKey.