From 8004553ba766acbba3e12673bb10e2bfae1fd1c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 13 Jul 2024 18:04:55 +0800 Subject: [PATCH] refactor: groupNotifies --- src/core/src/apis/group.ts | 15 ++++++++++----- src/core/src/data.ts | 1 - src/onebot11/action/group/SetGroupAddRequest.ts | 7 +------ src/onebot11/main.ts | 9 ++------- src/onebot11/server/postOB11Event.ts | 4 ++-- 5 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/core/src/apis/group.ts b/src/core/src/apis/group.ts index 697f4600..a121ba84 100644 --- a/src/core/src/apis/group.ts +++ b/src/core/src/apis/group.ts @@ -1,4 +1,4 @@ -import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group, MemberExtSourceType } from '../entities'; +import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group, MemberExtSourceType, GroupNotifyTypes } from '../entities'; import { GeneralCallResult, NTQQUserApi, napCatCore } from '@/core'; import { NTEventDispatch } from '@/common/utils/EventTask'; import { logDebug } from '@/common/utils/log'; @@ -111,15 +111,20 @@ export class NTQQGroupApi { const _Pskey = (await NTQQUserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')!; return napCatCore.session.getGroupService().uploadGroupBulletinPic(GroupCode, _Pskey, imageurl); } - static async handleGroupRequest(notify: GroupNotify, operateType: GroupRequestOperateTypes, reason?: string) { + static async handleGroupRequest(flag: string, operateType: GroupRequestOperateTypes, reason?: string) { + let flagitem = flag.split('|'); + let groupCode = flagitem[0]; + let seq = flagitem[1]; + let type = parseInt(flagitem[2]); + return napCatCore.session.getGroupService().operateSysNotify( false, { 'operateType': operateType, // 2 拒绝 'targetMsg': { - 'seq': notify.seq, // 通知序列号 - 'type': notify.type, - 'groupCode': notify.group.groupCode, + 'seq': seq, // 通知序列号 + 'type': type, + 'groupCode': groupCode, 'postscript': reason || '' } }); diff --git a/src/core/src/data.ts b/src/core/src/data.ts index 9a4072b9..5af23381 100644 --- a/src/core/src/data.ts +++ b/src/core/src/data.ts @@ -30,7 +30,6 @@ export const groupMembers: Map> = new Map = new Map(); export const rawFriends: Array = []; // 带分组的好友列表 -export const groupNotifies: Record = {}; // flag->GroupNotify export async function getGroup(qq: string | number): Promise { let group = groups.get(qq.toString()); if (!group) { diff --git a/src/onebot11/action/group/SetGroupAddRequest.ts b/src/onebot11/action/group/SetGroupAddRequest.ts index f07aa2fe..f9d016e0 100644 --- a/src/onebot11/action/group/SetGroupAddRequest.ts +++ b/src/onebot11/action/group/SetGroupAddRequest.ts @@ -2,7 +2,6 @@ import BaseAction from '../BaseAction'; import { GroupRequestOperateTypes } from '@/core/entities'; import { ActionName } from '../types'; import { NTQQGroupApi } from '@/core/apis/group'; -import { groupNotifies } from '@/core/data'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { @@ -23,11 +22,7 @@ export default class SetGroupAddRequest extends BaseAction { protected async _handle(payload: Payload): Promise { const flag = payload.flag.toString(); const approve = payload.approve?.toString() !== 'false'; - const notify = groupNotifies[flag]; - if (!notify) { - throw `${flag}对应的加群通知不存在`; - } - await NTQQGroupApi.handleGroupRequest(notify, + await NTQQGroupApi.handleGroupRequest(flag, approve ? GroupRequestOperateTypes.approve : GroupRequestOperateTypes.reject, payload.reason ); diff --git a/src/onebot11/main.ts b/src/onebot11/main.ts index 85563fa1..556bc2f3 100644 --- a/src/onebot11/main.ts +++ b/src/onebot11/main.ts @@ -19,7 +19,7 @@ import { OB11Config, ob11Config } from '@/onebot11/config'; import { httpHeart, ob11HTTPServer } from '@/onebot11/server/http'; import { ob11WebsocketServer } from '@/onebot11/server/ws/WebsocketServer'; import { ob11ReverseWebsockets } from '@/onebot11/server/ws/ReverseWebsocket'; -import { getGroup, getGroupMember, groupNotifies, selfInfo, tempGroupCodeMap } from '@/core/data'; +import { getGroup, getGroupMember, selfInfo, tempGroupCodeMap } from '@/core/data'; import { dbUtil } from '@/common/utils/db'; import { BuddyListener, GroupListener, NodeIKernelBuddyListener } from '@/core/listeners'; import { OB11FriendRequestEvent } from '@/onebot11/event/request/OB11FriendRequest'; @@ -408,13 +408,8 @@ export class NapCatOnebot11 { if (notifyTime < this.bootTime) { continue; } - const flag = notify.group.groupCode + '|' + notify.seq; - const existNotify = groupNotifies[flag]; - if (existNotify) { - continue; - } + const flag = notify.group.groupCode + '|' + notify.seq + '|' + notify.type; logDebug('收到群通知', notify); - groupNotifies[flag] = notify; // let member2: GroupMember; // if (notify.user2.uid) { // member2 = await getGroupMember(notify.group.groupCode, null, notify.user2.uid); diff --git a/src/onebot11/server/postOB11Event.ts b/src/onebot11/server/postOB11Event.ts index a8f72237..19f733e9 100644 --- a/src/onebot11/server/postOB11Event.ts +++ b/src/onebot11/server/postOB11Event.ts @@ -12,7 +12,7 @@ import { OB11FriendRequestEvent } from '../event/request/OB11FriendRequest'; import { OB11GroupRequestEvent } from '../event/request/OB11GroupRequest'; import { isNull } from '@/common/utils/helper'; import { dbUtil } from '@/common/utils/db'; -import { getGroup, groupNotifies, selfInfo } from '@/core/data'; +import { getGroup, selfInfo } from '@/core/data'; import { NTQQFriendApi, NTQQGroupApi, NTQQUserApi } from '@/core/apis'; import createSendElements from '../action/msg/SendMsg/create-send-elements'; @@ -168,7 +168,7 @@ async function handleMsg(msg: OB11Message, quickAction: QuickAction) { async function handleGroupRequest(request: OB11GroupRequestEvent, quickAction: QuickActionGroupRequest) { if (!isNull(quickAction.approve)) { NTQQGroupApi.handleGroupRequest( - groupNotifies[request.flag], + request.flag, quickAction.approve ? GroupRequestOperateTypes.approve : GroupRequestOperateTypes.reject, quickAction.reason, ).then().catch(logError);