From 436249597d0693c27c8aeacea8063c002e877f8a Mon Sep 17 00:00:00 2001 From: "Wesley F. Young" Date: Mon, 12 Aug 2024 01:08:55 +0800 Subject: [PATCH 1/3] fix: use constructor to pass config name --- src/common/utils/ConfigBase.ts | 5 +++-- src/core/helper/config.ts | 6 ++++-- src/onebot/helper/config.ts | 7 ++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/common/utils/ConfigBase.ts b/src/common/utils/ConfigBase.ts index 18d59ef5..5bb86fbc 100644 --- a/src/common/utils/ConfigBase.ts +++ b/src/common/utils/ConfigBase.ts @@ -3,12 +3,13 @@ import fs from 'node:fs'; import type { NapCatCore } from '@/core'; export abstract class ConfigBase { - abstract name: string; + name: string; coreContext: NapCatCore; configPath: string; configData: T = {} as T; - constructor(coreContext: NapCatCore, configPath: string) { + protected constructor(name: string, coreContext: NapCatCore, configPath: string) { + this.name = name; this.coreContext = coreContext; this.configPath = configPath; fs.mkdirSync(this.configPath, { recursive: true }); diff --git a/src/core/helper/config.ts b/src/core/helper/config.ts index 72fb3af2..5860b27d 100644 --- a/src/core/helper/config.ts +++ b/src/core/helper/config.ts @@ -1,11 +1,13 @@ import { ConfigBase } from "@/common/utils/ConfigBase"; -import { LogLevel } from "@/common/utils/log"; import napCatDefaultConfig from '@/core/external/napcat.json'; +import { NapCatCore } from '@/core'; // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export type NapCatConfig = typeof napCatDefaultConfig; // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class NapCatConfigLoader extends ConfigBase { - name = 'napcat'; + constructor(coreContext: NapCatCore, configPath: string) { + super('napcat', coreContext, configPath); + } } diff --git a/src/onebot/helper/config.ts b/src/onebot/helper/config.ts index 70c4fe2a..d7929b7a 100644 --- a/src/onebot/helper/config.ts +++ b/src/onebot/helper/config.ts @@ -1,10 +1,11 @@ import { ConfigBase } from '@/common/utils/ConfigBase'; import ob11DefaultConfig from '@/onebot/external/onebot11.json'; +import { NapCatCore } from '@/core'; -// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export type OB11Config = typeof ob11DefaultConfig; -// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class OB11ConfigLoader extends ConfigBase { - name = 'onebot11'; + constructor(coreContext: NapCatCore, configPath: string) { + super('onebot11', coreContext, configPath); + } } From 715221334490457b3c8f4de0b9c211b4435e80ca Mon Sep 17 00:00:00 2001 From: "Wesley F. Young" Date: Mon, 12 Aug 2024 01:12:27 +0800 Subject: [PATCH 2/3] fix: inherit logging level from config --- src/common/utils/log.ts | 11 +++++------ src/core/core.ts | 14 +++++++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/common/utils/log.ts b/src/common/utils/log.ts index 441025b1..f65551f2 100644 --- a/src/common/utils/log.ts +++ b/src/common/utils/log.ts @@ -68,7 +68,7 @@ export class LogWrapper { this.setLogSelfInfo({ nick: '', uin: '', uid: '' }); } - setLogLevel(fileLogLevel: LogLevel, consoleLogLevel: LogLevel) { + setFileAndConsoleLogLevel(fileLogLevel: LogLevel, consoleLogLevel: LogLevel) { this.logConfig.categories.file.level = fileLogLevel; this.logConfig.categories.console.level = consoleLogLevel; log4js.configure(this.logConfig); @@ -81,13 +81,12 @@ export class LogWrapper { this.loggerDefault.addContext('userInfo', userInfo); } - - enableFileLog(enable: boolean) { - this.fileLogEnabled = enable; + setFileLogEnabled(isEnabled: boolean) { + this.fileLogEnabled = isEnabled; } - enableConsoleLog(enable: boolean) { - this.consoleLogEnabled = enable; + setConsoleLogEnabled(isEnabled: boolean) { + this.consoleLogEnabled = isEnabled; } formatMsg(msg: any[]) { diff --git a/src/core/core.ts b/src/core/core.ts index 13dd2eb9..c6b8bbb8 100644 --- a/src/core/core.ts +++ b/src/core/core.ts @@ -10,6 +10,7 @@ import { NTQQFileApi, NTQQFriendApi, NTQQGroupApi, NTQQMsgApi, NTQQSystemApi, NT import os from 'node:os'; import { NTQQCollectionApi } from './apis/collection'; import { NapCatConfigLoader } from './helper/config'; +import { LogLevel } from '@/common/utils/log'; export enum NapCatCoreWorkingEnv { Unknown = 0, @@ -55,7 +56,7 @@ export class NapCatCore { UserApi: new NTQQUserApi(this.context, this), GroupApi: new NTQQGroupApi(this.context, this), }; - this.configLoader = new NapCatConfigLoader(this,this.context.pathWrapper.configPath); + this.configLoader = new NapCatConfigLoader(this, this.context.pathWrapper.configPath); this.NapCatDataPath = path.join(this.dataPath, 'NapCat'); fs.mkdirSync(this.NapCatDataPath, { recursive: true }); this.NapCatTempPath = path.join(this.NapCatDataPath, 'temp'); @@ -64,6 +65,17 @@ export class NapCatCore { fs.mkdirSync(this.NapCatTempPath, { recursive: true }); } this.initNapCatCoreListeners().then().catch(this.context.logger.logError); + + this.context.logger.setFileLogEnabled( + this.configLoader.configData.fileLog, + ); + this.context.logger.setConsoleLogEnabled( + this.configLoader.configData.consoleLog, + ); + this.context.logger.setFileAndConsoleLogLevel( + this.configLoader.configData.fileLogLevel as LogLevel, + this.configLoader.configData.consoleLogLevel as LogLevel, + ); } get dataPath(): string { From a7fb18d5c005ba2f2299203aea2aecc9cde3215b Mon Sep 17 00:00:00 2001 From: "Wesley F. Young" Date: Mon, 12 Aug 2024 01:13:10 +0800 Subject: [PATCH 3/3] chore: clean-up --- src/shell/napcat.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/shell/napcat.ts b/src/shell/napcat.ts index 424fd48f..41f735ad 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -26,7 +26,6 @@ import qrcode from 'qrcode-terminal'; import { NapCatOneBot11Adapter } from '@/onebot'; import { InitWebUi } from '@/webui'; import { WebUiDataRuntime } from '@/webui/src/helper/Data'; -import { promisify } from 'util'; program.option('-q, --qq [number]', 'QQ号').parse(process.argv); const cmdOptions = program.opts(); @@ -151,7 +150,7 @@ export async function NCoreInitShell() { }); WebUiDataRuntime.setQQQuickLoginCall(async (uin: string) => { - const QuickLogin: Promise<{ result: boolean, message: string }> = new Promise((resolve, reject) => { + return await new Promise((resolve) => { if (uin) { logger.log('正在快速登录 ', uin); loginService.quickLoginWithUin(uin).then(res => { @@ -167,8 +166,6 @@ export async function NCoreInitShell() { resolve({ result: false, message: '快速登录失败' }); } }); - const result = await QuickLogin; - return result; }); if (quickLoginUin && historyLoginList.some(u => u.uin === quickLoginUin)) { @@ -186,9 +183,11 @@ export async function NCoreInitShell() { } else { logger.log('没有 -q 指令指定快速登录,或未曾登录过这个 QQ,将使用二维码登录方式'); if (historyLoginList.length > 0) { - logger.log(`可用于快速登录的 QQ:\n${historyLoginList.map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`) - .join('\n') - }`); + logger.log(`可用于快速登录的 QQ:\n${ + historyLoginList + .map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`) + .join('\n') + }`); } loginService.getQRCodePicture(); }