From 6107ec6ffbf7fa02186f706c2514ba376530763b Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Sun, 17 Dec 2023 11:40:05 +0800 Subject: [PATCH] `Shamrock`: fix #156 --- .../action/handlers/SetFriendAddRequest.kt | 2 +- .../action/handlers/SetGroupAddRequest.kt | 4 +-- .../service/listener/PrimitiveListener.kt | 26 ++++++++++++------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetFriendAddRequest.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetFriendAddRequest.kt index 22f177b..c7705c3 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetFriendAddRequest.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetFriendAddRequest.kt @@ -25,7 +25,7 @@ internal object SetFriendAddRequest: IActionHandler() { if (ts.toString().length < 13) { // time but not seq, query seq again val reqs = FriendSvc.requestFriendSystemMsgNew(20, 0, 0, 1) - val req = reqs?.first { + val req = reqs?.firstOrNull { it.msg_time.get() == ts } // 好友请求seq貌似就是time*1000,查不到直接*1000 diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetGroupAddRequest.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetGroupAddRequest.kt index c348be2..c30a15b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetGroupAddRequest.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/SetGroupAddRequest.kt @@ -27,10 +27,10 @@ internal object SetGroupAddRequest: IActionHandler() { var reqs = GroupSvc.requestGroupSystemMsgNew(20, 1) val riskReqs = GroupSvc.requestGroupSystemMsgNew(20, 2) reqs = reqs + riskReqs - val req = reqs.first { + val req = reqs.firstOrNull { it.msg_time.get() == ts } - ts = req.msg_seq?.get() ?: return error("失败:未找到该请求", echo) + ts = req?.msg_seq?.get() ?: return error("失败:未找到该请求", echo) } } catch (err: Throwable) { LogCenter.log(err.stackTraceToString(), Level.WARN) 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 8efb509..8142f4b 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 @@ -23,6 +23,7 @@ import moe.fuqiuluo.proto.asList import moe.fuqiuluo.proto.asULong import moe.fuqiuluo.qqinterface.servlet.FriendSvc.requestFriendSystemMsgNew import moe.fuqiuluo.qqinterface.servlet.GroupSvc.requestGroupSystemMsgNew +import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getLongUin import moe.fuqiuluo.shamrock.helper.MessageHelper import moe.fuqiuluo.shamrock.remote.service.data.push.NoticeSubType import moe.fuqiuluo.shamrock.remote.service.data.push.NoticeType @@ -496,16 +497,18 @@ internal object PrimitiveListener { val applierUid = pb[1, 3, 2, 3].asUtf8String val reason = pb[1, 3, 2, 5].asUtf8String val applier = ContactHelper.getUinByUidAsync(applierUid).toLong() - + if (applier == getLongUin()) { + return + } LogCenter.log("入群申请($groupCode) $applier: \"$reason\"") val flag = try { var reqs = requestGroupSystemMsgNew(10, 1) - val riskReqs = requestGroupSystemMsgNew(10, 2) + val riskReqs = requestGroupSystemMsgNew(5, 2) reqs = reqs + riskReqs - val req = reqs.first { + val req = reqs.firstOrNull() { it.msg_time.get() == time } - val seq = req.msg_seq?.get() + val seq = req?.msg_seq?.get() ?: time "$seq;$groupCode;$applier" } catch (err: Throwable) { "$time;$groupCode;$applier" @@ -521,6 +524,9 @@ internal object PrimitiveListener { val groupCode = pb[1, 3, 2, 2, 3].asULong val applierUid = pb[1, 3, 2, 2, 5].asUtf8String val applier = ContactHelper.getUinByUidAsync(applierUid).toLong() + if (applier == getLongUin()) { + return + } if (pb[1, 3, 2, 2, 1].asInt < 3) { // todo return @@ -528,15 +534,15 @@ internal object PrimitiveListener { LogCenter.log("邀请入群申请($groupCode): $applier") val flag = try { var reqs = requestGroupSystemMsgNew(10, 1) - val riskReqs = requestGroupSystemMsgNew(10, 2) + val riskReqs = requestGroupSystemMsgNew(5, 2) reqs = reqs + riskReqs - val req = reqs.first { + val req = reqs.firstOrNull() { it.msg_time.get() == time } - val seq = req.msg_seq?.get() + val seq = req?.msg_seq?.get() ?: time "$seq;$groupCode;$applier" } catch (err: Throwable) { - "$time;$groupCode;$applierUid" + "$time;$groupCode;$applier" } if (!GlobalEventTransmitter.RequestTransmitter .transGroupApply(time, applier, "", groupCode, flag, RequestSubType.Add) @@ -557,10 +563,10 @@ internal object PrimitiveListener { var reqs = requestGroupSystemMsgNew(10, 1) val riskReqs = requestGroupSystemMsgNew(10, 2) reqs = reqs + riskReqs - val req = reqs.first { + val req = reqs.firstOrNull() { it.msg_time.get() == time } - val seq = req.msg_seq?.get() + val seq = req?.msg_seq?.get() ?: time "$seq;$groupCode;$uin" } catch (err: Throwable) { "$time;$groupCode;$uin"