From bd28b0f7f7e29b22ddee9dd65564b1a4d8f32069 Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Fri, 17 Nov 2023 16:02:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=82=B0=E3=83=AB=E3=83=BC=E3=83=97?= =?UTF-8?q?=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E3=81=8C=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=8F=E9=80=9A=E7=9F=A5=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/listener/PrimitiveListener.kt | 65 ++++++++++++++----- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt index 26c8d24..2568b71 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/PrimitiveListener.kt @@ -47,11 +47,14 @@ internal object PrimitiveListener { if ( !pb.has(1, 3) || !pb.has(1, 2) - || !pb.has(1, 2, 2) +// || !pb.has(1, 2, 2) || !pb.has(1, 2, 6) ) return val msgType = pb[1, 2, 1].asInt - val subType = pb[1, 2, 2].asInt + var subType = 0 + if (pb.has(1, 2, 3)) { + subType = pb[1, 2, 2].asInt + } val msgTime = pb[1, 2, 6].asLong when(msgType) { 33 -> onGroupMemIncreased(msgTime, pb) @@ -63,7 +66,11 @@ internal object PrimitiveListener { } 732 -> when(subType) { 12 -> onGroupBan(msgTime, pb) - 17 -> onGroupRecall(msgTime, pb) + 17 -> { + onGroupRecall(msgTime, pb) + // invite + onGroupMemIncreased(msgTime, pb) + } 20 -> onGroupPoke(msgTime, pb) } } @@ -155,21 +162,47 @@ internal object PrimitiveListener { } private suspend fun onGroupMemIncreased(time: Long, pb: ProtoMap) { - val groupCode = pb[1, 3, 2, 1].asULong - val targetUid = pb[1, 3, 2, 3].asUtf8String - val type = pb[1, 3, 2, 4].asInt - val operation = ContactHelper.getUinByUidAsync(pb[1, 3, 2, 5].asUtf8String).toLong() - val target = ContactHelper.getUinByUidAsync(targetUid).toLong() + when(pb[1, 2, 1].asInt) { + 732 -> { + // invite + val groupCode = pb[1, 3, 2, 4].asULong + lateinit var target: String + lateinit var operation: String + pb[1, 3, 2, 26, 7].asList + .value + .forEach { + val value = it[2].asUtf8String + when (it[1].asUtf8String) { + "invitee" -> operation = value + "invitor" -> target = value + } + } + val type = 131 + LogCenter.log("群成员增加($groupCode): $target, type = $type") - LogCenter.log("群成员增加($groupCode): $target, type = $type") + if(!GlobalEventTransmitter.GroupNoticeTransmitter + .transGroupMemberNumChanged(time, target.toLong(), groupCode, operation.toLong(), NoticeType.GroupMemIncrease, NoticeSubType.Invite)) { + LogCenter.log("群成员增加推送失败!", Level.WARN) + } + } + 33 -> { + // approve + val groupCode = pb[1, 3, 2, 1].asULong + val targetUid = pb[1, 3, 2, 3].asUtf8String + val type = pb[1, 3, 2, 4].asInt + val operation = ContactHelper.getUinByUidAsync(pb[1, 3, 2, 5].asUtf8String).toLong() + val target = ContactHelper.getUinByUidAsync(targetUid).toLong() + LogCenter.log("群成员增加($groupCode): $target, type = $type") - if(!GlobalEventTransmitter.GroupNoticeTransmitter - .transGroupMemberNumChanged(time, target, groupCode, operation, NoticeType.GroupMemIncrease, when(type) { - 130 -> NoticeSubType.Approve - 131 -> NoticeSubType.Invite - else -> NoticeSubType.Approve - })) { - LogCenter.log("群成员增加推送失败!", Level.WARN) + if(!GlobalEventTransmitter.GroupNoticeTransmitter + .transGroupMemberNumChanged(time, target, groupCode, operation, NoticeType.GroupMemIncrease, when(type) { + 130 -> NoticeSubType.Approve + 131 -> NoticeSubType.Invite + else -> NoticeSubType.Approve + })) { + LogCenter.log("群成员增加推送失败!", Level.WARN) + } + } } }