diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt index 15a0d1f..e57fd71 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt @@ -23,7 +23,7 @@ internal object ActionManager { // UserActions GetProfileCard, GetFriendList, SendLike, GetUid, GetUinByUid, ScanQRCode, SetProfileCard, GetCookies, GetCSRF, GetCredentials, RestartMe, CleanCache, GetModelShow, SetModelShow, - GetModelShowList, GetOnlineClients, GetStrangerInfo, IsBlackListUin, GetHttpCookies, + GetModelShowList, GetOnlineClients, GetStrangerInfo, IsBlackListUin, GetHttpCookies, GetFriendSystemMsg, // GroupInfo GetTroopList, GetTroopInfo, GetTroopList, GetTroopMemberInfo, GetTroopMemberList, @@ -42,7 +42,7 @@ internal object ActionManager { DeleteGroupFile, GetGroupFileSystemInfo, GetGroupRootFiles, GetGroupSubFiles, GetGroupFileUrl, UploadPrivateFile, - //REQUEST ACTION + // REQUEST ACTION SetFriendAddRequest, SetGroupAddRequest, // GUILD diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFriendSystemMsg.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFriendSystemMsg.kt new file mode 100644 index 0000000..21a2b6e --- /dev/null +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFriendSystemMsg.kt @@ -0,0 +1,45 @@ +package moe.fuqiuluo.shamrock.remote.action.handlers + +import kotlinx.serialization.json.JsonElement +import moe.fuqiuluo.qqinterface.servlet.FriendSvc +import moe.fuqiuluo.shamrock.helper.Level +import moe.fuqiuluo.shamrock.helper.LogCenter +import moe.fuqiuluo.shamrock.remote.action.ActionSession +import moe.fuqiuluo.shamrock.remote.action.IActionHandler +import moe.fuqiuluo.shamrock.remote.service.data.FriendRequest +import moe.fuqiuluo.shamrock.tools.EmptyJsonString + +internal object GetFriendSystemMsg : IActionHandler() { + override suspend fun internalHandle(session: ActionSession): String { + return invoke(echo = session.echo) + } + + suspend operator fun invoke(echo: JsonElement = EmptyJsonString): String { + val list = FriendSvc.requestFriendSystemMsgNew(20) + val msgs = list + // 13 是加别人好友 + ?.filter { it.msg.sub_type.get() != 13 } + ?.map { + LogCenter.log(it.toString(), Level.WARN) + FriendRequest( + seq = it.msg_seq.get(), + userId = it.req_uin.get(), + name = it.msg.req_uin_nick.get(), + source = it.msg.msg_source.get(), + subId = it.msg.src_id.get(), + subSrcId = it.msg.sub_src_id.get(), + msg = it.msg.msg_additional.get(), + sourceGroupName = it.msg.group_name.get(), + sourceGroupCode = it.msg.group_code.get(), + flag = "${it.msg_seq.get()};${it.msg.src_id.get()};${it.msg.sub_src_id.get()};${it.req_uin.get()}", + sex = if (it.msg.req_uin_gender.get() == 1) "female" else "male", + age = it.msg.req_uin_age.get(), + msgDetail = it.msg.msg_detail.get(), + status = it.msg.msg_decided.get() + ) + } ?: mutableListOf() + return ok(msgs, echo = echo) + } + + override fun path(): String = "get_friend_system_msg" +} \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetGroupSystemMsg.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetGroupSystemMsg.kt index d12c685..7ddae5a 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetGroupSystemMsg.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetGroupSystemMsg.kt @@ -61,7 +61,5 @@ internal object GetGroupSystemMsg: IActionHandler() { return ok(msgs, echo = echo) } - override val requiredParams: Array = arrayOf("group_id", "folder_id") - - override fun path(): String = "get_group_files_by_folder" + override fun path(): String = "get_group_system_msg" } \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/FriendAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/FriendAction.kt index 43f84a6..3f7468c 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/FriendAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/FriendAction.kt @@ -8,6 +8,7 @@ import io.ktor.server.response.respondText import io.ktor.server.routing.Routing import io.ktor.server.routing.get import moe.fuqiuluo.shamrock.remote.action.handlers.GetFriendList +import moe.fuqiuluo.shamrock.remote.action.handlers.GetFriendSystemMsg import moe.fuqiuluo.shamrock.remote.action.handlers.GetStrangerInfo import moe.fuqiuluo.shamrock.remote.action.handlers.IsBlackListUin import moe.fuqiuluo.shamrock.tools.fetchGetOrThrow @@ -30,4 +31,9 @@ fun Routing.friendAction() { val uin = fetchOrThrow("user_id") call.respondText(IsBlackListUin(uin), ContentType.Application.Json) } + + getOrPost("/get_friend_system_msg") { + call.respondText(GetFriendSystemMsg(), ContentType.Application.Json) + } + } \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/FriendData.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/FriendData.kt index 210d8a1..51fbc1e 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/FriendData.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/FriendData.kt @@ -16,3 +16,22 @@ internal data class FriendEntry( @SerialName("term_type") val termType: Int, ) + +@Serializable +internal data class FriendRequest( + @SerialName("request_id") val seq: Long = 0, + @SerialName("requester_uin") val userId: Long = 0, + @SerialName("requester_nick") val name: String?, + val source: String?, + @SerialName("sub_id") val subId: Int?, + @SerialName("sub_src_id") val subSrcId: Int?, + @SerialName("message") val msg: String?, + @SerialName("source_group_name") val sourceGroupName: String?, + @SerialName("source_group_id") val sourceGroupCode: Long?, + val flag: String, + val sex: String?, + val age: Int?, + @SerialName("msg_detail") val msgDetail: String?, + val status: String?, + +) \ No newline at end of file