diff --git a/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api b/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api index c777be37a..866d647c9 100644 --- a/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api +++ b/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api @@ -539,6 +539,7 @@ public class net/mamoe/mirai/contact/SendMessageFailedException : java/lang/Runt public final class net/mamoe/mirai/contact/SendMessageFailedException$Reason : java/lang/Enum { public static final field BOT_MUTED Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; + public static final field GROUP_CHAT_LIMITED Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; public static final field MESSAGE_TOO_LARGE Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; public static fun valueOf (Ljava/lang/String;)Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; public static fun values ()[Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; diff --git a/binary-compatibility-validator/api/binary-compatibility-validator.api b/binary-compatibility-validator/api/binary-compatibility-validator.api index 272d1d96a..dc1438c42 100644 --- a/binary-compatibility-validator/api/binary-compatibility-validator.api +++ b/binary-compatibility-validator/api/binary-compatibility-validator.api @@ -539,6 +539,7 @@ public class net/mamoe/mirai/contact/SendMessageFailedException : java/lang/Runt public final class net/mamoe/mirai/contact/SendMessageFailedException$Reason : java/lang/Enum { public static final field BOT_MUTED Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; + public static final field GROUP_CHAT_LIMITED Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; public static final field MESSAGE_TOO_LARGE Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; public static fun valueOf (Ljava/lang/String;)Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; public static fun values ()[Lnet/mamoe/mirai/contact/SendMessageFailedException$Reason; diff --git a/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt b/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt index 3fb9c8aca..6e5257483 100644 --- a/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt +++ b/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt @@ -85,5 +85,10 @@ public open class SendMessageFailedException @MiraiInternalApi constructor( * 机器人被禁言 */ BOT_MUTED, + + /** + * 达到群每分钟发言次数限制 + */ + GROUP_CHAT_LIMITED, } } \ No newline at end of file diff --git a/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt b/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt index f67c897e8..109e08627 100644 --- a/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt +++ b/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt @@ -174,6 +174,11 @@ internal abstract class SendMessageHandler { when (resp.resultType) { 120 -> if (contact is Group) throw BotIsBeingMutedException(contact, originalMessage) 121 -> if (AtAll in finalMessage) throw IllegalStateException("Send message to $contact failed, reached maximum AtAll times limit.") + 299 -> if (contact is Group) throw SendMessageFailedException( + contact, + SendMessageFailedException.Reason.GROUP_CHAT_LIMITED, + originalMessage + ) } } check(resp is MessageSvcPbSendMsg.Response.SUCCESS) {