diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt index 92da7ea5e..7fc80e263 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt @@ -169,11 +169,16 @@ internal fun buildRawUniPacket( if (signDataPacket != BRP_STUB && (extraData != BRP_STUB && extraData.remaining != 0L)) { throw IllegalStateException("$commandName cmd needs sign but has extraData!") } + if (encryptMethod === PacketEncryptType.NoEncrypt) { writeUniPacket( commandName, client.outgoingPacketSessionId, - signDataPacket, + if (signDataPacket == BRP_STUB) { + extraData + } else { + signDataPacket + }, (client.qimei16?.encodeToByteArray() ?: EMPTY_BYTE_ARRAY) ) { writeFully(bodyBytes) @@ -183,7 +188,11 @@ internal fun buildRawUniPacket( writeUniPacket( commandName, client.outgoingPacketSessionId, - signDataPacket, + if (signDataPacket == BRP_STUB) { + extraData + } else { + signDataPacket + }, (client.qimei16?.encodeToByteArray() ?: EMPTY_BYTE_ARRAY) ) { writeFully(bodyBytes)