From 27f98a459c64929b90e390866e5220d9e2e71232 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Tue, 28 May 2024 15:31:59 +0800 Subject: [PATCH] fix: member info change on version 24108 --- src/main/main.ts | 8 ++++++- src/ntqqapi/api/group.ts | 45 +++++++++++++++++++++++++++++++++- src/ntqqapi/api/msg.ts | 52 ++++++++++++++++++++++++++++++++++------ src/ntqqapi/ntcall.ts | 8 +++++++ 4 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/main/main.ts b/src/main/main.ts index 0b4108d..a48542a 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -421,7 +421,13 @@ function onLoad() { } }) startReceiveHook().then() - NTQQGroupApi.getGroups(true).then() + NTQQGroupApi.getGroups(true).then(groups=> { + for (let group of groups) { + } + } + ).catch(log) + NTQQGroupApi.activateMemberInfoChange().then().catch(log) + NTQQGroupApi.activateMemberListChange().then().catch(log) const config = getConfigUtil().getConfig() if (config.ob11.enableHttp) { ob11HTTPServer.start(config.ob11.httpPort) diff --git a/src/ntqqapi/api/group.ts b/src/ntqqapi/api/group.ts index 9618770..cbc4803 100644 --- a/src/ntqqapi/api/group.ts +++ b/src/ntqqapi/api/group.ts @@ -7,6 +7,33 @@ import { log } from '../../common/utils/log' import { NTQQWindowApi, NTQQWindows } from './window' export class NTQQGroupApi { + + static async activateMemberListChange(){ + return await callNTQQApi({ + methodName: NTQQApiMethod.ACTIVATE_MEMBER_LIST_CHANGE, + classNameIsRegister: true, + args: [], + }) + } + static async activateMemberInfoChange(){ + return await callNTQQApi({ + methodName: NTQQApiMethod.ACTIVATE_MEMBER_INFO_CHANGE, + classNameIsRegister: true, + args: [], + }) + } + static async getGroupAllInfo(groupCode: string, source: number=4){ + return await callNTQQApi({ + methodName: NTQQApiMethod.GET_GROUP_ALL_INFO, + args: [ + { + groupCode, + source + }, + null, + ], + }) + } static async getGroups(forced = false) { let cbCmd = ReceiveCmdS.GROUPS if (process.platform != 'win32') { @@ -58,6 +85,19 @@ export class NTQQGroupApi { return [] } } + static async getGroupMembersInfo(groupCode: string, uids: string[], forceUpdate: boolean=false) { + return await callNTQQApi({ + methodName: NTQQApiMethod.GROUP_MEMBERS_INFO, + args: [ + { + forceUpdate, + groupCode, + uids + }, + null, + ], + }) + } static async getGroupNotifies() { // 获取管理员变更 // 加群通知,退出通知,需要管理员权限 @@ -158,7 +198,8 @@ export class NTQQGroupApi { }) } static async setMemberCard(groupQQ: string, memberUid: string, cardName: string) { - return await callNTQQApi({ + NTQQGroupApi.activateMemberListChange().then().catch(log) + const res = await callNTQQApi({ methodName: NTQQApiMethod.SET_MEMBER_CARD, args: [ { @@ -169,6 +210,8 @@ export class NTQQGroupApi { null, ], }) + NTQQGroupApi.getGroupMembersInfo(groupQQ, [memberUid], true).then().catch(log) + return res; } static async setMemberRole(groupQQ: string, memberUid: string, role: GroupMemberRole) { return await callNTQQApi({ diff --git a/src/ntqqapi/api/msg.ts b/src/ntqqapi/api/msg.ts index 0b9f76b..a91a8dd 100644 --- a/src/ntqqapi/api/msg.ts +++ b/src/ntqqapi/api/msg.ts @@ -29,7 +29,8 @@ async function sendWaiter(peer: Peer, waitComplete = true, timeout: number = 100 await sleep(500) checkLastSendUsingTime += 500 return await waitLastSend() - } else { + } + else { return } } @@ -48,7 +49,8 @@ async function sendWaiter(peer: Peer, waitComplete = true, timeout: number = 100 if ((await dbUtil.getMsgByLongId(sentMessage.msgId)).sendStatus == 2) { return sentMessage } - } else { + } + else { return sentMessage } // log(`给${peerUid}发送消息成功`) @@ -60,10 +62,28 @@ async function sendWaiter(peer: Peer, waitComplete = true, timeout: number = 100 await sleep(500) return await checkSendComplete() } - return checkSendComplete(); + return checkSendComplete() } export class NTQQMsgApi { + static enterOrExitAIO(peer: Peer, enter: boolean) { + return callNTQQApi({ + methodName: NTQQApiMethod.ENTER_OR_EXIT_AIO, + args: [ + { + "info_list": [ + { + peer, + "option": enter ? 1 : 2 + } + ] + }, + { + "send": true + }, + ], + }) + } static async setEmojiLike(peer: Peer, msgSeq: string, emojiId: string, set: boolean = true) { // nt_qq//global//nt_data//Emoji//emoji-resource//sysface_res/apng/ 下可以看到所有QQ表情预览 // nt_qq\global\nt_data\Emoji\emoji-resource\face_config.json 里面有所有表情的id, 自带表情id是QSid, 标准emoji表情id是QCid @@ -83,6 +103,7 @@ export class NTQQMsgApi { ], }) } + static async getMultiMsg(peer: Peer, rootMsgId: string, parentMsgId: string) { return await callNTQQApi({ methodName: NTQQApiMethod.GET_MULTI_MSG, @@ -97,6 +118,20 @@ export class NTQQMsgApi { }) } + static async getMsgBoxInfo(peer: Peer) { + return await callNTQQApi({ + methodName: NTQQApiMethod.GET_MSG_BOX_INFO, + args: [ + { + contacts: [ + peer + ], + }, + null, + ], + }) + } + static async activateChat(peer: Peer) { // await this.fetchRecentContact(); // await sleep(500); @@ -105,6 +140,7 @@ export class NTQQMsgApi { args: [{ peer, cnt: 20 }, null], }) } + static async activateChatAndGetHistory(peer: Peer) { // await this.fetchRecentContact(); // await sleep(500); @@ -114,6 +150,7 @@ export class NTQQMsgApi { args: [{ peer, cnt: 20 }, null], }) } + static async getMsgHistory(peer: Peer, msgId: string, count: number) { // 消息时间从旧到新 return await callNTQQApi({ @@ -129,6 +166,7 @@ export class NTQQMsgApi { ], }) } + static async fetchRecentContact() { await callNTQQApi({ methodName: NTQQApiMethod.RECENT_CONTACT, @@ -164,7 +202,7 @@ export class NTQQMsgApi { } static async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) { - const waiter = sendWaiter(peer, waitComplete, timeout); + const waiter = sendWaiter(peer, waitComplete, timeout) callNTQQApi({ methodName: NTQQApiMethod.SEND_MSG, args: [ @@ -177,11 +215,11 @@ export class NTQQMsgApi { null, ], }).then() - return await waiter; + return await waiter } static async forwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]) { - const waiter = sendWaiter(destPeer, true, 10000); + const waiter = sendWaiter(destPeer, true, 10000) callNTQQApi({ methodName: NTQQApiMethod.FORWARD_MSG, args: [ @@ -195,7 +233,7 @@ export class NTQQMsgApi { null, ], }).then().catch(log) - return await waiter; + return await waiter } static async multiForwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]) { diff --git a/src/ntqqapi/ntcall.ts b/src/ntqqapi/ntcall.ts index a76dca6..0177765 100644 --- a/src/ntqqapi/ntcall.ts +++ b/src/ntqqapi/ntcall.ts @@ -27,13 +27,17 @@ export enum NTQQApiMethod { HISTORY_MSG = 'nodeIKernelMsgService/getMsgsIncludeSelf', GET_MULTI_MSG = 'nodeIKernelMsgService/getMultiMsg', DELETE_ACTIVE_CHAT = 'nodeIKernelMsgService/deleteActiveChatByUid', + ENTER_OR_EXIT_AIO = 'nodeIKernelMsgService/enterOrExitAio', LIKE_FRIEND = 'nodeIKernelProfileLikeService/setBuddyProfileLike', SELF_INFO = 'fetchAuthData', FRIENDS = 'nodeIKernelBuddyService/getBuddyList', + GROUPS = 'nodeIKernelGroupService/getGroupList', GROUP_MEMBER_SCENE = 'nodeIKernelGroupService/createMemberListScene', GROUP_MEMBERS = 'nodeIKernelGroupService/getNextMemberList', + GROUP_MEMBERS_INFO = 'nodeIKernelGroupService/getMemberInfo', + USER_INFO = 'nodeIKernelProfileService/getUserSimpleInfo', USER_DETAIL_INFO = 'nodeIKernelProfileService/getUserDetailInfo', USER_DETAIL_INFO_WITH_BIZ_INFO = 'nodeIKernelProfileService/getUserDetailInfoWithBizInfo', @@ -65,6 +69,10 @@ export enum NTQQApiMethod { PUBLISH_GROUP_BULLETIN = 'nodeIKernelGroupService/publishGroupBulletinBulletin', SET_GROUP_NAME = 'nodeIKernelGroupService/modifyGroupName', SET_GROUP_TITLE = 'nodeIKernelGroupService/modifyMemberSpecialTitle', + ACTIVATE_MEMBER_LIST_CHANGE = 'nodeIKernelGroupListener/onMemberListChange', + ACTIVATE_MEMBER_INFO_CHANGE = 'nodeIKernelGroupListener/onMemberInfoChange', + GET_MSG_BOX_INFO = 'nodeIKernelMsgService/getABatchOfContactMsgBoxInfo', + GET_GROUP_ALL_INFO = 'nodeIKernelGroupService/getGroupAllInfo', CACHE_SET_SILENCE = 'nodeIKernelStorageCleanService/setSilentScan', CACHE_ADD_SCANNED_PATH = 'nodeIKernelStorageCleanService/addCacheScanedPaths',