From 7ffbccb9aa47bcaf4c6b582dd54a8cfc05930459 Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Sat, 22 Feb 2020 21:12:10 +0800 Subject: [PATCH] Misc improvements --- .../commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt | 6 ++++-- .../kotlin/net/mamoe/mirai/japt/internal/BlockingBotImpl.kt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt index fb1fc8942..a00d8021d 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt @@ -92,6 +92,8 @@ interface Contact : CoroutineScope { override fun toString(): String } -suspend inline fun Contact.sendMessage(message: Message) = sendMessage(message.toChain()) +@Suppress("UNCHECKED_CAST") +suspend inline fun <C : Contact> C.sendMessage(message: Message): MessageReceipt<C> = + sendMessage(message.toChain()) as? MessageReceipt<C> ?: error("Internal class cast mistake") -suspend inline fun Contact.sendMessage(plain: String) = sendMessage(plain.toMessage()) \ No newline at end of file +suspend inline fun <C : Contact> C.sendMessage(plain: String): MessageReceipt<C> = sendMessage(plain.toMessage()) \ No newline at end of file diff --git a/mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/BlockingBotImpl.kt b/mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/BlockingBotImpl.kt index d589fed7c..ac990c210 100644 --- a/mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/BlockingBotImpl.kt +++ b/mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/BlockingBotImpl.kt @@ -31,6 +31,7 @@ import java.io.OutputStream import java.util.stream.Stream import kotlin.streams.asStream +@UseExperimental(MiraiInternalAPI::class, MiraiExperimentalAPI::class) internal class BlockingBotImpl(private val bot: Bot) : BlockingBot { @MiraiInternalAPI override fun getAccount(): BotAccount = bot.account @@ -51,7 +52,6 @@ internal class BlockingBotImpl(private val bot: Bot) : BlockingBot { override fun getFriend(id: Long): BlockingQQ = bot.getFriend(id).blocking() override fun queryGroupList(): Stream<Long> = runBlocking { bot.queryGroupList() }.asStream() - @UseExperimental(MiraiInternalAPI::class) override fun getGroupList(): List<BlockingGroup> = bot.groups.delegate.toList().map { it.blocking() } override fun queryGroupInfo(code: Long): GroupInfo = runBlocking { bot.queryGroupInfo(code) }