From e1004f12c96f4b3183ae387083821d92b2cd9974 Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 15 Apr 2020 18:29:17 +0800 Subject: [PATCH] Fix #220 --- .../net/mamoe/mirai/qqandroid/message/convension.kt | 12 ++++++++++-- .../net/mamoe/mirai/qqandroid/utils/byteArrays.kt | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt index 626814323..45d2b80e1 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt @@ -273,13 +273,21 @@ internal fun List.joinToMessageChain(groupIdOrZero: Long, bot: B } element.lightApp != null -> { val content = runWithBugReport("解析 lightApp", { element.lightApp.data.toUHexString() }) { - MiraiPlatformUtils.unzip(element.lightApp.data, 1).encodeToString() + when (element.lightApp.data[0].toInt()) { + 0 -> element.lightApp.data.encodeToString(offset = 1) + 1 -> MiraiPlatformUtils.unzip(element.lightApp.data, 1).encodeToString() + else -> error("unknown compression flag=${element.lightApp.data[0]}") + } } message.add(LightApp(content)) } element.richMsg != null -> { val content = runWithBugReport("解析 richMsg", { element.richMsg.template1.toUHexString() }) { - MiraiPlatformUtils.unzip(element.richMsg.template1, 1).encodeToString() + when (element.richMsg.template1[0].toInt()) { + 0 -> element.richMsg.template1.encodeToString(offset = 1) + 1 -> MiraiPlatformUtils.unzip(element.richMsg.template1, 1).encodeToString() + else -> error("unknown compression flag=${element.richMsg.template1[0]}") + } } when (element.richMsg.serviceId) { // 5: 使用微博长图转换功能分享到QQ群 diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt index d0c1df07a..9c56fddf8 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt @@ -93,7 +93,8 @@ internal fun UByteArray.toUHexString(separator: String = " ", offset: Int = 0, l } @Suppress("NOTHING_TO_INLINE") -internal inline fun ByteArray.encodeToString(charset: Charset = Charsets.UTF_8): String = String(this, charset = charset) +internal inline fun ByteArray.encodeToString(offset: Int = 0, charset: Charset = Charsets.UTF_8): String = + String(this, charset = charset, offset = offset) @PublishedApi internal inline fun ByteArray.toReadPacket(offset: Int = 0, length: Int = this.size - offset) =