diff --git a/mirai-core/src/commonMain/kotlin/message/ReceiveMessageHandler.kt b/mirai-core/src/commonMain/kotlin/message/ReceiveMessageHandler.kt index c9f6a3ab0..f968140ac 100644 --- a/mirai-core/src/commonMain/kotlin/message/ReceiveMessageHandler.kt +++ b/mirai-core/src/commonMain/kotlin/message/ReceiveMessageHandler.kt @@ -24,6 +24,7 @@ import net.mamoe.mirai.internal.message.source.* import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm import net.mamoe.mirai.message.data.* +import net.mamoe.mirai.utils.structureToString import net.mamoe.mirai.utils.toLongUnsigned /** @@ -104,6 +105,24 @@ private fun List.toMessageChain( onlineSource: Boolean?, messageSourceKind: MessageSourceKind, facade: MessageProtocolFacade = MessageProtocolFacade, +): MessageChain { + try { + return toMessageChainImpl(bot, groupIdOrZero, onlineSource, messageSourceKind, facade) + } catch (e: Exception) { + throw IllegalStateException( + "Failed to transform internal message to facade message, msg=${this@toMessageChain.structureToString()}", + e + ) + } +} + + +private fun List.toMessageChainImpl( + bot: Bot, + groupIdOrZero: Long, + onlineSource: Boolean?, + messageSourceKind: MessageSourceKind, + facade: MessageProtocolFacade = MessageProtocolFacade, ): MessageChain { val messageList = this