From 53a7ce2e46709fcf8e1f90717627790dc07b2360 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: Tue, 1 Apr 2025 20:43:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96webui=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E7=99=BB=E5=BD=95&=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=95=B4=E4=BD=93=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shell/base.ts | 5 +++++ src/webui/index.ts | 25 +++++++++++++------------ src/webui/src/helper/Data.ts | 10 ++++++++++ src/webui/src/types/data.d.ts | 1 + 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/shell/base.ts b/src/shell/base.ts index 51c730aa..0d5ada4a 100644 --- a/src/shell/base.ts +++ b/src/shell/base.ts @@ -222,6 +222,11 @@ async function handleLoginInner(context: { isLogined: boolean }, logger: LogWrap }`); } loginService.getQRCodePicture(); + try { + await WebUiDataRuntime.runWebUiConfigQuickFunction(); + } catch (error) { + logger.logError('WebUi 快速登录失败 执行失败', error); + } } loginService.getLoginList().then((res) => { diff --git a/src/webui/index.ts b/src/webui/index.ts index 716e84fc..17423d52 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -50,20 +50,21 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp logger.log('[NapCat] [WebUi] Current WebUi is not run.'); return; } - setTimeout(async () => { - let autoLoginAccount = process.env['NAPCAT_QUICK_ACCOUNT'] || WebUiConfig.getAutoLoginAccount(); - if (autoLoginAccount) { - try { - const { result, message } = await WebUiDataRuntime.requestQuickLogin(autoLoginAccount); - if (!result) { - throw new Error(message); + WebUiDataRuntime.setWebUiConfigQuickFunction( + async () => { + let autoLoginAccount = process.env['NAPCAT_QUICK_ACCOUNT'] || WebUiConfig.getAutoLoginAccount(); + if (autoLoginAccount) { + try { + const { result, message } = await WebUiDataRuntime.requestQuickLogin(autoLoginAccount); + if (!result) { + throw new Error(message); + } + console.log(`[NapCat] [WebUi] Auto login account: ${autoLoginAccount}`); + } catch (error) { + console.log(`[NapCat] [WebUi] Auto login account failed.` + error); } - console.log(`[NapCat] [WebUi] Auto login account: ${autoLoginAccount}`); - } catch (error) { - console.log(`[NapCat] [WebUi] Auto login account failed.` + error); } - } - }, 30000); + }); // ------------注册中间件------------ // 使用express的json中间件 app.use(express.json()); diff --git a/src/webui/src/helper/Data.ts b/src/webui/src/helper/Data.ts index bafc5ba5..c151f003 100644 --- a/src/webui/src/helper/Data.ts +++ b/src/webui/src/helper/Data.ts @@ -25,6 +25,9 @@ const LoginRuntime: LoginRuntimeType = { NewQQLoginList: [], }, packageJson: packageJson, + WebUiConfigQuickFunction: async () => { + return; + } }; export const WebUiDataRuntime = { @@ -118,4 +121,11 @@ export const WebUiDataRuntime = { getQQVersion() { return LoginRuntime.QQVersion; }, + + setWebUiConfigQuickFunction(func: LoginRuntimeType['WebUiConfigQuickFunction']): void { + LoginRuntime.WebUiConfigQuickFunction = func; + }, + runWebUiConfigQuickFunction: async function () { + await LoginRuntime.WebUiConfigQuickFunction(); + } }; diff --git a/src/webui/src/types/data.d.ts b/src/webui/src/types/data.d.ts index fb9a644e..d881a4b0 100644 --- a/src/webui/src/types/data.d.ts +++ b/src/webui/src/types/data.d.ts @@ -9,6 +9,7 @@ interface LoginRuntimeType { QQLoginUin: string; QQLoginInfo: SelfInfo; QQVersion: string; + WebUiConfigQuickFunction: () => Promise; NapCatHelper: { onQuickLoginRequested: (uin: string) => Promise<{ result: boolean; message: string }>; onOB11ConfigChanged: (ob11: OneBotConfig) => Promise;