From d9851493df4aa97f293e2a55dbd83f4b1596a32a 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: Sun, 15 Sep 2024 15:51:23 +0800 Subject: [PATCH] fix: #361 --- src/core/apis/group.ts | 8 +++++++- src/onebot/action/group/GetGroupMemberList.ts | 17 ++++++++++------- src/onebot/entities.ts | 5 +++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index a2c93705..f4209788 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -34,7 +34,13 @@ export class NTQQGroupApi { } this.context.logger.logDebug(`加载${this.groups.length}个群组缓存完成`); } - + async getCoreAndBaseInfo(uids: string[]) { + return await this.core.eventWrapper.callNoListenerEvent( + 'NodeIKernelProfileService/getCoreAndBaseInfo', + 'nodeStore', + uids, + ); + } async fetchGroupEssenceList(groupCode: string) { const pskey = (await this.core.apis.UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')!; return this.context.session.getGroupService().fetchGroupEssenceList({ diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 76ef944c..6c3596fc 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -3,6 +3,7 @@ import { OB11Entities } from '@/onebot/entities'; import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { calcQQLevel } from '@/common/helper'; const SchemaData = { type: 'object', @@ -22,7 +23,8 @@ class GetGroupMemberList extends BaseAction { async _handle(payload: Payload) { const groupMembers = await this.core.apis.GroupApi.getGroupMembersV2(payload.group_id.toString()); const groupMembersArr = Array.from(groupMembers.values()); - + let uids = groupMembersArr.map(item => item.uid); + let CoreAndBase = await this.core.apis.GroupApi.getCoreAndBaseInfo(uids) let _groupMembers = groupMembersArr.map(item => { return OB11Entities.groupMember(payload.group_id.toString(), item); }); @@ -32,18 +34,19 @@ class GetGroupMemberList extends BaseAction { for (let i = 0, len = _groupMembers.length; i < len; i++) { // 保证基础数据有这个 同时避免群管插件过于依赖这个杀了 - _groupMembers[i].join_time = date; - _groupMembers[i].last_sent_time = date; + const Member = await this.core.apis.GroupApi.getGroupMember(payload.group_id.toString(), _groupMembers[i].user_id); + _groupMembers[i].join_time = +(Member?.joinTime ?? date); + _groupMembers[i].last_sent_time = +(Member?.lastSpeakTime ?? date); + _groupMembers[i].qq_level = calcQQLevel(Member?.qqLevel); + _groupMembers[i].sex = OB11Entities.sex(CoreAndBase.get(_groupMembers[i].user_id.toString())?.baseInfo.sex); + _groupMembers[i].age = CoreAndBase.get(_groupMembers[i].user_id.toString())?.baseInfo.age ?? 0; MemberMap.set(_groupMembers[i].user_id, _groupMembers[i]); } + const selfRole = groupMembers.get(this.core.selfInfo.uid)?.role; const isPrivilege = selfRole === 3 || selfRole === 4; - _groupMembers.forEach(item => { - item.last_sent_time = date; - item.join_time = date; - }); if (isPrivilege) { try { diff --git a/src/onebot/entities.ts b/src/onebot/entities.ts index 8fea6a51..93a7c414 100644 --- a/src/onebot/entities.ts +++ b/src/onebot/entities.ts @@ -48,7 +48,8 @@ export class OB11Entities { }[role]; } - static sex(sex: Sex): OB11UserSex { + static sex(sex?: Sex): OB11UserSex { + if (!sex) return OB11UserSex.unknown; return { [Sex.male]: OB11UserSex.male, [Sex.female]: OB11UserSex.female, @@ -126,7 +127,7 @@ export class OB11Entities { return { group_id: parseInt(peerId), folder_id: folder.folderId, - folder:folder.folderId, + folder: folder.folderId, folder_name: folder.folderName, create_time: folder.createTime, creator: parseInt(folder.createUin),