diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberMute.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberMute.kt index bc472a2d5..c929d9cbb 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberMute.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/MemberMute.kt @@ -11,6 +11,8 @@ import net.mamoe.mirai.contact.Group import net.mamoe.mirai.contact.Member import net.mamoe.mirai.getGroup import net.mamoe.mirai.qqAccount +import net.mamoe.mirai.utils.io.debugPrintIfFail +import net.mamoe.mirai.utils.io.readRemainingBytes import net.mamoe.mirai.utils.io.toUHexString // region mute @@ -76,10 +78,12 @@ sealed class UnmuteEvent : EventOfMute() { // endregion -internal object Unknown0x02DCPacketFlag0x0EMaybeMutePacket : EventOfMute() { +internal class Unknown0x02DCPacketFlag0x0EMaybeMutePacket( + val remaining: ByteArray +) : EventOfMute() { override val operator: Member get() = error("Getting a field from Unknown0x02DCPacketFlag0x0EMaybeMutePacket") override val group: Group get() = error("Getting a field from Unknown0x02DCPacketFlag0x0EMaybeMutePacket") - override fun toString(): String = "Unknown0x02DCPacketFlag0x0EMaybeMutePacket" + override fun toString(): String = "Unknown0x02DCPacketFlag0x0EMaybeMutePacket(remaining=${remaining.toUHexString()})" } sealed class EventOfMute : EventPacket { @@ -123,10 +127,10 @@ internal object MemberMuteEventPacketParserAndHandler : KnownEventParserAndHandl 0x0Eu -> { //00 00 00 0E 00 08 00 02 00 01 00 // 0A 00 04 01 00 00 00 35 DB 60 A2 11 00 3E 08 07 20 A2 C1 ED AE 03 5A 34 08 A2 FF 8C F0 03 1A 19 08 F4 0E 10 FE 8C D3 EF 05 18 84 A1 F8 F9 06 20 00 28 00 30 A2 FF 8C F0 03 2A 0D 08 00 12 09 08 F4 0E 10 00 18 01 20 00 30 00 38 00 - Unknown0x02DCPacketFlag0x0EMaybeMutePacket + Unknown0x02DCPacketFlag0x0EMaybeMutePacket(readRemainingBytes()) } - 0x11u -> { + 0x11u -> debugPrintIfFail("解析禁言包(0x02DC)时"){ // 猜测这个失败是撤回?? discardExact(15) discardExact(2) val group = bot.getGroup(readUInt()) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt index 9a0917bd9..49a78aa06 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/io/InputUtils.kt @@ -67,7 +67,7 @@ fun Input.readTLVMap(expectingEOF: Boolean = false, tagSize: Int = 1): MutableMa 2 -> readUShort() else -> error("Unsupported tag size: $tagSize") } - } catch (e: EOFException) { + } catch (e: Exception) { // java.nio.BufferUnderflowException is not a EOFException... if (expectingEOF) { return map } @@ -79,7 +79,7 @@ fun Input.readTLVMap(expectingEOF: Boolean = false, tagSize: Int = 1): MutableMa check(!map.containsKey(type.toUInt())) { "Count not readTLVMap: duplicated key 0x${type.toUInt().toUHexString("")}. " + "map=$map" + - ", duplicating value=${this.readUShortLVByteArray()}" + + ", duplicating value=${this.readUShortLVByteArray().toUHexString()}" + ", remaining=" + if (expectingEOF) this.readBytes().toUHexString() else "[Not expecting EOF]" } try {