Shamrock: 修复群消息撤回事件群号获取错误

This commit is contained in:
owo233 2023-12-10 01:57:38 +08:00
parent 4dafa75944
commit 1d0a0731fb
No known key found for this signature in database
GPG Key ID: 5D538586B03AFDAB

View File

@ -452,17 +452,19 @@ internal object PrimitiveListener {
}
private suspend fun onGroupRecall(time: Long, pb: ProtoMap) {
val groupCode = pb[1, 1, 1].asULong
val readPacket = ByteReadPacket(pb[1, 3, 2].asByteArray)
var detail = pb[1, 3, 2]
if (detail !is ProtoMap) {
try {
/**
* 真是不理解这个傻呗设计有些群是正常的Protobuf有些群要去掉7字节
*/
val detail = if (readPacket.readBuf32Long() == groupCode) {
val readPacket = ByteReadPacket(detail.asByteArray)
readPacket.discardExact(4)
readPacket.discardExact(1)
ProtoUtils.decodeFromByteArray(readPacket.readBytes(readPacket.readShort().toInt()))
} else pb[1, 3, 2]
detail = ProtoUtils.decodeFromByteArray(readPacket.readBytes(readPacket.readShort().toInt()))
readPacket.release()
} catch (e: Exception) {
LogCenter.log("onGroupRecall error: ${e.stackTraceToString()}", Level.WARN)
}
}
val groupCode = detail[4].asULong
val operatorUid = detail[11, 1].asUtf8String
val targetUid = detail[11, 3, 6].asUtf8String
val msgSeq = detail[11, 3, 1].asLong
@ -482,9 +484,6 @@ internal object PrimitiveListener {
) {
LogCenter.log("群消息撤回推送失败!", Level.WARN)
}
} finally {
readPacket.release()
}
}
private suspend fun onGroupApply(time: Long, pb: ProtoMap) {