Deprecate MessageEventExtensions, close #459

This commit is contained in:
Him188 2020-12-27 22:30:43 +08:00
parent 648c6e27d6
commit 6dc64cac35
3 changed files with 209 additions and 34 deletions

View File

@ -19,6 +19,7 @@ import net.mamoe.mirai.contact.*
import net.mamoe.mirai.event.events.*
import net.mamoe.mirai.event.internal.*
import net.mamoe.mirai.message.data.*
import net.mamoe.mirai.message.data.MessageSource.Key.quote
/**
@ -92,13 +93,13 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
/** 启动监听器, 在 [Bot] 未被禁言且消息满足条件 [this] 时回复原消息 */
@MessageDsl
public open infix fun ListeningFilter.reply(toReply: String): Ret =
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) reply(toReply);this@MessageSubscribersBuilder.stub }
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) subject.sendMessage(toReply);this@MessageSubscribersBuilder.stub }
/** 启动监听器, 在 [Bot] 未被禁言且消息满足条件 [this] 时回复原消息 */
@MessageDsl
public open infix fun ListeningFilter.reply(message: Message): Ret =
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) reply(message);this@MessageSubscribersBuilder.stub }
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) subject.sendMessage(message);this@MessageSubscribersBuilder.stub }
/**
* 启动监听器, [Bot] 未被禁言且消息满足条件 [this] 时执行 [replier] 并以其返回值回复.
@ -117,12 +118,12 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
/** 启动监听器, 在 [Bot] 未被禁言且消息满足条件 [this] 时引用回复原消息 */
@MessageDsl
public open infix fun ListeningFilter.quoteReply(toReply: String): Ret =
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) quoteReply(toReply); this@MessageSubscribersBuilder.stub }
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) subject.sendMessage(message.quote() + toReply); this@MessageSubscribersBuilder.stub }
/** 启动监听器, 在 [Bot] 未被禁言且消息满足条件 [this] 时引用回复原消息 */
@MessageDsl
public open infix fun ListeningFilter.quoteReply(toReply: Message): Ret =
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) quoteReply(toReply);this@MessageSubscribersBuilder.stub }
content(filter) { if ((this as? GroupMessageEvent)?.group?.isBotMuted != true) subject.sendMessage(message.quote() + toReply);this@MessageSubscribersBuilder.stub }
/**
* 启动监听器, [Bot] 未被禁言且消息满足条件 [this] 时执行 [replier] 并以其返回值回复原消息
@ -365,7 +366,7 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
/** [消息内容][Message.contentToString]包含 [this] 则回复 [reply] */
@MessageDsl
public open infix fun String.containsReply(reply: String): Ret =
content({ this@containsReply in it }, { reply(reply); this@MessageSubscribersBuilder.stub })
content({ this@containsReply in it }, { subject.sendMessage(reply); this@MessageSubscribersBuilder.stub })
/**
* [消息内容][Message.contentToString]包含 [this] 则执行 [replier] 并将其返回值回复给发信对象.
@ -431,14 +432,14 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
@MessageDsl
public open infix fun String.reply(reply: String): Ret {
val toCheck = this.trim()
return content({ it.trim() == toCheck }, { reply(reply);this@MessageSubscribersBuilder.stub })
return content({ it.trim() == toCheck }, { subject.sendMessage(reply);this@MessageSubscribersBuilder.stub })
}
/** 当发送的消息内容为 [this] 就回复 [reply] */
@MessageDsl
public open infix fun String.reply(reply: Message): Ret {
val toCheck = this.trim()
return content({ it.trim() == toCheck }, { reply(reply);this@MessageSubscribersBuilder.stub })
return content({ it.trim() == toCheck }, { subject.sendMessage(reply);this@MessageSubscribersBuilder.stub })
}
/** 当发送的消息内容为 [this] 就执行并回复 [replier] 的返回值 */
@ -458,9 +459,9 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
@Suppress("REDUNDANT_INLINE_SUSPEND_FUNCTION_TYPE", "UNCHECKED_CAST") // false positive
internal suspend inline fun executeAndReply(m: M, replier: suspend M.(String) -> Any?): RR {
when (val message = replier(m, m.message.contentToString())) {
is Message -> m.reply(message)
is Message -> m.subject.sendMessage(message)
is Unit -> Unit
else -> m.reply(message.toString())
else -> m.subject.sendMessage(message.toString())
}
return stub
}
@ -468,9 +469,9 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
@Suppress("REDUNDANT_INLINE_SUSPEND_FUNCTION_TYPE", "UNCHECKED_CAST") // false positive
internal suspend inline fun executeAndQuoteReply(m: M, replier: suspend M.(String) -> Any?): RR {
when (val message = replier(m, m.message.contentToString())) {
is Message -> m.quoteReply(message)
is Message -> m.subject.sendMessage(m.message.quote() + message)
is Unit -> Unit
else -> m.quoteReply(message.toString())
else -> m.subject.sendMessage(m.message.quote() + message.toString())
}
return stub
}

View File

@ -32,6 +32,7 @@ import net.mamoe.mirai.utils.ExternalResource.Companion.sendAsImageTo
import net.mamoe.mirai.utils.ExternalResource.Companion.uploadAsImage
import java.io.File
import java.io.InputStream
import kotlin.DeprecationLevel.ERROR
import kotlin.internal.InlineOnly
@ -359,6 +360,7 @@ public sealed class MessageRecallEvent : BotEvent, AbstractEvent() {
) : MessageRecallEvent(), GroupOperableEvent, Packet {
override val author: NormalMember? get() = group[authorId]
@Suppress("DuplicatedCode")
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
@ -462,6 +464,7 @@ public sealed class ImageUploadEvent : BotEvent, BotActiveEvent, AbstractEvent()
*
* @see MessageEvent
*/
@Suppress("DEPRECATION")
public class FriendMessageEvent constructor(
public override val sender: Friend,
public override val message: MessageChain,
@ -487,6 +490,7 @@ public class FriendMessageEvent constructor(
*
* @see MessageEvent
*/
@Suppress("DEPRECATION")
public class OtherClientMessageEvent constructor(
public override val client: OtherClient,
public override val message: MessageChain,
@ -626,22 +630,30 @@ public interface UserMessageEvent : MessageEvent {
public override val subject: User
}
@Suppress("OverridingDeprecatedMember")
@MiraiInternalApi
public abstract class AbstractMessageEvent : MessageEvent, AbstractEvent() {
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
public override suspend fun reply(message: Message): MessageReceipt<Contact> =
subject.sendMessage(message.asMessageChain())
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(plain)"), ERROR)
public override suspend fun reply(plain: String): MessageReceipt<Contact> =
subject.sendMessage(PlainText(plain).asMessageChain())
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("this.uploadAsImage(subject)"), ERROR)
public override suspend fun ExternalResource.uploadAsImage(): Image = this.uploadAsImage(subject)
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("this.sendAsImageTo(subject)"), ERROR)
public override suspend fun ExternalResource.sendAsImage(): MessageReceipt<Contact> = this.sendAsImageTo(subject)
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
public override suspend fun Image.send(): MessageReceipt<Contact> = this.sendTo(subject)
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
public override suspend fun Message.send(): MessageReceipt<Contact> = this.sendTo(subject)
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
public override suspend fun String.send(): MessageReceipt<Contact> = PlainText(this).sendTo(subject)
// region 引用回复
@ -650,14 +662,40 @@ public abstract class AbstractMessageEvent : MessageEvent, AbstractEvent() {
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
*/
public override suspend fun quoteReply(message: MessageChain): MessageReceipt<Contact> =
reply(this.message.quote() + message)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith(
"subject.sendMessage(message.quote() + msg)",
"net.mamoe.mirai.message.data.MessageSource.Key.quote"
),
ERROR
)
public override suspend fun quoteReply(msg: MessageChain): MessageReceipt<Contact> =
subject.sendMessage(this.message.quote() + msg)
public override suspend fun quoteReply(message: Message): MessageReceipt<Contact> =
reply(this.message.quote() + message)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith(
"subject.sendMessage(message.quote() + msg)",
"net.mamoe.mirai.message.data.MessageSource.Key.quote"
),
ERROR
)
public override suspend fun quoteReply(msg: Message): MessageReceipt<Contact> =
subject.sendMessage(this.message.quote() + msg)
public override suspend fun quoteReply(plain: String): MessageReceipt<Contact> = reply(this.message.quote() + plain)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith(
"subject.sendMessage(message.quote() + plain)",
"net.mamoe.mirai.message.data.MessageSource.Key.quote"
),
ERROR
)
public override suspend fun quoteReply(plain: String): MessageReceipt<Contact> =
subject.sendMessage(this.message.quote() + plain)
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("this.target == bot.id"), ERROR)
public override fun At.isBot(): Boolean = target == bot.id
@ -665,27 +703,76 @@ public abstract class AbstractMessageEvent : MessageEvent, AbstractEvent() {
* 获取图片下载链接
* @return "http://gchat.qpic.cn/gchatpic_new/..."
*/
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("image.queryUrl()", "net.mamoe.mirai.message.data.Image.Key.queryUrl"),
ERROR
)
public override suspend fun Image.url(): String = this@url.queryUrl()
// region 上传图片
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
public override suspend fun uploadImage(image: InputStream): Image = subject.uploadImage(image)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
public override suspend fun uploadImage(image: File): Image = subject.uploadImage(image)
// endregion
// region 发送图片
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.sendImage"),
ERROR,
)
public override suspend fun sendImage(image: InputStream): MessageReceipt<Contact> = subject.sendImage(image)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
public override suspend fun sendImage(image: File): MessageReceipt<Contact> = subject.sendImage(image)
// endregion
// region 上传图片 (扩展)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.uploadAsImage"),
ERROR,
)
public override suspend fun InputStream.uploadAsImage(): Image = uploadAsImage(subject)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.uploadAsImage"),
ERROR,
)
public override suspend fun File.uploadAsImage(): Image = uploadAsImage(subject)
// endregion 上传图片 (扩展)
// region 发送图片 (扩展)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.sendAsImageTo"),
ERROR,
)
public override suspend fun InputStream.sendAsImage(): MessageReceipt<Contact> = sendAsImageTo(subject)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.sendAsImageTo"),
ERROR,
)
public override suspend fun File.sendAsImage(): MessageReceipt<Contact> = sendAsImageTo(subject)
// endregion 发送图片 (扩展)
@ -703,7 +790,7 @@ public abstract class AbstractMessageEvent : MessageEvent, AbstractEvent() {
*
* @see isContextIdenticalWith 判断语境是否相同
*/
@Suppress("DEPRECATION_ERROR")
@Suppress("DEPRECATION")
public interface MessageEvent : Event, Packet, BotEvent, MessageEventExtensions<User, Contact> {
/**
@ -751,8 +838,17 @@ public interface MessageEvent : Event, Packet, BotEvent, MessageEventExtensions<
public val source: OnlineMessageSource.Incoming get() = message.source as OnlineMessageSource.Incoming
}
internal const val DEPRECATED_MESSAGE_EXTENSIONS = """
MessageEvent 的扩展已被弃用.
Kotlin 编译器在编译这些扩展的时候很容易出问题, 而且这些扩展有泛型冲突.
Kotlin 支持多个接收者的函数前 mirai 不提供消息事件里的扩展.
"""
/** 消息事件的扩展函数 */
@Suppress("UNCHECKED_CAST")
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS)
@Suppress("UNCHECKED_CAST", "DEPRECATION")
@PlannedRemoval("2.0-RC")
public interface MessageEventExtensions<out TSender : User, out TSubject : Contact> :
MessageEventPlatformExtensions<TSender, TSubject> {
@ -763,26 +859,33 @@ public interface MessageEventExtensions<out TSender : User, out TSubject : Conta
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
*/
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
@JvmBlockingBridge
public suspend fun reply(message: Message): MessageReceipt<TSubject>
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(plain)"), ERROR)
@JvmBlockingBridge
public suspend fun reply(plain: String): MessageReceipt<TSubject>
// endregion
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("this.uploadAsImage(subject)"), ERROR)
@JvmSynthetic
public suspend fun ExternalResource.uploadAsImage(): Image
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("this.sendAsImageTo(subject)"), ERROR)
@JvmSynthetic
public suspend fun ExternalResource.sendAsImage(): MessageReceipt<TSubject>
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
@JvmSynthetic
public suspend fun Image.send(): MessageReceipt<TSubject>
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
@JvmSynthetic
public suspend fun Message.send(): MessageReceipt<TSubject>
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("subject.sendMessage(message)"), ERROR)
@JvmSynthetic
public suspend fun String.send(): MessageReceipt<TSubject>
@ -792,15 +895,40 @@ public interface MessageEventExtensions<out TSender : User, out TSubject : Conta
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
*/
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith(
"subject.sendMessage(message.quote() + msg)",
"net.mamoe.mirai.message.data.MessageSource.Key.quote"
),
ERROR
)
@JvmBlockingBridge
public suspend fun quoteReply(message: MessageChain): MessageReceipt<TSubject>
public suspend fun quoteReply(msg: MessageChain): MessageReceipt<TSubject>
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith(
"subject.sendMessage(message.quote() + msg)",
"net.mamoe.mirai.message.data.MessageSource.Key.quote"
),
ERROR
)
@JvmBlockingBridge
public suspend fun quoteReply(message: Message): MessageReceipt<TSubject>
public suspend fun quoteReply(msg: Message): MessageReceipt<TSubject>
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith(
"subject.sendMessage(message.quote() + plain)",
"net.mamoe.mirai.message.data.MessageSource.Key.quote"
),
ERROR
)
@JvmBlockingBridge
public suspend fun quoteReply(plain: String): MessageReceipt<TSubject>
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS, ReplaceWith("this.target == bot.id"), ERROR)
@JvmSynthetic
public fun At.isBot(): Boolean
@ -809,16 +937,21 @@ public interface MessageEventExtensions<out TSender : User, out TSubject : Conta
* 获取图片下载链接
* @return "http://gchat.qpic.cn/gchatpic_new/..."
*/
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("image.queryUrl()", "net.mamoe.mirai.message.data.Image.Key.queryUrl"),
ERROR
)
@JvmSynthetic
public suspend fun Image.url(): String
}
/** 一个消息事件在各平台的相关扩展. 请使用 [MessageEventExtensions] */
/**
* 消息事件在 JVM 平台的扩展
* @see MessageEventExtensions
*/
@Deprecated(DEPRECATED_MESSAGE_EXTENSIONS)
@PlannedRemoval("2.0-RC")
public interface MessageEventPlatformExtensions<out TSender : User, out TSubject : Contact> {
public val subject: TSubject
public val sender: TSender
@ -827,33 +960,73 @@ public interface MessageEventPlatformExtensions<out TSender : User, out TSubject
// region 上传图片
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
@JvmBlockingBridge
public suspend fun uploadImage(image: InputStream): Image
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
@JvmBlockingBridge
public suspend fun uploadImage(image: File): Image
// endregion
// region 发送图片
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
@JvmBlockingBridge
public suspend fun sendImage(image: InputStream): MessageReceipt<TSubject>
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("subject.uploadImage(image)", "net.mamoe.mirai.contact.Contact.Companion.uploadImage"),
ERROR,
)
@JvmBlockingBridge
public suspend fun sendImage(image: File): MessageReceipt<TSubject>
// endregion
// region 上传图片 (扩展)
@JvmSynthetic
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.uploadAsImage"),
ERROR,
)
public suspend fun InputStream.uploadAsImage(): Image
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.uploadAsImage"),
ERROR,
)
@JvmSynthetic
public suspend fun File.uploadAsImage(): Image
// endregion 上传图片 (扩展)
// region 发送图片 (扩展)
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.sendAsImageTo"),
ERROR,
)
@JvmSynthetic
public suspend fun InputStream.sendAsImage(): MessageReceipt<TSubject>
@Deprecated(
DEPRECATED_MESSAGE_EXTENSIONS,
ReplaceWith("this.sendAsImageTo(subject)", "net.mamoe.mirai.utils.ExternalResource.Companion.sendAsImageTo"),
ERROR,
)
@JvmSynthetic
public suspend fun File.sendAsImage(): MessageReceipt<TSubject>
// endregion 发送图片 (扩展)

View File

@ -14,6 +14,7 @@ package net.mamoe.mirai.event
import kotlinx.coroutines.*
import net.mamoe.mirai.event.events.MessageEvent
import net.mamoe.mirai.message.data.Message
import net.mamoe.mirai.message.data.MessageSource.Key.quote
import net.mamoe.mirai.message.data.PlainText
import net.mamoe.mirai.message.isContextIdenticalWith
import net.mamoe.mirai.message.nextMessage
@ -25,7 +26,7 @@ import net.mamoe.mirai.utils.MiraiExperimentalApi
*
* 创建的所有事件监听器都会判断发送人信息 ([isContextIdenticalWith]), 监听之后的所有消息.
*
* [selectBuilder] DSL 类似于 [CoroutineScope.subscribeMessages] DSL, 屏蔽了一些 `reply` DSL 以确保类型安全
* [selectBuilder] DSL 类似于 [EventChannel.subscribeMessages] DSL, 屏蔽了一些 `reply` DSL 以确保类型安全
*
* ```kotlin
* reply("开启复读模式")
@ -83,7 +84,7 @@ public suspend inline fun <reified T : MessageEvent> T.selectMessagesUnit(
*
* 创建的所有事件监听器都会判断发送人信息 ([isContextIdenticalWith]), 监听之后的所有消息.
*
* [selectBuilder] DSL 类似于 [CoroutineScope.subscribeMessages] DSL, 屏蔽了一些 `reply` DSL 以确保类型安全
* [selectBuilder] DSL 类似于 [EventChannel.subscribeMessages] DSL, 屏蔽了一些 `reply` DSL 以确保类型安全
*
* ```kotlin
* val value: String = selectMessages {
@ -117,7 +118,7 @@ public suspend inline fun <reified T : MessageEvent, R> T.selectMessages(
/**
* [selectMessages] 时的 DSL 构建器.
*
* 它是特殊化的消息监听 ([CoroutineScope.subscribeMessages]) DSL, 屏蔽了一些 `reply` DSL 以确保作用域安全性
* 它是特殊化的消息监听 ([EventChannel.subscribeMessages]) DSL, 屏蔽了一些 `reply` DSL 以确保作用域安全性
*
* @see MessageSelectBuilderUnit 查看上层 API
*/
@ -222,7 +223,7 @@ public abstract class MessageSelectBuilder<M : MessageEvent, R> @PublishedApi in
/**
* [selectMessagesUnit] [selectMessages] 时的 DSL 构建器.
*
* 它是特殊化的消息监听 ([CoroutineScope.subscribeMessages]) DSL
* 它是特殊化的消息监听 ([EventChannel.subscribeMessages]) DSL
*
* @see MessageSubscribersBuilder 查看上层 API
*/
@ -316,7 +317,7 @@ public abstract class MessageSelectBuilderUnit<M : MessageEvent, R> @PublishedAp
@Suppress("unused", "UNCHECKED_CAST")
public open infix fun MessageSelectionTimeoutChecker.reply(message: Message) {
return timeout(this.timeoutMillis) {
ownerMessagePacket.reply(message)
ownerMessagePacket.subject.sendMessage(message)
Unit as R
}
}
@ -324,7 +325,7 @@ public abstract class MessageSelectBuilderUnit<M : MessageEvent, R> @PublishedAp
@Suppress("unused", "UNCHECKED_CAST")
public open infix fun MessageSelectionTimeoutChecker.reply(message: String) {
return timeout(this.timeoutMillis) {
ownerMessagePacket.reply(message)
ownerMessagePacket.subject.sendMessage(message)
Unit as R
}
}
@ -366,7 +367,7 @@ public abstract class MessageSelectBuilderUnit<M : MessageEvent, R> @PublishedAp
@Suppress("unused", "UNCHECKED_CAST")
public open infix fun MessageSelectionTimeoutChecker.quoteReply(message: Message) {
return timeout(this.timeoutMillis) {
ownerMessagePacket.quoteReply(message)
ownerMessagePacket.subject.sendMessage(ownerMessagePacket.message.quote() + message)
Unit as R
}
}
@ -374,7 +375,7 @@ public abstract class MessageSelectBuilderUnit<M : MessageEvent, R> @PublishedAp
@Suppress("unused", "UNCHECKED_CAST")
public open infix fun MessageSelectionTimeoutChecker.quoteReply(message: String) {
return timeout(this.timeoutMillis) {
ownerMessagePacket.quoteReply(message)
ownerMessagePacket.subject.sendMessage(ownerMessagePacket.message.quote() + message)
Unit as R
}
}
@ -405,8 +406,8 @@ public abstract class MessageSelectBuilderUnit<M : MessageEvent, R> @PublishedAp
Unit -> {
}
is Message -> ownerMessagePacket.reply(result)
else -> ownerMessagePacket.reply(result.toString())
is Message -> ownerMessagePacket.subject.sendMessage(result)
else -> ownerMessagePacket.subject.sendMessage(result.toString())
}
}
@ -415,8 +416,8 @@ public abstract class MessageSelectBuilderUnit<M : MessageEvent, R> @PublishedAp
Unit -> {
}
is Message -> ownerMessagePacket.quoteReply(result)
else -> ownerMessagePacket.quoteReply(result.toString())
is Message -> ownerMessagePacket.subject.sendMessage(ownerMessagePacket.message.quote() + result)
else -> ownerMessagePacket.subject.sendMessage(ownerMessagePacket.message.quote() + result.toString())
}
}