From 328e656859f6b62cc3354f409507754c86ce1226 Mon Sep 17 00:00:00 2001 From: whitechi73 Date: Tue, 30 Jan 2024 00:25:32 +0800 Subject: [PATCH] `Shamrock`: try fix #214 --- .../main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt | 3 ++- .../shamrock/remote/action/handlers/KickTroopMember.kt | 7 ++++--- .../java/moe/fuqiuluo/shamrock/remote/api/GroupAction.kt | 7 ++++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt index 1c7b0fe..3f66a2f 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt @@ -335,7 +335,7 @@ internal object GroupSvc: BaseSvc() { sendOidb("OidbSvc.0x570_8", 1392, 8, array) } - fun kickMember(groupId: Long, rejectAddRequest: Boolean, vararg memberUin: Long) { + fun kickMember(groupId: Long, rejectAddRequest: Boolean, kickMsg: String, vararg memberUin: Long) { val reqBody = oidb_0x8a0.ReqBody() reqBody.opt_uint64_group_code.set(groupId) @@ -346,6 +346,7 @@ internal object GroupSvc: BaseSvc() { memberInfo.opt_uint32_flag.set(if (rejectAddRequest) 1 else 0) reqBody.rpt_msg_kick_list.add(memberInfo) } + reqBody.bytes_kick_msg.set(ByteStringMicro.copyFrom(kickMsg.toByteArray())) sendOidb("OidbSvc.0x8a0_0", 2208, 0, reqBody.toByteArray()) } diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/KickTroopMember.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/KickTroopMember.kt index f839749..15bed75 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/KickTroopMember.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/KickTroopMember.kt @@ -12,13 +12,14 @@ internal object KickTroopMember: IActionHandler() { override suspend fun internalHandle(session: ActionSession): String { val groupId = session.getLong("group_id") val userId = session.getLong("user_id") + val kickMsg = session.getStringOrNull("kick_msg") ?: "" val rejectAddRequest = session.getBooleanOrDefault("reject_add_request", false) - return invoke(groupId, userId, rejectAddRequest, session.echo) + return invoke(groupId, userId, rejectAddRequest, kickMsg, session.echo) } - operator fun invoke(groupId: Long, userId: Long, rejectAddRequest: Boolean = false, echo: JsonElement = EmptyJsonString): String { - GroupSvc.kickMember(groupId, rejectAddRequest, userId) + operator fun invoke(groupId: Long, userId: Long, rejectAddRequest: Boolean = false, kickMsg: String, echo: JsonElement = EmptyJsonString): String { + GroupSvc.kickMember(groupId, rejectAddRequest, kickMsg, userId) return ok("成功", echo) } diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GroupAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GroupAction.kt index 38a2cd9..a15075b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GroupAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GroupAction.kt @@ -120,7 +120,12 @@ fun Routing.troopAction() { getOrPost("/set_group_kick") { val userId = fetchOrThrow("user_id").toLong() val groupId = fetchOrThrow("group_id").toLong() - call.respondText(KickTroopMember(groupId, userId), ContentType.Application.Json) + val kickMsg = fetchOrNull("kick_msg") ?: "" + val rejectAddRequest = when(fetchGetOrNull("reject_add_request")) { + "1", "true" -> true + else -> false + } + call.respondText(KickTroopMember(groupId, userId, rejectAddRequest, kickMsg), ContentType.Application.Json) } getOrPost("/set_essence_msg") {