mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
refactor: GetGroupInfo
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
|||||||
MemberExtSourceType,
|
MemberExtSourceType,
|
||||||
NapCatCore,
|
NapCatCore,
|
||||||
GroupNotify,
|
GroupNotify,
|
||||||
|
GroupInfoSource,
|
||||||
} from '@/core';
|
} from '@/core';
|
||||||
import { isNumeric, solveAsyncProblem } from '@/common/helper';
|
import { isNumeric, solveAsyncProblem } from '@/common/helper';
|
||||||
import { LimitedHashTable } from '@/common/message-unique';
|
import { LimitedHashTable } from '@/common/message-unique';
|
||||||
@@ -24,6 +25,19 @@ export class NTQQGroupApi {
|
|||||||
this.core = core;
|
this.core = core;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fetchGroupDetail(groupCode: string) {
|
||||||
|
let [, detailInfo] = await this.core.eventWrapper.callNormalEventV2(
|
||||||
|
'NodeIKernelGroupService/getGroupDetailInfo',
|
||||||
|
'NodeIKernelGroupListener/onGroupDetailInfoChange',
|
||||||
|
[groupCode, GroupInfoSource.KDATACARD],
|
||||||
|
(ret) => ret.result === 0,
|
||||||
|
(detailInfo) => detailInfo.groupCode === groupCode,
|
||||||
|
1,
|
||||||
|
5000
|
||||||
|
);
|
||||||
|
return detailInfo;
|
||||||
|
}
|
||||||
|
|
||||||
async initApi() {
|
async initApi() {
|
||||||
this.initCache().then().catch(e => this.context.logger.logError(e));
|
this.initCache().then().catch(e => this.context.logger.logError(e));
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify, ShutUpGroupMember } from '@/core/types';
|
import { DataSource, Group, GroupDetailInfo, GroupListUpdateType, GroupMember, GroupNotify, ShutUpGroupMember } from '@/core/types';
|
||||||
|
|
||||||
export class NodeIKernelGroupListener {
|
export class NodeIKernelGroupListener {
|
||||||
onGroupListInited(listEmpty: boolean): any { }
|
onGroupListInited(listEmpty: boolean): any { }
|
||||||
@@ -28,7 +28,7 @@ export class NodeIKernelGroupListener {
|
|||||||
onGroupConfMemberChange(...args: unknown[]): any {
|
onGroupConfMemberChange(...args: unknown[]): any {
|
||||||
}
|
}
|
||||||
|
|
||||||
onGroupDetailInfoChange(...args: unknown[]): any {
|
onGroupDetailInfoChange(detailInfo: GroupDetailInfo): any {
|
||||||
}
|
}
|
||||||
|
|
||||||
onGroupExtListUpdate(...args: unknown[]): any {
|
onGroupExtListUpdate(...args: unknown[]): any {
|
||||||
|
@@ -149,7 +149,7 @@ export interface NodeIKernelGroupService {
|
|||||||
|
|
||||||
getGroupExtList(force: boolean): Promise<GeneralCallResult>;
|
getGroupExtList(force: boolean): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getGroupDetailInfo(groupCode: string, groupInfoSource: GroupInfoSource): Promise<unknown>;
|
getGroupDetailInfo(groupCode: string, groupInfoSource: GroupInfoSource): Promise<GeneralCallResult>;
|
||||||
|
|
||||||
getMemberExtInfo(param: GroupExtParam): Promise<unknown>;//req
|
getMemberExtInfo(param: GroupExtParam): Promise<unknown>;//req
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@ export interface NodeIKernelSearchService {
|
|||||||
penetrate: string
|
penetrate: string
|
||||||
}): Promise<GeneralCallResult>;// needs 1 arguments
|
}): Promise<GeneralCallResult>;// needs 1 arguments
|
||||||
|
|
||||||
searchLocalInfo(keywords: string, unknown: number/*4*/): unknown;
|
searchLocalInfo(keywords: string, type: number/*4*/): unknown;
|
||||||
|
|
||||||
cancelSearchLocalInfo(...args: any[]): unknown;// needs 3 arguments
|
cancelSearchLocalInfo(...args: any[]): unknown;// needs 3 arguments
|
||||||
|
|
||||||
|
@@ -17,7 +17,160 @@ export enum GroupInfoSource {
|
|||||||
KRECENTCONTACT,
|
KRECENTCONTACT,
|
||||||
KMOREPANEL
|
KMOREPANEL
|
||||||
}
|
}
|
||||||
|
export interface GroupDetailInfo {
|
||||||
|
groupCode: string;
|
||||||
|
groupUin: string;
|
||||||
|
ownerUid: string;
|
||||||
|
ownerUin: string;
|
||||||
|
groupFlag: number;
|
||||||
|
groupFlagExt: number;
|
||||||
|
maxMemberNum: number;
|
||||||
|
memberNum: number;
|
||||||
|
groupOption: number;
|
||||||
|
classExt: number;
|
||||||
|
groupName: string;
|
||||||
|
fingerMemo: string;
|
||||||
|
groupQuestion: string;
|
||||||
|
certType: number;
|
||||||
|
richFingerMemo: string;
|
||||||
|
tagRecord: any[];
|
||||||
|
shutUpAllTimestamp: number;
|
||||||
|
shutUpMeTimestamp: number;
|
||||||
|
groupTypeFlag: number;
|
||||||
|
privilegeFlag: number;
|
||||||
|
groupSecLevel: number;
|
||||||
|
groupFlagExt3: number;
|
||||||
|
isConfGroup: number;
|
||||||
|
isModifyConfGroupFace: number;
|
||||||
|
isModifyConfGroupName: number;
|
||||||
|
groupFlagExt4: number;
|
||||||
|
groupMemo: string;
|
||||||
|
cmdUinMsgSeq: number;
|
||||||
|
cmdUinJoinTime: number;
|
||||||
|
cmdUinUinFlag: number;
|
||||||
|
cmdUinMsgMask: number;
|
||||||
|
groupSecLevelInfo: number;
|
||||||
|
cmdUinPrivilege: number;
|
||||||
|
cmdUinFlagEx2: number;
|
||||||
|
appealDeadline: number;
|
||||||
|
remarkName: string;
|
||||||
|
isTop: boolean;
|
||||||
|
groupFace: number;
|
||||||
|
groupGeoInfo: {
|
||||||
|
ownerUid: string;
|
||||||
|
SetTime: number;
|
||||||
|
CityId: number;
|
||||||
|
Longitude: string;
|
||||||
|
Latitude: string;
|
||||||
|
GeoContent: string;
|
||||||
|
poiId: string;
|
||||||
|
};
|
||||||
|
certificationText: string;
|
||||||
|
cmdUinRingtoneId: number;
|
||||||
|
longGroupName: string;
|
||||||
|
autoAgreeJoinGroupUserNumForConfGroup: number;
|
||||||
|
autoAgreeJoinGroupUserNumForNormalGroup: number;
|
||||||
|
cmdUinFlagExt3Grocery: number;
|
||||||
|
groupCardPrefix: {
|
||||||
|
introduction: string;
|
||||||
|
rptPrefix: any[];
|
||||||
|
};
|
||||||
|
groupExt: {
|
||||||
|
groupInfoExtSeq: number;
|
||||||
|
reserve: number;
|
||||||
|
luckyWordId: string;
|
||||||
|
lightCharNum: number;
|
||||||
|
luckyWord: string;
|
||||||
|
starId: number;
|
||||||
|
essentialMsgSwitch: number;
|
||||||
|
todoSeq: number;
|
||||||
|
blacklistExpireTime: number;
|
||||||
|
isLimitGroupRtc: number;
|
||||||
|
companyId: number;
|
||||||
|
hasGroupCustomPortrait: number;
|
||||||
|
bindGuildId: string;
|
||||||
|
groupOwnerId: {
|
||||||
|
memberUin: string;
|
||||||
|
memberUid: string;
|
||||||
|
memberQid: string;
|
||||||
|
};
|
||||||
|
essentialMsgPrivilege: number;
|
||||||
|
msgEventSeq: string;
|
||||||
|
inviteRobotSwitch: number;
|
||||||
|
gangUpId: string;
|
||||||
|
qqMusicMedalSwitch: number;
|
||||||
|
showPlayTogetherSwitch: number;
|
||||||
|
groupFlagPro1: string;
|
||||||
|
groupBindGuildIds: {
|
||||||
|
guildIds: any[];
|
||||||
|
};
|
||||||
|
viewedMsgDisappearTime: string;
|
||||||
|
groupExtFlameData: {
|
||||||
|
switchState: number;
|
||||||
|
state: number;
|
||||||
|
dayNums: any[];
|
||||||
|
version: number;
|
||||||
|
updateTime: string;
|
||||||
|
isDisplayDayNum: boolean;
|
||||||
|
};
|
||||||
|
groupBindGuildSwitch: number;
|
||||||
|
groupAioBindGuildId: string;
|
||||||
|
groupExcludeGuildIds: {
|
||||||
|
guildIds: any[];
|
||||||
|
};
|
||||||
|
fullGroupExpansionSwitch: number;
|
||||||
|
fullGroupExpansionSeq: string;
|
||||||
|
inviteRobotMemberSwitch: number;
|
||||||
|
inviteRobotMemberExamine: number;
|
||||||
|
groupSquareSwitch: number;
|
||||||
|
};
|
||||||
|
msgLimitFrequency: number;
|
||||||
|
hlGuildAppid: number;
|
||||||
|
hlGuildSubType: number;
|
||||||
|
isAllowRecallMsg: number;
|
||||||
|
confUin: string;
|
||||||
|
confMaxMsgSeq: number;
|
||||||
|
confToGroupTime: number;
|
||||||
|
groupSchoolInfo: {
|
||||||
|
location: string;
|
||||||
|
grade: number;
|
||||||
|
school: string;
|
||||||
|
};
|
||||||
|
activeMemberNum: number;
|
||||||
|
groupGrade: number;
|
||||||
|
groupCreateTime: number;
|
||||||
|
subscriptionUin: string;
|
||||||
|
subscriptionUid: string;
|
||||||
|
noFingerOpenFlag: number;
|
||||||
|
noCodeFingerOpenFlag: number;
|
||||||
|
isGroupFreeze: number;
|
||||||
|
allianceId: string;
|
||||||
|
groupExtOnly: {
|
||||||
|
tribeId: number;
|
||||||
|
moneyForAddGroup: number;
|
||||||
|
};
|
||||||
|
isAllowConfGroupMemberModifyGroupName: number;
|
||||||
|
isAllowConfGroupMemberNick: number;
|
||||||
|
isAllowConfGroupMemberAtAll: number;
|
||||||
|
groupClassText: string;
|
||||||
|
groupFreezeReason: number;
|
||||||
|
headPortraitSeq: number;
|
||||||
|
groupHeadPortrait: {
|
||||||
|
portraitCnt: number;
|
||||||
|
portraitInfo: any[];
|
||||||
|
defaultId: number;
|
||||||
|
verifyingPortraitCnt: number;
|
||||||
|
verifyingPortraitInfo: any[];
|
||||||
|
};
|
||||||
|
cmdUinJoinMsgSeq: number;
|
||||||
|
cmdUinJoinRealMsgSeq: number;
|
||||||
|
groupAnswer: string;
|
||||||
|
groupAdminMaxNum: number;
|
||||||
|
inviteNoAuthNumLimit: string;
|
||||||
|
hlGuildOrgId: number;
|
||||||
|
isAllowHlGuildBinary: number;
|
||||||
|
localExitGroupReason: number;
|
||||||
|
}
|
||||||
export interface GroupExt0xEF0InfoFilter {
|
export interface GroupExt0xEF0InfoFilter {
|
||||||
bindGuildId: number;
|
bindGuildId: number;
|
||||||
blacklistExpireTime: number;
|
blacklistExpireTime: number;
|
||||||
|
@@ -17,15 +17,14 @@ class GetGroupInfo extends OneBotAction<Payload, OB11Group> {
|
|||||||
async _handle(payload: Payload) {
|
async _handle(payload: Payload) {
|
||||||
const group = (await this.core.apis.GroupApi.getGroups()).find(e => e.groupCode == payload.group_id.toString());
|
const group = (await this.core.apis.GroupApi.getGroups()).find(e => e.groupCode == payload.group_id.toString());
|
||||||
if (!group) {
|
if (!group) {
|
||||||
const data = await this.core.apis.GroupApi.searchGroup(payload.group_id.toString());
|
const data = await this.core.apis.GroupApi.fetchGroupDetail(payload.group_id.toString());
|
||||||
if (!data) throw new Error('Group not found');
|
|
||||||
return {
|
return {
|
||||||
...data.searchGroupInfo,
|
...data,
|
||||||
group_id: +payload.group_id,
|
group_id: +payload.group_id,
|
||||||
group_name: data.searchGroupInfo.groupName,
|
group_name: data.groupName,
|
||||||
member_count: data.searchGroupInfo.memberNum,
|
member_count: data.memberNum,
|
||||||
max_member_count: data.searchGroupInfo.maxMemberNum,
|
max_member_count: data.maxMemberNum,
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
return OB11Construct.group(group);
|
return OB11Construct.group(group);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user