From 56fc3aa88b5b5f9eefff5ab45f431774295d61ca Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 25 Apr 2020 13:14:57 +0800 Subject: [PATCH] Add checks for empty message being sent --- .../kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt | 2 ++ .../kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt | 1 + .../kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt | 3 +++ .../src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt | 1 + .../src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt | 1 + .../src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt | 1 + .../src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt | 1 + .../src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt | 1 + 8 files changed, 11 insertions(+) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt index d2012c9be..185dd751e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt @@ -25,6 +25,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.OfflineFriendImage +import net.mamoe.mirai.message.data.isContentNotEmpty import net.mamoe.mirai.qqandroid.QQAndroidBot import net.mamoe.mirai.qqandroid.network.highway.postImage import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Cmd0x352 @@ -72,6 +73,7 @@ internal class FriendImpl( @JvmSynthetic @Suppress("DuplicatedCode") override suspend fun sendMessage(message: Message): MessageReceipt { + require(message.isContentNotEmpty()) { "message is empty" } return sendMessageImpl(this, message).also { logMessageSent(message) } diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt index 55a63170b..90d2ec27b 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt @@ -275,6 +275,7 @@ internal class GroupImpl( @OptIn(MiraiExperimentalAPI::class, LowLevelAPI::class) @JvmSynthetic override suspend fun sendMessage(message: Message): MessageReceipt { + require(message.isContentNotEmpty()) { "message is empty" } check(!isBotMuted) { throw BotIsBeingMutedException(this) } return sendMessageImpl(message, false).also { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt index 77a8c3d92..b63113af0 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt @@ -25,6 +25,7 @@ import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.OfflineFriendImage import net.mamoe.mirai.message.data.asMessageChain +import net.mamoe.mirai.message.data.isContentNotEmpty import net.mamoe.mirai.qqandroid.QQAndroidBot import net.mamoe.mirai.qqandroid.message.MessageSourceToTempImpl import net.mamoe.mirai.qqandroid.network.protocol.data.jce.StTroopMemberInfo @@ -54,6 +55,8 @@ internal class MemberImpl constructor( @JvmSynthetic override suspend fun sendMessage(message: Message): MessageReceipt { + require(message.isContentNotEmpty()) { "message is empty" } + return (this.asFriendOrNull()?.sendMessageImpl(this, message) ?: sendMessageImpl(message)) .also { logMessageSent(message) } } 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 fb106372e..370ce8bc1 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 @@ -63,6 +63,7 @@ abstract class Contact : CoroutineScope, ContactJavaFriendlyAPI(), ContactOrBot * @throws EventCancelledException 当发送消息事件被取消时抛出 * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 * @throws MessageTooLargeException 当消息过长时抛出 + * @throws IllegalArgumentException 当消息内容为空时抛出 (详见 [Message.isContentEmpty]) * * @return 消息回执. 可 [引用回复][MessageReceipt.quote](仅群聊)或 [撤回][MessageReceipt.recall] 这条消息. */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt index 8a616fb57..21ffab24e 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt @@ -63,6 +63,7 @@ abstract class Friend : QQ(), CoroutineScope { * @throws EventCancelledException 当发送消息事件被取消时抛出 * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 * @throws MessageTooLargeException 当消息过长时抛出 + * @throws IllegalArgumentException 当消息内容为空时抛出 (详见 [Message.isContentEmpty]) * * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt index 3f876a254..c1e07b786 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt @@ -145,6 +145,7 @@ abstract class Group : Contact(), CoroutineScope { * @throws EventCancelledException 当发送消息事件被取消时抛出 * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 * @throws MessageTooLargeException 当消息过长时抛出 + * @throws IllegalArgumentException 当消息内容为空时抛出 (详见 [Message.isContentEmpty]) * * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt index 3c5685c2e..3a86bad66 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt @@ -139,6 +139,7 @@ abstract class Member : MemberJavaFriendlyAPI() { * @throws EventCancelledException 当发送消息事件被取消时抛出 * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 * @throws MessageTooLargeException 当消息过长时抛出 + * @throws IllegalArgumentException 当消息内容为空时抛出 (详见 [Message.isContentEmpty]) * * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt index fd8456a7b..7db56e1cc 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt @@ -64,6 +64,7 @@ abstract class User : Contact(), CoroutineScope { * @throws EventCancelledException 当发送消息事件被取消时抛出 * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 * @throws MessageTooLargeException 当消息过长时抛出 + * @throws IllegalArgumentException 当消息内容为空时抛出 (详见 [Message.isContentEmpty]) * * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) */