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

Package net.mamoe.mirai.message.data

Types

AbstractImage

所有 Image 实现的基类.

sealed class AbstractImage : Image

At

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

data class At : MessageContent

AtAll

"@全体成员".

object AtAll : Key<AtAll>, MessageContent

ConstrainSingle

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

interface ConstrainSingle<out M : Message> : MessageMetadata

CustomMessage

自定义消息

sealed class CustomMessage : SingleMessage

CustomMessageMetadata

自定义消息元数据.

abstract class CustomMessageMetadata : CustomMessage, MessageMetadata

EmptyMessageChain

不含任何元素的 MessageChain.

object EmptyMessageChain : MessageChain, Iterator<SingleMessage>

Face

QQ 自带表情

data class Face : MessageContent

FlashImage

闪照

sealed class FlashImage : MessageContent, HummerMessage

ForwardMessage

合并转发消息

class ForwardMessage : MessageContent

ForwardMessageBuilder

转发消息 DSL 构建器.

class ForwardMessageBuilder : MutableList<INode>

FriendFlashImage

data class FriendFlashImage : FlashImage

FriendImage

好友图片

sealed class FriendImage : AbstractImage

GroupFlashImage

data class GroupFlashImage : FlashImage

GroupImage

群图片.

sealed class GroupImage : AbstractImage

HummerMessage

一些特殊的消息

sealed class HummerMessage : MessageContent

Image

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

interface Image : Message, MessageContent

JsonMessage

Json 消息.

class JsonMessage : ServiceMessage

LightApp

小程序, 如音乐分享.

data class LightApp : RichMessage

Message

可发送的或从服务器接收的消息. 采用这样的消息模式是因为 QQ 的消息多元化, 一条消息中可包含 纯文本, 图片 等.

interface Message

MessageChain

消息链. 空的实现为 EmptyMessageChain

interface MessageChain : Message, Iterable<SingleMessage>

MessageChainBuilder

MessageChain 构建器. 多个连续的 String 会被连接为单个 PlainText 以优化性能.

open class MessageChainBuilder : MutableList<SingleMessage>, Appendable

MessageContent

消息内容

interface MessageContent : SingleMessage

MessageMetadata

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

interface MessageMetadata : SingleMessage

MessageSource

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

sealed class MessageSource : Message, MessageMetadata, ConstrainSingle<MessageSource>

MessageSourceAmender

仅于 copyAmend 中修改 MessageSource

interface MessageSourceAmender

MessageSourceBuilder

abstract class MessageSourceBuilder

NullMessageChain

Null 的 MessageChain. 它不包含任何元素, 也没有创建任何 list.

object NullMessageChain : MessageChain

OfflineFriendImage

通过 Group.uploadImage 上传得到的 GroupImage. 它的链接需要查询 Bot.queryImageUrl

data class OfflineFriendImage : FriendImage, OfflineImage

OfflineGroupImage

通过 Group.uploadImage 上传得到的 GroupImage. 它的链接需要查询 Bot.queryImageUrl

data class OfflineGroupImage : GroupImage, OfflineImage

OfflineImage

离线的图片, 即为客户端主动上传到服务器而获得的 Image 实例. 不能直接获取它在服务器上的链接. 需要通过 Bot.queryImageUrl 查询

interface OfflineImage : Image

OfflineMessageSource

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

abstract class OfflineMessageSource : MessageSource

OnlineFriendImage

接收消息时获取到的 FriendImage. 它可以直接获取下载链接 originUrl

abstract class OnlineFriendImage : FriendImage, OnlineImage

OnlineGroupImage

接收消息时获取到的 GroupImage. 它可以直接获取下载链接 originUrl

abstract class OnlineGroupImage : GroupImage, OnlineImage

OnlineImage

在服务器上的图片. 它可以直接获取下载链接.

interface OnlineImage : Image

OnlineMessageSource

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

sealed class OnlineMessageSource : MessageSource

OrNullDelegate

可空的委托

class OrNullDelegate<out R : Message?>

PlainText

纯文本. 可含 emoji 表情如 😊.

data class PlainText : MessageContent

PokeMessage

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

data class PokeMessage : HummerMessage

QuoteReply

引用回复.

class QuoteReply : Message, MessageMetadata, ConstrainSingle<QuoteReply>

RichMessage

XML 消息等富文本消息

interface RichMessage : MessageContent

ServiceMessage

服务消息, 如 XmlMessage.

open class ServiceMessage : RichMessage

SingleMessage

interface SingleMessage : Message

VipFace

VIP 表情.

data class VipFace : HummerMessage

XmlMessage

XML 消息, 如分享, 卡片等.

class XmlMessage : ServiceMessage

XmlMessageBuilder

class XmlMessageBuilder

Annotations

ForwardMessageDsl

标记转发消息 DSL

annotation class ForwardMessageDsl

XmlMessageDsl

annotation class XmlMessageDsl

Extensions for External Classes

kotlin.collections.Collection

kotlin.collections.Iterable

kotlin.sequences.Sequence

kotlin.String

Properties

bot

消息内部 id. 仅从服务器接收的消息才可以获取

val MessageChain.bot: Botval QuoteReply.bot: Bot

FRIEND_IMAGE_ID_REGEX_1

好友图片 ID 正则表达式

val FRIEND_IMAGE_ID_REGEX_1: Regex

FRIEND_IMAGE_ID_REGEX_2

好友图片 ID 正则表达式 2

val FRIEND_IMAGE_ID_REGEX_2: Regex

fromId

val QuoteReply.fromId: Long

GROUP_IMAGE_ID_REGEX

群图片 ID 正则表达式

val GROUP_IMAGE_ID_REGEX: Regex

GROUP_IMAGE_ID_REGEX_OLD

0.39.0 前的图片的正则表示

val GROUP_IMAGE_ID_REGEX_OLD: Regex

id

消息 id. 仅从服务器接收的消息才可以获取

val MessageChain.id: Intval QuoteReply.id: Int

internalId

消息内部 id. 仅从服务器接收的消息才可以获取

val MessageChain.internalId: Intval QuoteReply.internalId: Int

md5

val Image.md5: ByteArray

originalMessage

val QuoteReply.originalMessage: MessageChain

source

获取这条消息源 仅从服务器接收的消息才可以获取消息源

val MessageChain.source: MessageSource

targetId

val QuoteReply.targetId: Long

time

消息时间. 仅从服务器接收的消息才可以获取

val MessageChain.time: Intval QuoteReply.time: Int

Functions

_____newChain______

构造一个 MessageChain 为提供更好的 Java API.

fun _____newChain______(vararg messages: Message): MessageChain
fun _____newChain______(messages: String): MessageChain

allContent

如果每一个 消息内容 都满足 block, 返回 true

fun MessageChain.allContent(block: (MessageContent) -> Boolean): Boolean

any

获取第一个 M 类型的 Message 实例

fun <M : Message> MessageChain.any(key: Key<M>): Boolean

anyIsInstance

获取第一个 M 类型的 Message 实例

fun <M : Message> MessageChain.anyIsInstance(): Boolean

asMessageChain

得到包含 thisMessageChain.

fun Message.asMessageChain(): MessageChain

直接将 this 委托为一个 MessageChain

fun SingleMessage.asMessageChain(): MessageChainfun MessageChain.asMessageChain(): MessageChain

at

At 这个成员

fun Member.at(): At

buildForwardMessage

构造一条 ForwardMessage

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

使用 DSL 构建一个 ForwardMessage.

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

buildMessageChain

构建一个 MessageChain

fun buildMessageChain(block: MessageChainBuilder.() -> Unit): MessageChain

使用特定的容器大小构建一个 MessageChain

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

buildMessageSource

构建一个 OfflineMessageSource

fun Bot.buildMessageSource(block: MessageSourceBuilder.() -> Unit): MessageSource

buildXmlMessage

构造一条 XML 消息

fun buildXmlMessage(serviceId: Int, block: XmlMessageBuilder.() -> Unit): ServiceMessagefun buildXmlMessage(block: XmlMessageBuilder.() -> Unit): ServiceMessage

copyAmend

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

fun MessageSource.copyAmend(block: MessageSourceAmender.() -> Unit): OfflineMessageSource

first

获取第一个 M 类型的 Message 实例

fun <M : Message> MessageChain.first(key: Key<M>): M

firstIsInstance

获取第一个 M 类型的 Message 实例

fun <M : Message> MessageChain.firstIsInstance(): M

firstIsInstanceOrNull

获取第一个 M 类型的 Message 实例

fun <M : Message?> MessageChain.firstIsInstanceOrNull(): M?

firstOrNull

获取第一个 M 类型的 Message 实例

fun <M : Message> MessageChain.firstOrNull(key: Key<M>): M?

flash

fun Image.flash(): FlashImage
fun GroupImage.flash(): GroupFlashImage
fun FriendImage.flash(): FriendFlashImage

flash2

fun Image.flash2(): FlashImage
fun GroupImage.flash2(): GroupFlashImage
fun FriendImage.flash2(): FriendFlashImage

flatten

扁平化 Message

fun Message.flatten(): Sequence<SingleMessage>fun MessageChain.flatten(): Sequence<SingleMessage>

forEachContent

遍历每一个 消息内容

fun MessageChain.forEachContent(block: (MessageContent) -> Unit): Unit

foreachContent

fun MessageChain.foreachContent(block: (MessageContent) -> Unit): Unit

getValue

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

operator fun <T : Message> MessageChain.getValue(thisRef: Any?, property: KProperty<*>): T

Image

通过 Image.imageId 构造一个 Image 以便发送. 这个图片必须是服务器已经存在的图片. 图片 id 不一定会长时间保存, 因此不建议使用 id 发送图片.

fun Image(imageId: String): OfflineImage

Image2

fun Image2(imageId: String): Image

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

noneContent

如果每一个 消息内容 都不满足 block, 返回 true

fun MessageChain.noneContent(block: (MessageContent) -> Boolean): Boolean

orElse

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

fun <T : Message?> MessageChain.orElse(lazyDefault: () -> T): OrNullDelegate<T>

orNull

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

fun <T : Message> MessageChain.orNull(): OrNullDelegate<T?>

queryUrl

查询原图下载链接.

suspend fun Image.queryUrl(): String

原图下载链接. 包含域名

suspend fun OfflineImage.queryUrl(): String

quote

引用这条消息

fun MessageSource.quote(): QuoteReply
fun MessageChain.quote(): QuoteReply

recall

撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息.

suspend fun MessageSource.recall(): Unit
suspend fun MessageChain.recall(): Unitsuspend fun QuoteReply.recall(): Unit

recallIn

在一段时间后撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息.

fun MessageSource.recallIn(timeMillis: Long, coroutineContext: CoroutineContext = EmptyCoroutineContext): Job
fun MessageChain.recallIn(millis: Long, coroutineContext: CoroutineContext = EmptyCoroutineContext): Job

在一段时间后撤回这条消息.

fun QuoteReply.recallIn(millis: 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>

this 发送给指定联系人

suspend fun <C : Contact> MessageChain.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

toOffline

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

fun OnlineMessageSource.toOffline(): OfflineMessageSource