From f3ae6fa70f83195ce59e690406d4657c875d2c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 25 Aug 2024 22:09:30 +0800 Subject: [PATCH 1/4] style: fix --- src/common/framework/event.ts | 5 ----- src/common/utils/ConfigBase.ts | 2 +- src/common/utils/QQBasicInfo.ts | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/common/framework/event.ts b/src/common/framework/event.ts index 41db0ab0..53fdc3aa 100644 --- a/src/common/framework/event.ts +++ b/src/common/framework/event.ts @@ -125,11 +125,6 @@ export class NTEventChannel extends EventEmitter { return new Promise>>(async (resolve, reject) => { const EventFunc = this.createEventFunction(EventName); let complete = false; - const Timeouter = setTimeout(() => { - if (!complete) { - reject(new Error('NTEvent EventName:' + EventName + ' timeout')); - } - }, timeout); const retData = await EventFunc!(...args); complete = true; resolve(retData); diff --git a/src/common/utils/ConfigBase.ts b/src/common/utils/ConfigBase.ts index ec2b2ef2..d1d34ded 100644 --- a/src/common/utils/ConfigBase.ts +++ b/src/common/utils/ConfigBase.ts @@ -53,7 +53,7 @@ export abstract class ConfigBase { } - save(newConfigData: T = this.configData as T) { + save(newConfigData: T = this.configData) { const logger = this.coreContext.context.logger; const selfInfo = this.coreContext.selfInfo; this.configData = newConfigData; diff --git a/src/common/utils/QQBasicInfo.ts b/src/common/utils/QQBasicInfo.ts index f7501835..669a3a80 100644 --- a/src/common/utils/QQBasicInfo.ts +++ b/src/common/utils/QQBasicInfo.ts @@ -46,7 +46,7 @@ export class QQBasicInfoWrapper { } requireMinNTQQBuild(buildStr: string) { - const currentBuild = parseInt(this.getQQBuildStr() || '0'); + const currentBuild = +(this.getQQBuildStr() ?? '0'); if (currentBuild == 0) throw new Error('QQBuildStr获取失败'); return currentBuild >= parseInt(buildStr); } From a9ade98315191c53e38bd7e4c43a3dc96a82b0fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 25 Aug 2024 22:12:38 +0800 Subject: [PATCH 2/4] style: remove unless --- src/common/framework/event.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/common/framework/event.ts b/src/common/framework/event.ts index 53fdc3aa..ff513c25 100644 --- a/src/common/framework/event.ts +++ b/src/common/framework/event.ts @@ -124,9 +124,7 @@ export class NTEventChannel extends EventEmitter { EventName = '', timeout: number = 3000, ...args: Parameters) { return new Promise>>(async (resolve, reject) => { const EventFunc = this.createEventFunction(EventName); - let complete = false; const retData = await EventFunc!(...args); - complete = true; resolve(retData); }); } From cdc4275f81606960db8a54bb520872a579f91d20 Mon Sep 17 00:00:00 2001 From: Alen Date: Sun, 25 Aug 2024 22:23:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E5=A4=9A=E4=B8=AA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复group_increase事件上报 修复启动时加载群员信息失败 修复文件发送失败 --- src/common/utils/file.ts | 23 ++++++++++++++--------- src/common/utils/helper.ts | 10 +++++----- src/core/apis/group.ts | 23 ++++------------------- src/onebot/api/group.ts | 2 +- src/onebot/helper/event.ts | 2 +- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/src/common/utils/file.ts b/src/common/utils/file.ts index 31d494ae..f90e037f 100644 --- a/src/common/utils/file.ts +++ b/src/common/utils/file.ts @@ -187,22 +187,27 @@ export enum FileUriType { export async function checkUriType(Uri: string) { - const LocalFileRet = await solveProblem((Uri) => { if (fs.existsSync(Uri)) return { Uri: Uri, Type: FileUriType.Local }; }); + const LocalFileRet = await solveProblem((uri: string) => { + if (fs.existsSync(uri)) { + return { Uri: uri, Type: FileUriType.Local }; + } + return undefined; + }, Uri); if (LocalFileRet) return LocalFileRet; - const OtherFileRet = await solveProblem((Uri) => { + const OtherFileRet = await solveProblem((uri: string) => { //再判断是否是Http - if (Uri.startsWith('http://') || Uri.startsWith('https://')) { - return { Uri: Uri, Type: FileUriType.Remote }; + if (uri.startsWith('http://') || uri.startsWith('https://')) { + return { Uri: uri, Type: FileUriType.Remote }; } //再判断是否是Base64 - if (Uri.startsWith('base64://')) { - return { Uri: Uri, Type: FileUriType.Base64 }; + if (uri.startsWith('base64://')) { + return { Uri: uri, Type: FileUriType.Base64 }; } - if (Uri.startsWith('file://')) { + if (uri.startsWith('file://')) { let filePath: string; // await fs.copyFile(url.pathname, filePath); - const pathname = decodeURIComponent(new URL(Uri).pathname); + const pathname = decodeURIComponent(new URL(uri).pathname); if (process.platform === 'win32') { filePath = pathname.slice(1); } else { @@ -210,7 +215,7 @@ export async function checkUriType(Uri: string) { } return { Uri: filePath, Type: FileUriType.Local }; } - }); + }, Uri); if (OtherFileRet) return OtherFileRet; return { Uri: Uri, Type: FileUriType.Unknown }; diff --git a/src/common/utils/helper.ts b/src/common/utils/helper.ts index dd3720f9..fd718908 100644 --- a/src/common/utils/helper.ts +++ b/src/common/utils/helper.ts @@ -3,10 +3,10 @@ import fs from 'fs'; import os from 'node:os'; import { QQLevel } from '@/core'; -export async function solveProblem any>(func: T): Promise | undefined> { - return new Promise | undefined>(async (resolve) => { +export async function solveProblem any>(func: T, ...args: Parameters): Promise | undefined> { + return new Promise | undefined>((resolve) => { try { - const result = func(); + const result = func(...args); resolve(result); } catch (e) { resolve(undefined); @@ -14,10 +14,10 @@ export async function solveProblem any>(func: T): P }); } -export async function solveAsyncProblem Promise>(func: T): Promise> | undefined> { +export async function solveAsyncProblem Promise>(func: T, ...args: Parameters): Promise> | undefined> { return new Promise> | undefined>(async (resolve) => { try { - const result = await func(); + const result = await func(...args); resolve(result); } catch (e) { resolve(undefined); diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index da3c1f1d..378373fc 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -14,7 +14,7 @@ import { NodeIKernelGroupListener, NodeIKernelGroupService, } from '@/core'; -import { isNumeric, runAllWithTimeout } from '@/common/utils/helper'; +import { isNumeric, runAllWithTimeout, sleep } from '@/common/utils/helper'; export class NTQQGroupApi { context: InstanceContext; @@ -25,7 +25,9 @@ export class NTQQGroupApi { constructor(context: InstanceContext, core: NapCatCore) { this.context = context; this.core = core; - this.initCache().then().catch(context.logger.logError); + sleep(1000).then(() => { + this.initCache().then().catch(context.logger.logError); + }); } async initCache() { this.groups = await this.getGroups(); @@ -269,10 +271,7 @@ export class NTQQGroupApi { } async getGroupMemberV2(GroupCode: string, uid: string, forced = false) { - //type ListenerType = NodeIKernelGroupListener['onMemberInfoChange']; type EventType = NodeIKernelGroupService['getMemberInfo']; - // NTEventDispatch.CreatListenerFunction('NodeIKernelGroupListener/onGroupMemberInfoUpdate', - //return napCatCore.session.getGroupService().getMemberInfo(GroupCode, [uid], forced); const Listener = this.core.eventWrapper.RegisterListen<(params: any) => void> ( 'NodeIKernelGroupListener/onMemberInfoChange', @@ -294,20 +293,6 @@ export class NTQQGroupApi { member = members.get(uid); } return member; - - // 原本的方法: (no_cache 下效率很高, cache 下效率一致) - // const [, , , _members] = await this.core.eventWrapper.CallNormalEvent - // ( - // 'NodeIKernelGroupService/getMemberInfo', - // 'NodeIKernelGroupListener/onMemberInfoChange', - // 1, - // 5000, - // (groupCode: string, changeType: number, members: Map) => { - // return groupCode == GroupCode && members.has(uid); - // }, - // GroupCode, [uid], forced, - // ); - // return _members.get(uid); } async getGroupMembers(groupQQ: string, num = 3000): Promise> { diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index e3a02571..b16883ce 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -75,7 +75,7 @@ export class OneBotGroupApi { const NTQQGroupApi = this.coreContext.apis.GroupApi; const groupElement = grayTipElement?.groupElement; if (!groupElement) return undefined; - const member = await NTQQGroupApi.getGroupMember(GroupCode, groupElement.memberUid); + const member = await NTQQGroupApi.getGroupMemberV2(GroupCode, groupElement.memberUid); const memberUin = member?.uin; const adminMember = await NTQQGroupApi.getGroupMember(GroupCode, groupElement.adminUid); if (memberUin) { diff --git a/src/onebot/helper/event.ts b/src/onebot/helper/event.ts index 730b21b3..8589e8e4 100644 --- a/src/onebot/helper/event.ts +++ b/src/onebot/helper/event.ts @@ -94,7 +94,7 @@ export async function NT2GroupEvent(core: NapCatCore, obContext: NapCatOneBot11A if (emojiLikeEvent) return emojiLikeEvent; } if (element.grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_XMLMSG) { - const GroupIncreaseEvent = await obContext.apiContext.GroupApi.parseGroupMemberIncreaseEvent(msg.peerUid, element.grayTipElement); + const GroupIncreaseEvent = await obContext.apiContext.GroupApi.parseGroupIncreaseEvent(msg.peerUid, element.grayTipElement); if (GroupIncreaseEvent) return GroupIncreaseEvent; } From 08446e648e1913d6cf9a4b3209d857a619e73656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 25 Aug 2024 22:36:42 +0800 Subject: [PATCH 4/4] release: 2.2.8 --- manifest.json | 2 +- package.json | 2 +- src/common/framework/napcat.ts | 2 +- src/onebot/action/msg/SendMsg/create-send-elements.ts | 2 +- src/webui/ui/NapCat.ts | 2 +- static/assets/renderer.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/manifest.json b/manifest.json index c0849fb7..fc55ba22 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "2.2.7", + "version": "2.2.8", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 0d5ca56d..78b31b2c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "2.2.7", + "version": "2.2.8", "scripts": { "build:framework": "vite build --mode framework", "build:shell": "vite build --mode shell", diff --git a/src/common/framework/napcat.ts b/src/common/framework/napcat.ts index 317de81c..328308d6 100644 --- a/src/common/framework/napcat.ts +++ b/src/common/framework/napcat.ts @@ -2,7 +2,7 @@ import path, { dirname } from 'path'; import { fileURLToPath } from 'url'; import fs from 'fs'; -export const napcat_version = '2.2.7'; +export const napcat_version = '2.2.8'; export class NapCatPathWrapper { binaryPath: string; diff --git a/src/onebot/action/msg/SendMsg/create-send-elements.ts b/src/onebot/action/msg/SendMsg/create-send-elements.ts index 5a8ebae2..d3bc3917 100644 --- a/src/onebot/action/msg/SendMsg/create-send-elements.ts +++ b/src/onebot/action/msg/SendMsg/create-send-elements.ts @@ -171,7 +171,7 @@ const _handlers: { } else { postData = data; } - // Mlikiowa V2.2.7 Refactor Todo + // Mlikiowa V2.2.8 Refactor Todo const signUrl = obContext.configLoader.configData.musicSignUrl; if (!signUrl) { if (data.type === 'qq') { diff --git a/src/webui/ui/NapCat.ts b/src/webui/ui/NapCat.ts index 547954cf..a35b7473 100644 --- a/src/webui/ui/NapCat.ts +++ b/src/webui/ui/NapCat.ts @@ -30,7 +30,7 @@ async function onSettingWindowCreated(view: Element) { SettingItem( 'Napcat', undefined, - SettingButton('V2.2.7', 'napcat-update-button', 'secondary'), + SettingButton('V2.2.8', 'napcat-update-button', 'secondary'), ), ]), SettingList([ diff --git a/static/assets/renderer.js b/static/assets/renderer.js index e188101b..ea7114e6 100644 --- a/static/assets/renderer.js +++ b/static/assets/renderer.js @@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) { SettingItem( 'Napcat', void 0, - SettingButton("V2.2.7", "napcat-update-button", "secondary") + SettingButton("V2.2.8", "napcat-update-button", "secondary") ) ]), SettingList([