diff --git a/src/onebot/action/extends/GetGroupAddRequest.ts b/src/onebot/action/extends/GetGroupAddRequest.ts index 8bdd65d8..9f0598db 100644 --- a/src/onebot/action/extends/GetGroupAddRequest.ts +++ b/src/onebot/action/extends/GetGroupAddRequest.ts @@ -2,32 +2,44 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -interface OB11GroupRequestNotify { - group_id: number, - user_id: number, - flag: string +interface Notify { + request_id: string; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + checked: boolean; + requester_nick?: string; + actor: number; } -export default class GetGroupAddRequest extends OneBotAction { +export default class GetGroupAddRequest extends OneBotAction { actionName = ActionName.GetGroupIgnoreAddRequest; - async _handle(payload: null): Promise { - const ignoredNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(true, 10); - const retData: any = { - join_requests: await Promise.all( - ignoredNotifies - .filter(notify => notify.type === 7) - .map(async SSNotify => ({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - requester_uin: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1?.uid), - requester_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, - group_name: SSNotify.group?.groupName, - checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, - actor: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, - }))), - }; + async _handle(payload: null): Promise { + const NTQQUserApi = this.core.apis.UserApi; + const NTQQGroupApi = this.core.apis.GroupApi; + const ignoredNotifies = await NTQQGroupApi.getSingleScreenNotifies(true, 10); + const retData: Notify[] = []; + + const notifyPromises = ignoredNotifies + .filter(notify => notify.type === 7) + .map(async SSNotify => { + const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + retData.push({ + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, + requester_nick: SSNotify.user1?.nickName, + group_id: +SSNotify.group?.groupCode, + group_name: SSNotify.group?.groupName, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, + }); + }); + + await Promise.all(notifyPromises); return retData; } -} +} \ No newline at end of file diff --git a/src/onebot/action/group/GetGroupIgnoredNotifies.ts b/src/onebot/action/group/GetGroupIgnoredNotifies.ts index a639ed1e..4137e735 100644 --- a/src/onebot/action/group/GetGroupIgnoredNotifies.ts +++ b/src/onebot/action/group/GetGroupIgnoredNotifies.ts @@ -1,26 +1,55 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -export class GetGroupIgnoredNotifies extends OneBotAction { - actionName = ActionName.GetGroupIgnoredNotifies; - async _handle(payload: void) { - const ignoredNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(true, 10); - const retData: any = { - join_requests: await Promise.all( - ignoredNotifies - .filter(notify => notify.type === 7) - .map(async SSNotify => ({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - requester_uin: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1?.uid), - requester_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, - group_name: SSNotify.group?.groupName, - checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, - actor: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, - }))), - }; +interface Notify { + request_id: string; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + checked: boolean; + requester_nick?: string; + actor: number; +} +interface RetData { + InvitedRequest: Notify[]; + join_requests: Notify[]; +} + +export class GetGroupIgnoredNotifies extends OneBotAction { + actionName = ActionName.GetGroupSystemMsg; + + async _handle(): Promise { + const NTQQUserApi = this.core.apis.UserApi; + const NTQQGroupApi = this.core.apis.GroupApi; + const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 50); + const retData: RetData = { InvitedRequest: [], join_requests: [] }; + + const notifyPromises = SingleScreenNotifies.map(async (SSNotify) => { + const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + + const commonData = { + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, + invitor_nick: SSNotify.user1?.nickName, + group_id: +SSNotify.group?.groupCode, + group_name: SSNotify.group?.groupName, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, + requester_nick: SSNotify.user1?.nickName, + }; + + if (SSNotify.type === 1) { + retData.InvitedRequest.push(commonData); + } else if (SSNotify.type === 7) { + retData.join_requests.push(commonData); + } + }); + + await Promise.all(notifyPromises); return retData; } -} +} \ No newline at end of file diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index f1a904c5..a8a22228 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -1,38 +1,63 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -export class GetGroupSystemMsg extends OneBotAction { + +interface Notify { + request_id: string; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + checked: boolean; + actor: number; +} + +interface JoinRequest extends Notify { + requester_nick?: string; +} + +interface RetData { + InvitedRequest: Notify[]; + join_requests: JoinRequest[]; +} + +export class GetGroupSystemMsg extends OneBotAction { actionName = ActionName.GetGroupSystemMsg; - async _handle() { + async _handle(): Promise { const NTQQUserApi = this.core.apis.UserApi; const NTQQGroupApi = this.core.apis.GroupApi; - // 默认10条 该api未完整实现 包括响应数据规范化 类型规范化 - const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 10); - const retData: any = { InvitedRequest: [], join_requests: [] }; - for (const SSNotify of SingleScreenNotifies) { - if (SSNotify.type == 1) { + const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 50); + const retData: RetData = { InvitedRequest: [], join_requests: [] }; + + const notifyPromises = SingleScreenNotifies.map(async (SSNotify) => { + const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + + if (SSNotify.type === 1) { retData.InvitedRequest.push({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - invitor_uin: await NTQQUserApi.getUinByUidV2(SSNotify.user1?.uid), + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, invitor_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, + group_id: +SSNotify.group?.groupCode, group_name: SSNotify.group?.groupName, - checked: SSNotify.status === GroupNotifyMsgStatus.KUNHANDLE ? false : true, - actor: await NTQQUserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, }); - } else if (SSNotify.type == 7) { + } else if (SSNotify.type === 7) { retData.join_requests.push({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - requester_uin: await NTQQUserApi.getUinByUidV2(SSNotify.user1?.uid), + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, requester_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, + group_id: +SSNotify.group?.groupCode, group_name: SSNotify.group?.groupName, - checked: SSNotify.status === GroupNotifyMsgStatus.KUNHANDLE ? false : true, - actor: await NTQQUserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, }); } - } + }); + + await Promise.all(notifyPromises); return retData; }