Parcourir la source

Fix forward message when wrapped in MessageChain

Him188 il y a 5 ans
Parent
commit
5a0b0e494e
1 fichiers modifiés avec 7 ajouts et 5 suppressions
  1. 7 5
      mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt

+ 7 - 5
mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt

@@ -129,15 +129,17 @@ internal class GroupImpl(
                 return sendMessageImpl(message.singleOrNull() ?: error("ForwardMessage must be standalone"), true)
             }
         }
-        if (message is ForwardMessage) {
-            check(message.nodeList.size < 200) {
+
+        val forward = message as? ForwardMessage ?: message.castOrNull<MessageChain>()?.findIsInstance<ForwardMessage>()
+        if (forward != null) {
+            check(forward.nodeList.size < 200) {
                 throw MessageTooLargeException(
-                    this, message, message,
-                    "ForwardMessage allows up to 200 nodes, but found ${message.nodeList.size}"
+                    this, forward, forward,
+                    "ForwardMessage allows up to 200 nodes, but found ${forward.nodeList.size}"
                 )
             }
 
-            return MiraiImpl.lowLevelSendGroupLongOrForwardMessage(bot, this.id, message.nodeList, false, message)
+            return MiraiImpl.lowLevelSendGroupLongOrForwardMessage(bot, this.id, forward.nodeList, false, forward)
         }
 
         val isLongOrForward = message is LongMessage || message is ForwardMessageInternal