Shamrock feat: GroupSystemMessage

This commit is contained in:
ikechan8370 2023-11-22 23:53:26 +08:00
parent 1593d973a0
commit 2b64aa8b2c
4 changed files with 94 additions and 0 deletions

View File

@ -30,6 +30,7 @@ internal object ActionManager {
// GroupActions
ModifyTroopName, LeaveTroop, KickTroopMember, BanTroopMember, SetGroupWholeBan, SetGroupAdmin,
ModifyTroopMemberName, SetGroupUnique, GetTroopHonor, GroupPoke, SetEssenceMessage, DeleteEssenceMessage,
GetGroupSystemMsg,
// MSG ACTIONS
SendMessage, DeleteMessage, GetMsg, GetForwardMsg, SendGroupForwardMsg, SendGroupMessage, SendPrivateMessage,

View File

@ -0,0 +1,66 @@
package moe.fuqiuluo.shamrock.remote.action.handlers
import kotlinx.serialization.json.JsonElement
import moe.fuqiuluo.qqinterface.servlet.GroupSvc
import moe.fuqiuluo.shamrock.remote.action.ActionSession
import moe.fuqiuluo.shamrock.remote.action.IActionHandler
import moe.fuqiuluo.shamrock.remote.service.data.GroupRequest
import moe.fuqiuluo.shamrock.remote.service.data.GroupSystemMessage
import moe.fuqiuluo.shamrock.tools.EmptyJsonString
internal object GetGroupSystemMsg: IActionHandler() {
override suspend fun internalHandle(session: ActionSession): String {
return invoke(session.echo)
}
suspend operator fun invoke(echo: JsonElement = EmptyJsonString): String {
val list = GroupSvc.requestGroupSystemMsgNew(20, 0, 0)
val msgs = GroupSystemMessage(
invited = mutableListOf(),
join = mutableListOf()
)
list?.forEach {
when(it.msg.group_msg_type.get()) {
22, 2 -> {
// invite
msgs.invited += GroupRequest (
msgSeq = it.msg_seq.get(),
invitorUin = it.msg.action_uin.get(),
invitorNick = it.msg.action_uin_nick.get(),
groupId = it.msg.group_code.get(),
groupName = it.msg.group_name.get(),
checked = it.msg.msg_decided.get().isNotBlank(),
actor = it.msg.actor_uin.get(),
requesterUin = it.req_uin.get(),
requesterNick = "",
message = "",
flag = "${it.msg_seq.get()};${it.msg.group_code.get()};${it.req_uin.get()}"
)
}
1 -> {
// add
msgs.join += GroupRequest (
msgSeq = it.msg_seq.get(),
invitorUin = null,
invitorNick = null,
groupId = it.msg.group_code.get(),
groupName = it.msg.group_name.get(),
checked = it.msg.msg_decided.get().isNotBlank(),
actor = it.msg.actor_uin.get(),
requesterUin = it.req_uin.get(),
requesterNick = it.msg.req_uin_nick.get(),
message = it.msg.msg_additional.get(),
flag = "${it.msg_seq.get()};${it.msg.group_code.get()};${it.req_uin.get()}"
)
}
else -> {}
}
}
return ok(msgs, echo = echo)
}
override val requiredParams: Array<String> = arrayOf("group_id", "folder_id")
override fun path(): String = "get_group_files_by_folder"
}

View File

@ -106,4 +106,8 @@ fun Routing.troopAction() {
call.respondText(DeleteEssenceMessage(messageId), ContentType.Application.Json)
}
getOrPost("/get_group_system_msg") {
call.respondText(GetGroupSystemMsg(), ContentType.Application.Json)
}
}

View File

@ -42,4 +42,27 @@ internal data class SimpleTroopMemberInfo(
@SerialName("role") val role: MemberRole,
@SerialName("unfriendly") val unfriendly: Boolean,
@SerialName("card_changeable") val cardChangeable: Boolean,
)
@Serializable
internal data class GroupRequest(
// InvitedRequest
@SerialName("request_id") val msgSeq: Long,
@SerialName("invitor_uin") val invitorUin: Long?,
@SerialName("invitor_nick") val invitorNick: String?,
@SerialName("group_id") val groupId: Long,
@SerialName("group_name") val groupName: String,
@SerialName("checked") val checked: Boolean,
@SerialName("actor") val actor: Long,
// JoinRequest
@SerialName("requester_uin") val requesterUin: Long,
@SerialName("requester_nick") val requesterNick: String,
@SerialName("message") val message: String,
@SerialName("flag") val flag: String,
)
@Serializable
internal data class GroupSystemMessage(
@SerialName("invited_requests") var invited: List<GroupRequest>,
@SerialName("join_requests") var join: List<GroupRequest>,
)