refactor: 开始重构群成员信息获取

This commit is contained in:
手瓜一十雪 2024-08-04 20:10:21 +08:00
parent 6533a25404
commit 67dcbcb842
4 changed files with 30 additions and 5 deletions

View File

@ -81,6 +81,9 @@ export class NTQQGroupApi {
}); });
return ret; return ret;
} }
static async getGroupMemberAll(GroupCode: string, forced = false) {
return napCatCore.session.getGroupService().getAllMemberList(GroupCode, forced);
}
static async getLastestMsg(GroupCode: string, uins: string[]) { static async getLastestMsg(GroupCode: string, uins: string[]) {
let uids: Array<string> = []; let uids: Array<string> = [];
for (let uin of uins) { for (let uin of uins) {
@ -155,6 +158,11 @@ export class NTQQGroupApi {
); );
return notifies; return notifies;
} }
static async getGroupMemberV2(GroupCode: string, uid: string, forced = false) {
//type ListenerType = NodeIKernelGroupListener['onGroupMemberInfoUpdate'];
// NTEventDispatch.CreatListenerFunction('NodeIKernelGroupListener/onGroupMemberInfoUpdate',
return napCatCore.session.getGroupService().getMemberInfo(GroupCode, [uid], forced);
}
static async getGroupMembers(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> { static async getGroupMembers(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
const groupService = napCatCore.session.getGroupService(); const groupService = napCatCore.session.getGroupService();
const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow'); const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow');

View File

@ -8,7 +8,10 @@ import {
} from '@/core/entities'; } from '@/core/entities';
import { GeneralCallResult } from '@/core/services/common'; import { GeneralCallResult } from '@/core/services/common';
//高版本的接口不应该随意使用 使用应该严格进行pr审核 同时部分ipc中未出现的接口不要过于依赖 应该做好数据兜底
export interface NodeIKernelGroupService { export interface NodeIKernelGroupService {
getMemberCommonInfo(...arg: unknown[]): unknown;
//26702 //26702
getGroupMemberLevelInfo(groupCode: string): Promise<unknown>; getGroupMemberLevelInfo(groupCode: string): Promise<unknown>;
//26702 //26702
@ -27,7 +30,7 @@ export interface NodeIKernelGroupService {
checkGroupMemberCache(arrayList: Array<string>): Promise<unknown>; checkGroupMemberCache(arrayList: Array<string>): Promise<unknown>;
//26702(其实更早 但是我不知道) //26702(其实更早 但是我不知道)
getGroupLatestEssenceList(groupCode: string): Promise<unknown>; getGroupLatestEssenceList(groupCode: string): Promise<unknown>;
//26702(其实更早 但是我不知道) //26702(其实更早 但是我不知道)
shareDigest(Req: { shareDigest(Req: {
appId: string, appId: string,
appType: number, appType: number,
@ -53,7 +56,19 @@ export interface NodeIKernelGroupService {
//26702(其实更早 但是我不知道) //26702(其实更早 但是我不知道)
fetchGroupEssenceList(Req: { groupCode: string, pageStart: number, pageLimit: number }, Arg: unknown): Promise<unknown>; fetchGroupEssenceList(Req: { groupCode: string, pageStart: number, pageLimit: number }, Arg: unknown): Promise<unknown>;
//26702 //26702
getAllMemberList(groupCode: string, refresh: boolean): Promise<unknown>; getAllMemberList(groupCode: string, forceFetch: boolean): Promise<{
errCode: number,
errMsg: string,
result: {
ids: Array<{
uid: string,
index: number//0
}>,
infos: {},
finish: true,
hasRobot: false
}
}>;
setHeader(uid: string, path: string): unknown; setHeader(uid: string, path: string): unknown;
@ -74,9 +89,9 @@ export interface NodeIKernelGroupService {
monitorMemberList(): unknown; monitorMemberList(): unknown;
searchMember(uid: string): unknown; searchMember(sceneId: string, keywords: string[]): unknown;
getMemberInfo(uid: string): unknown; getMemberInfo(group_id: string, uids: string[], forceFetch: boolean): unknown;
//getMemberInfo [ '56729xxxx', [ 'u_4Nj08cwW5Hxxxxx' ], true ] //getMemberInfo [ '56729xxxx', [ 'u_4Nj08cwW5Hxxxxx' ], true ]
kickMember(groupCode: string, memberUids: string[], refuseForever: boolean, kickReason: string): Promise<void>; kickMember(groupCode: string, memberUids: string[], refuseForever: boolean, kickReason: string): Promise<void>;

View File

@ -26,6 +26,7 @@ class GetGroupMemberInfo extends BaseAction<Payload, OB11GroupMember> {
actionName = ActionName.GetGroupMemberInfo; actionName = ActionName.GetGroupMemberInfo;
PayloadSchema = SchemaData; PayloadSchema = SchemaData;
protected async _handle(payload: Payload) { protected async _handle(payload: Payload) {
const group = await getGroup(payload.group_id.toString()); const group = await getGroup(payload.group_id.toString());
const role = (await getGroupMember(payload.group_id, selfInfo.uin))?.role; const role = (await getGroupMember(payload.group_id, selfInfo.uin))?.role;
const isPrivilege = role === 3 || role === 4; const isPrivilege = role === 3 || role === 4;
@ -40,6 +41,7 @@ class GetGroupMemberInfo extends BaseAction<Payload, OB11GroupMember> {
if (!member) { if (!member) {
throw (`群(${payload.group_id})成员${payload.user_id}不存在`); throw (`群(${payload.group_id})成员${payload.user_id}不存在`);
} }
//console.log('GetGroupMemberInfo', JSON.stringify(await NTQQGroupApi.getGroupMemberV2(payload.group_id.toString(), member.uid, true), null, 4));
try { try {
const info = (await NTQQUserApi.getUserDetailInfo(member.uid)); const info = (await NTQQUserApi.getUserDetailInfo(member.uid));
logDebug('群成员详细信息结果', info); logDebug('群成员详细信息结果', info);

View File

@ -291,7 +291,7 @@ export class NapCatOnebot11 {
} }
}; };
groupListener.onMemberInfoChange = async (groupCode: string, changeType: number, members: Map<string, GroupMember>) => { groupListener.onMemberInfoChange = async (groupCode: string, changeType: number, members: Map<string, GroupMember>) => {
//console.log("ob11 onMemberInfoChange", groupCode, changeType, members) console.log("ob11 onMemberInfoChange", groupCode, changeType, members)
if (changeType === 1) { if (changeType === 1) {
let member; let member;
for (const [key, value] of members) { for (const [key, value] of members) {