diff --git a/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt b/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt index 196957e0c..2c3f10f81 100644 --- a/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt +++ b/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt @@ -255,6 +255,9 @@ internal abstract class SendMessageHandler { } /** + * 处理需要 `suspend` 操作的消息转换. 这个转换只会在发送消息时进行, 而不会在处理合并转发 [net.mamoe.mirai.internal.network.protocol.packet.chat.calculateValidationData] 等其他操作时进行. + * 在发包前还会进行最后的 [net.mamoe.mirai.internal.message.toRichTextElems] 转换, 这个转换会为所有操作使用. + * * - [ForwardMessage] -> [ForwardMessageInternal] (by uploading through highway) * - ... any others for future */ @@ -284,12 +287,9 @@ internal suspend fun SendMessageHandler.transformSpecialMessage ) } - fun processDice(dice: Dice): MarketFaceImpl { - return MarketFaceImpl(dice.toJceStruct()) - } + // loses MessageMetadata and other message types but fine for now. return message.takeSingleContent()?.let { processForwardMessage(it) }?.toMessageChain() - ?: message.takeSingleContent()?.let { processDice(it) }?.toMessageChain() ?: message.toMessageChain() } diff --git a/mirai-core/src/commonMain/kotlin/message/messageToElems.kt b/mirai-core/src/commonMain/kotlin/message/messageToElems.kt index 6b194c26c..15f02fb81 100644 --- a/mirai-core/src/commonMain/kotlin/message/messageToElems.kt +++ b/mirai-core/src/commonMain/kotlin/message/messageToElems.kt @@ -194,6 +194,7 @@ internal fun MessageChain.toRichTextElems( } } } + is Dice -> transformOneMessage(MarketFaceImpl(currentMessage.toJceStruct())) is MarketFace -> { if (currentMessage is MarketFaceImpl) { elements.add(ImMsgBody.Elem(marketFace = currentMessage.delegate))