Browse Source

Fix message results in internal impl

Him188 5 years ago
parent
commit
e2554f0ea6

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

@@ -116,10 +116,12 @@ internal class GroupImpl(
 
         val chain = broadcastGroupMessagePreSendEvent(message)
 
-        val (finalMessage, result) = sendMessageImpl(message, chain, false)
+        val result = sendMessageImpl(message, chain, false)
 
-        logMessageSent(finalMessage)
-        GroupMessagePostSendEvent(this, finalMessage, result.exceptionOrNull(), result.getOrNull()).broadcast()
+        // logMessageSent(result.getOrNull()?.source?.plus(chain) ?: chain) // log with source
+        logMessageSent(chain)
+
+        GroupMessagePostSendEvent(this, chain, result.exceptionOrNull(), result.getOrNull()).broadcast()
 
         return result.getOrThrow()
     }

+ 5 - 3
mirai-core/src/commonMain/kotlin/contact/GroupSendMessageImpl.kt

@@ -7,6 +7,8 @@
  * https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
+@file:Suppress("RESULT_CLASS_IN_RETURN_TYPE") // inline ABI not stable but we don't care about internal ABI
+
 package net.mamoe.mirai.internal.contact
 
 import net.mamoe.mirai.contact.Contact
@@ -33,7 +35,7 @@ internal suspend fun GroupImpl.sendMessageImpl(
     originalMessage: Message,
     transformedMessage: Message,
     forceAsLongMessage: Boolean,
-): Pair<MessageChain, Result<MessageReceipt<Group>>> {
+): Result<MessageReceipt<Group>> { // Result<MessageReceipt<Group>>
     val chain = transformedMessage
         .transformSpecialMessages(this)
         .convertToLongMessageIfNeeded(originalMessage, forceAsLongMessage, this)
@@ -44,7 +46,7 @@ internal suspend fun GroupImpl.sendMessageImpl(
         updateFriendImageForGroupMessage(image)
     }
 
-    return chain to kotlin.runCatching {
+    return kotlin.runCatching {
         sendMessagePacket(
             originalMessage,
             chain,
@@ -109,7 +111,7 @@ private suspend fun GroupImpl.sendMessagePacket(
             .sendAndExpect<MessageSvcPbSendMsg.Response>().let { resp ->
                 if (resp is MessageSvcPbSendMsg.Response.MessageTooLarge) {
                     if (allowResendAsLongMessage) {
-                        return sendMessageImpl(originalMessage, finalMessage, true).second.getOrThrow()
+                        return sendMessageImpl(originalMessage, finalMessage, true).getOrThrow()
                     } else {
                         throw MessageTooLargeException(
                             group,