mirai-core / net.mamoe.mirai.message

Package net.mamoe.mirai.message

Types

ContactMessage

一条消息事件. 它是一个 BotEvent, 因此可以被 监听

abstract class ContactMessage : MessagePacket<User, Contact>, BotEvent

FriendMessage

好友消息

class FriendMessage : ContactMessage, BroadcastControllable

GroupMessage

class GroupMessage : ContactMessage, Event

MessagePacket

一条从服务器接收到的消息事件. 请查看各平台的 actual 实现的说明.

abstract class MessagePacket<TSender : User, TSubject : Contact> : MessagePacketBase<TSender, TSubject>

MessagePacketBase

仅内部使用, 请使用 ContactMessage

abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : Packet, BotEvent

MessageReceipt

发送消息后得到的回执. 可用于撤回.

open class MessageReceipt<out C : Contact>

MessageType

enum class MessageType

TempMessage

临时会话消息

class TempMessage : ContactMessage, BroadcastControllable

Extensions for External Classes

java.awt.image.BufferedImage

java.io.File

java.io.InputStream

java.net.URL

kotlinx.io.core.Input

Properties

sourceId

获取源消息 MessageSource.id

val MessageReceipt<*>.sourceId: Int

sourceTime

获取源消息 MessageSource.time

val MessageReceipt<*>.sourceTime: Int

Functions

isContextIdenticalWith

判断两个 MessagePacketMessagePacket.senderMessagePacket.subject 是否相同

fun ContactMessage.isContextIdenticalWith(another: ContactMessage): Booleanfun MessagePacket<*, *>.isContextIdenticalWith(another: MessagePacket<*, *>): Boolean

nextMessage

挂起当前协程, 等待下一条 MessagePacket.senderMessagePacket.subjectthis 相同且通过 筛选MessagePacket

suspend fun <P : ContactMessage> P.nextMessage(timeoutMillis: Long = -1, filter: suspend P.(P) -> Boolean): MessageChain

挂起当前协程, 等待下一条 MessagePacket.senderMessagePacket.subjectthis 相同的 MessagePacket

suspend fun <P : ContactMessage> P.nextMessage(timeoutMillis: Long = -1): MessageChain

nextMessageAsync

fun <P : ContactMessage> P.nextMessageAsync(timeoutMillis: Long = -1, coroutineContext: CoroutineContext = EmptyCoroutineContext): Deferred<MessageChain>
fun <P : ContactMessage> P.nextMessageAsync(timeoutMillis: Long = -1, coroutineContext: CoroutineContext = EmptyCoroutineContext, filter: suspend P.(P) -> Boolean): Deferred<MessageChain>

nextMessageContaining

挂起当前协程, 等待下一条 MessagePacket.senderMessagePacket.subjectthis 相同的 MessagePacket

suspend fun <M : Message> ContactMessage.nextMessageContaining(timeoutMillis: Long = -1): M

nextMessageContainingAsync

fun <M : Message> ContactMessage.nextMessageContainingAsync(timeoutMillis: Long = -1, coroutineContext: CoroutineContext = EmptyCoroutineContext): Deferred<M>

nextMessageContainingOrNull

挂起当前协程, 等待下一条 MessagePacket.senderMessagePacket.subjectthis 相同并含有 M 类型的消息的 MessagePacket

suspend fun <M : Message> ContactMessage.nextMessageContainingOrNull(timeoutMillis: Long = -1): M?

nextMessageContainingOrNullAsync

fun <M : Message> ContactMessage.nextMessageContainingOrNullAsync(timeoutMillis: Long = -1, coroutineContext: CoroutineContext = EmptyCoroutineContext): Deferred<M?>

nextMessageOrNull

挂起当前协程, 等待下一条 MessagePacket.senderMessagePacket.subjectthis 相同且通过 筛选MessagePacket

suspend fun <P : ContactMessage> P.nextMessageOrNull(timeoutMillis: Long = -1, filter: suspend P.(P) -> Boolean): MessageChain?

挂起当前协程, 等待下一条 MessagePacket.senderMessagePacket.subjectthis 相同的 MessagePacket

suspend fun <P : ContactMessage> P.nextMessageOrNull(timeoutMillis: Long = -1): MessageChain?

nextMessageOrNullAsync

fun <P : ContactMessage> P.nextMessageOrNullAsync(timeoutMillis: Long = -1, coroutineContext: CoroutineContext = EmptyCoroutineContext): Deferred<MessageChain?>

quote

引用这条消息.

fun MessageReceipt<*>.quote(): QuoteReply

quoteReply

引用这条消息并回复.

suspend fun <C : Contact> MessageReceipt<C>.quoteReply(message: Message): MessageReceipt<C>
suspend fun <C : Contact> MessageReceipt<C>.quoteReply(message: String): MessageReceipt<C>

recall

撤回这条消息. recallrecallIn 只能被调用一次.

suspend fun MessageReceipt<*>.recall(): Unit

recallIn

在一段时间后撤回这条消息. recallrecallIn 只能被调用一次.

fun MessageReceipt<*>.recallIn(timeMillis: Long, coroutineContext: CoroutineContext = EmptyCoroutineContext): Job

sendImage

Dispatchers.IO 中将图片发送到指定联系人. 不会保存临时文件

suspend fun <C : Contact> C.sendImage(bufferedImage: BufferedImage): MessageReceipt<C>

Dispatchers.IO 中下载 URL 到临时文件并将其作为图片发送到指定联系人

suspend fun <C : Contact> C.sendImage(imageUrl: URL): MessageReceipt<C>

Dispatchers.IO 中读取 Input 到临时文件并将其作为图片发送到指定联系人

suspend fun <C : Contact> C.sendImage(imageInput: Input): MessageReceipt<C>

Dispatchers.IO 中读取 InputStream 到临时文件并将其作为图片发送到指定联系人

suspend fun <C : Contact> C.sendImage(imageStream: InputStream): MessageReceipt<C>

Dispatchers.IO 中将文件作为图片发送到指定联系人

suspend fun <C : Contact> C.sendImage(file: File): MessageReceipt<C>

uploadImage

Dispatchers.IO 中将图片上传, 但不发送. 不会保存临时文件

suspend fun Contact.uploadImage(bufferedImage: BufferedImage): OfflineImage

Dispatchers.IO 中下载 URL 到临时文件并将其作为图片上传, 但不发送

suspend fun Contact.uploadImage(imageUrl: URL): OfflineImage

Dispatchers.IO 中读取 Input 到临时文件并将其作为图片上传, 但不发送

suspend fun Contact.uploadImage(imageInput: Input): OfflineImage

Dispatchers.IO 中读取 InputStream 到临时文件并将其作为图片上传, 但不发送

suspend fun Contact.uploadImage(imageStream: InputStream): OfflineImage

Dispatchers.IO 中将文件作为图片上传, 但不发送

suspend fun Contact.uploadImage(file: File): OfflineImage