From 18126b1fda9f3305cf7299bd214bcc415ee379ea Mon Sep 17 00:00:00 2001 From: Simplxs Date: Wed, 21 Feb 2024 02:16:16 +0800 Subject: [PATCH] fix bug --- .../java/protobuf/message/MessageContent.kt | 2 +- .../main/java/protobuf/message/MessageHead.kt | 2 + .../protobuf/message/element/CommonElement.kt | 4 +- .../protobuf/message/element/TextElement.kt | 48 ++++++++++--------- .../fuqiuluo/qqinterface/servlet/MsgSvc.kt | 13 ++--- .../action/handlers/SendForwardMessage.kt | 6 ++- 6 files changed, 40 insertions(+), 35 deletions(-) diff --git a/protobuf/src/main/java/protobuf/message/MessageContent.kt b/protobuf/src/main/java/protobuf/message/MessageContent.kt index 3bd4e3b..8cf172a 100644 --- a/protobuf/src/main/java/protobuf/message/MessageContent.kt +++ b/protobuf/src/main/java/protobuf/message/MessageContent.kt @@ -25,6 +25,6 @@ data class ForwardHead( @ProtoNumber(1) val u1: Int? = null, @ProtoNumber(2) val u2: Int? = null, @ProtoNumber(3) val u3: Int? = null, - @ProtoNumber(4) val u4: String? = null, + @ProtoNumber(4) val ub641: String? = null, @ProtoNumber(5) val Avatar: String? = null ) diff --git a/protobuf/src/main/java/protobuf/message/MessageHead.kt b/protobuf/src/main/java/protobuf/message/MessageHead.kt index 2c0f70c..5f57c64 100644 --- a/protobuf/src/main/java/protobuf/message/MessageHead.kt +++ b/protobuf/src/main/java/protobuf/message/MessageHead.kt @@ -20,6 +20,7 @@ data class MessageHead( @Serializable data class MessageForward( @ProtoNumber(6) val friendName: String? = null, + @ProtoNumber(11) val u1: Int? = null, ) @Serializable @@ -28,4 +29,5 @@ data class GroupInfo( @ProtoNumber(4) val memberCard: String? = null, @ProtoNumber(5) val u1: Int? = null, @ProtoNumber(7) val groupName: String? = null, + @ProtoNumber(10) val u2: Int? = null, ) \ No newline at end of file diff --git a/protobuf/src/main/java/protobuf/message/element/CommonElement.kt b/protobuf/src/main/java/protobuf/message/element/CommonElement.kt index a72bac4..7111d02 100644 --- a/protobuf/src/main/java/protobuf/message/element/CommonElement.kt +++ b/protobuf/src/main/java/protobuf/message/element/CommonElement.kt @@ -8,6 +8,4 @@ data class CommonElement( @ProtoNumber(1) val type: Int? = null, @ProtoNumber(2) val data: ByteArray? = null, @ProtoNumber(3) val u1: Int? = null, -) - - +) \ No newline at end of file diff --git a/protobuf/src/main/java/protobuf/message/element/TextElement.kt b/protobuf/src/main/java/protobuf/message/element/TextElement.kt index 0fce78b..fec3285 100644 --- a/protobuf/src/main/java/protobuf/message/element/TextElement.kt +++ b/protobuf/src/main/java/protobuf/message/element/TextElement.kt @@ -11,28 +11,30 @@ data class TextElement( @ProtoNumber(4) val attr7Buf: ByteArray? = null, @ProtoNumber(11) val buf: ByteArray? = null, @ProtoNumber(12) val pbReserve: TextResvAttr? = null, -) +) { + companion object { + @Serializable + data class TextResvAttr( + @ProtoNumber(1) val wording: ByteArray? = null, + @ProtoNumber(2) val textAnalysisResult: Int? = null, + @ProtoNumber(3) val atType: Int? = null, + @ProtoNumber(4) val atMemberUin: Long? = null, + @ProtoNumber(5) val atMemberTinyid: Long? = null, + @ProtoNumber(6) val atChannelInfo: ExtChannelInfo? = null, + @ProtoNumber(7) val atRoleInfo: ExtRoleInfo? = null, + ) -@Serializable -data class TextResvAttr( - @ProtoNumber(1) val wording: ByteArray? = null, - @ProtoNumber(2) val textAnalysisResult: Int? = null, - @ProtoNumber(3) val atType: Int? = null, - @ProtoNumber(4) val atMemberUin: Long? = null, - @ProtoNumber(5) val atMemberTinyid: Long? = null, - @ProtoNumber(6) val atChannelInfo: ExtChannelInfo? = null, - @ProtoNumber(7) val atRoleInfo: ExtRoleInfo? = null, -) + @Serializable + data class ExtChannelInfo( + @ProtoNumber(1) val guildId: Long? = null, + @ProtoNumber(2) val channelId: Long? = null, + ) -@Serializable -data class ExtChannelInfo( - @ProtoNumber(1) val guildId: Long? = null, - @ProtoNumber(2) val channelId: Long? = null, -) - -@Serializable -data class ExtRoleInfo( - @ProtoNumber(1) val id: Long? = null, - @ProtoNumber(2) val info: ByteArray? = null, - @ProtoNumber(3) val flag: Int? = null, -) \ No newline at end of file + @Serializable + data class ExtRoleInfo( + @ProtoNumber(1) val id: Long? = null, + @ProtoNumber(2) val info: ByteArray? = null, + @ProtoNumber(3) val flag: Int? = null, + ) + } +} \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/MsgSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/MsgSvc.kt index efa838d..baee49a 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/MsgSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/MsgSvc.kt @@ -285,10 +285,11 @@ internal object MsgSvc : BaseSvc() { ProtoBuf.encodeToByteArray(req) ) ?: return Result.failure(Exception("unable to get multi message")) val rsp = ProtoBuf.decodeFromByteArray(buffer.slice(4)) - val msg = DeflateTools.ungzip( + val zippedPayload = DeflateTools.ungzip( rsp.recvResult?.payload ?: return Result.failure(Exception("unable to get multi message")) ) - val payload = ProtoBuf.decodeFromByteArray(msg) + LogCenter.log(zippedPayload.toHexString(), Level.DEBUG) + val payload = ProtoBuf.decodeFromByteArray(zippedPayload) payload.action?.forEach { if (it.command == "MultiMsg") { return Result.success(it.data?.body?.map { msg -> @@ -297,15 +298,15 @@ internal object MsgSvc : BaseSvc() { MessageDetail( time = msg.content?.msgTime?.toInt() ?: 0, msgType = MessageHelper.obtainDetailTypeByMsgType(chatType), - msgId = MessageHelper.generateMsgIdHash(chatType, msg.content!!.msgViaRandom), + msgId = 0, // MessageHelper.generateMsgIdHash(chatType, msg.content!!.msgViaRandom), msgViaRandom 为空 realId = msg.content!!.msgSeq.toInt(), sender = MessageSender( msg.head?.peer ?: 0, - msg.head!!.groupInfo!!.memberCard ?: "", + msg.head?.groupInfo?.memberCard?.ifEmpty { msg.head?.forward?.friendName } ?: "", "unknown", 0, - msg.head!!.peerUid!!, - msg.head!!.peerUid!! + msg.head?.peerUid ?: "u_", + msg.head?.peerUid?: "u_" ), message = msg.body?.rich?.elements?.toSegments(chatType, msg.head?.peer.toString(), "0") ?.toListMap() ?: emptyList(), diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SendForwardMessage.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SendForwardMessage.kt index b653390..4476965 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SendForwardMessage.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SendForwardMessage.kt @@ -124,7 +124,7 @@ internal object SendForwardMessage : IActionHandler() { u1 = 0, u2 = 0, u3 = if (record.chatType == MsgConstant.KCHATTYPEGROUP) 0 else 2, - u4 = "", + ub641 = "", Avatar = "" ) ), @@ -163,7 +163,9 @@ internal object SendForwardMessage : IActionHandler() { } else if (data.containsKey("content")) { PushMsgBody( head = MessageHead( + peer = data["uin"]?.asLong ?: TicketSvc.getUin().toLong(), peerUid = data["uid"]?.asString ?: TicketSvc.getUid() + ), content = MessageContent( msgType = 529, @@ -177,7 +179,7 @@ internal object SendForwardMessage : IActionHandler() { u1 = 0, u2 = 0, u3 = 2, - u4 = "", + ub641 = "", Avatar = "" ) ),