mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
release: v3.3.25
This commit is contained in:
parent
1190e14171
commit
8a0e9e8b61
@ -12,7 +12,7 @@ import {
|
|||||||
import { isNumeric, solveAsyncProblem } from '@/common/helper';
|
import { isNumeric, solveAsyncProblem } from '@/common/helper';
|
||||||
import { LimitedHashTable } from '@/common/message-unique';
|
import { LimitedHashTable } from '@/common/message-unique';
|
||||||
import { NTEventWrapper } from '@/common/event';
|
import { NTEventWrapper } from '@/common/event';
|
||||||
import { c } from 'vite/dist/node/types.d-aGj9QkWt';
|
import { b, c } from 'vite/dist/node/types.d-aGj9QkWt';
|
||||||
|
|
||||||
export class NTQQGroupApi {
|
export class NTQQGroupApi {
|
||||||
context: InstanceContext;
|
context: InstanceContext;
|
||||||
@ -344,16 +344,49 @@ export class NTQQGroupApi {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async GetGroupMembersV3(groupQQ: string, num = 3000, timeout = 2500): Promise<{
|
||||||
|
infos: Map<string, GroupMember>;
|
||||||
|
finish: boolean;
|
||||||
|
hasNext: boolean | undefined;
|
||||||
|
listenerMode: boolean;
|
||||||
|
}> {
|
||||||
|
const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1');
|
||||||
|
const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', 0, timeout, (params) => params.sceneId === sceneId)
|
||||||
|
.catch(() => { });
|
||||||
|
const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num);
|
||||||
|
if (result.errCode !== 0) {
|
||||||
|
throw new Error('获取群成员列表出错,' + result.errMsg);
|
||||||
|
}
|
||||||
|
let resMode2;
|
||||||
|
if (result.result.finish && result.result.infos.size === 0) {
|
||||||
|
const ret = (await once)?.[0];
|
||||||
|
if (ret) {
|
||||||
|
resMode2 = ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.context.session.getGroupService().destroyMemberListScene(sceneId);
|
||||||
|
//console.log('GetGroupMembersV3 len :', result.result.infos.size, resMode2?.infos.size, groupQQ);
|
||||||
|
return {
|
||||||
|
infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]),
|
||||||
|
finish: result.result.finish,
|
||||||
|
hasNext: resMode2?.hasNext,
|
||||||
|
listenerMode: resMode2?.hasNext !== undefined ? true : false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
async getGroupMembersV2(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
|
async getGroupMembersV2(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
|
||||||
console.log("-start-", groupQQ);
|
//console.log('getGroupMembers -->', groupQQ);
|
||||||
let res = await this.tryGetGroupMembersV2(true, groupQQ, 3000);
|
let res = await this.GetGroupMembersV3(groupQQ, num);
|
||||||
if (res.hasNext || !res.finish || res.infos.size === 0) {
|
let ret = res.infos;
|
||||||
res = await this.tryGetGroupMembersV2(false, groupQQ, 3000);
|
if (res.infos.size === 0 && !res.listenerMode) {
|
||||||
|
res = await this.GetGroupMembersV3(groupQQ, num);
|
||||||
|
ret = res.infos;
|
||||||
}
|
}
|
||||||
if (res.infos.size === 0 && res.finish) {
|
if (res.infos.size === 0) {
|
||||||
res = await this.tryGetGroupMembersV2(true, groupQQ, 3000);
|
ret = (await this.getGroupMemberAll(groupQQ)).result.infos;
|
||||||
}
|
}
|
||||||
return res.infos;
|
//console.log("<---------------")
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
async getGroupMembers(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
|
async getGroupMembers(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
|
||||||
|
@ -105,7 +105,7 @@ export interface NodeIKernelGroupService {
|
|||||||
uid: string,
|
uid: string,
|
||||||
index: number//0
|
index: number//0
|
||||||
}>,
|
}>,
|
||||||
infos: unknown,
|
infos: Map<string, GroupMember>,
|
||||||
finish: true,
|
finish: true,
|
||||||
hasRobot: false
|
hasRobot: false
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user