From d3abaf806f6cbe81ab0177ddaa750c1a3e93f83f Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 13 Oct 2024 16:31:04 +0800 Subject: [PATCH] optimize --- src/ntqqapi/api/group.ts | 7 +++++-- src/ntqqapi/api/user.ts | 2 +- src/ntqqapi/native/index.ts | 3 +-- src/ntqqapi/ntcall.ts | 11 ++++++++--- tsconfig.json | 7 +++++-- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/ntqqapi/api/group.ts b/src/ntqqapi/api/group.ts index 791bbb3..c4cd7e5 100644 --- a/src/ntqqapi/api/group.ts +++ b/src/ntqqapi/api/group.ts @@ -45,8 +45,11 @@ export class NTQQGroupApi extends Service { return result.groupList } - async getGroupMembers(groupCode: string, num = 3000): Promise> { - const sceneId = await invoke(NTMethod.GROUP_MEMBER_SCENE, [{ groupCode, scene: 'groupMemberList_MainWindow' }]) + async getGroupMembers(groupCode: string, num = 3000) { + const sceneId = await invoke(NTMethod.GROUP_MEMBER_SCENE, [{ + groupCode, + scene: 'groupMemberList_MainWindow' + }]) const data = await invoke(NTMethod.GROUP_MEMBERS, [{ sceneId, num }]) if (data.errCode !== 0) { throw new Error('获取群成员列表出错,' + data.errMsg) diff --git a/src/ntqqapi/api/user.ts b/src/ntqqapi/api/user.ts index dc9f7f8..77aeea0 100644 --- a/src/ntqqapi/api/user.ts +++ b/src/ntqqapi/api/user.ts @@ -118,7 +118,7 @@ export class NTQQUserApi extends Service { await this.ctx.sleep(30) member = await this.ctx.ntGroupApi.searchMember(groupCode, uin) } - uid = member.values().find(e => e.uin === uin)?.uid + uid = Array.from(member.values()).find(e => e.uin === uin)?.uid } if (!uid) { const unveifyUid = (await this.getUserDetailInfoByUin(uin)).info.uid diff --git a/src/ntqqapi/native/index.ts b/src/ntqqapi/native/index.ts index 12c2eaa..66cdacd 100644 --- a/src/ntqqapi/native/index.ts +++ b/src/ntqqapi/native/index.ts @@ -1,7 +1,6 @@ import { Context } from 'cordis' import { Dict } from 'cosmokit' import { getBuildVersion } from '@/common/utils/misc' -// @ts-expect-error: Unreachable code error import addon from './external/crychic-win32-x64.node?asset' export class Native { @@ -35,7 +34,7 @@ export class Native { } try { this.crychic = require(addon) - this.crychic.init() + this.crychic!.init() } catch (e) { this.ctx.logger.warn('crychic 加载失败', e) } diff --git a/src/ntqqapi/ntcall.ts b/src/ntqqapi/ntcall.ts index fc92890..4a18105 100644 --- a/src/ntqqapi/ntcall.ts +++ b/src/ntqqapi/ntcall.ts @@ -124,7 +124,12 @@ export function invoke< return new Promise((resolve, reject) => { const apiArgs = [method, ...args] const callbackId = randomUUID() + let eventId: string + const timeoutId = setTimeout(() => { + if (eventId) { + removeReceiveHook(eventId) + } log(`ntqq api timeout ${channel}, ${eventName}, ${method}`, args) reject(`ntqq api timeout ${channel}, ${eventName}, ${method}, ${JSON.stringify(args)}`) }, timeout) @@ -140,16 +145,16 @@ export function invoke< let result: unknown // 这里的callback比较特殊,QQ后端先返回是否调用成功,再返回一条结果数据 const secondCallback = () => { - const hookId = registerReceiveHook(options.cbCmd!, (payload) => { + eventId = registerReceiveHook(options.cbCmd!, (payload) => { if (options.cmdCB) { if (options.cmdCB(payload, result)) { - removeReceiveHook(hookId) + removeReceiveHook(eventId) clearTimeout(timeoutId) resolve(payload) } } else { - removeReceiveHook(hookId) + removeReceiveHook(eventId) clearTimeout(timeoutId) resolve(payload) } diff --git a/tsconfig.json b/tsconfig.json index ee046bc..9046471 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "ESNext", + "target": "ES2023", "module": "CommonJS", "outDir": "./dist", "strict": true, @@ -20,7 +20,10 @@ "./src/ntqqapi/*" ] }, - "noEmit": true + "noEmit": true, + "types": [ + "electron-vite/node" + ] }, "include": [ "src",