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) }