From 35e75be0d0dc16f01b17b3499e4b1e1dd9ba9804 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, 11 Aug 2024 23:24:20 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=BF=AB=E9=80=9F=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/napcat.ts | 3 ++- src/onebot/main.ts | 1 - src/shell/napcat.ts | 39 +++++++++++++++++++++++++++++++++++---- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/framework/napcat.ts b/src/framework/napcat.ts index c87e7ec4..a698b98a 100644 --- a/src/framework/napcat.ts +++ b/src/framework/napcat.ts @@ -9,6 +9,7 @@ import { LoginListener } from '@/core/listeners'; import { NodeIKernelLoginService } from '@/core/services'; import { NodeIQQNTWrapperSession, WrapperNodeApi } from '@/core/wrapper/wrapper'; import { NapCatOneBot11Adapter } from '@/onebot/main'; +import { InitWebUi } from '@/webui'; //Framework ES入口文件 export async function NCoreInitFramework( @@ -45,7 +46,7 @@ export async function NCoreInitFramework( const loaderObject = new NapCatFramework(wrapper, session, logger, loginService, selfInfo, basicInfoWrapper, pathWrapper); //启动WebUi - + InitWebUi(logger, pathWrapper).then().catch(logger.logError); //初始化LLNC的Onebot实现 new NapCatOneBot11Adapter(loaderObject.core, loaderObject.context, pathWrapper); } diff --git a/src/onebot/main.ts b/src/onebot/main.ts index 88a142f7..9c57de5e 100644 --- a/src/onebot/main.ts +++ b/src/onebot/main.ts @@ -117,7 +117,6 @@ export class NapCatOneBot11Adapter { await WebUiDataRuntime.setOB11ConfigCall(async (ob11: OB11Config) => { this.config.save(ob11); }); - InitWebUi(this.context.logger, this.context.pathWrapper).then().catch(this.context.logger.logError); } private initMsgListener() { diff --git a/src/shell/napcat.ts b/src/shell/napcat.ts index e978152b..e8b6186d 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -24,6 +24,9 @@ import { NodeIKernelLoginService } from '@/core/services'; import { program } from 'commander'; 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(); @@ -37,6 +40,8 @@ export async function NCoreInitShell() { const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion()); + InitWebUi(logger, pathWrapper).then().catch(logger.logError); + // from constructor const engine = new wrapper.NodeIQQNTWrapperEngine(); const util = new wrapper.NodeQQNTWrapperUtil(); @@ -124,6 +129,33 @@ export async function NCoreInitShell() { loginService.addKernelLoginListener(new wrapper.NodeIKernelLoginListener( proxiedListenerOf(loginListener, logger))); + // 实现WebUi快速登录 + loginService.getLoginList().then((res) => { + // 遍历 res.LocalLoginInfoList[x].isQuickLogin是否可以 res.LocalLoginInfoList[x].uin 转为string 加入string[] 最后遍历完成调用WebUiDataRuntime.setQQQuickLoginList + WebUiDataRuntime.setQQQuickLoginList(res.LocalLoginInfoList.filter((item) => item.isQuickLogin).map((item) => item.uin.toString())); + }); + + WebUiDataRuntime.setQQQuickLoginCall(async (uin: string) => { + const QuickLogin: Promise<{ result: boolean, message: string }> = new Promise((resolve, reject) => { + if (uin) { + logger.log('正在快速登录 ', uin); + loginService.quickLoginWithUin(uin).then(res => { + if (res.loginErrorInfo.errMsg) { + resolve({ result: false, message: res.loginErrorInfo.errMsg }); + } + resolve({ result: true, message: '' }); + }).catch((e) => { + logger.logError(e); + resolve({ result: false, message: '快速登录发生错误' }); + }); + } else { + resolve({ result: false, message: '快速登录失败' }); + } + }); + const result = await QuickLogin; + return result; + }); + if (quickLoginUin && historyLoginList.some(u => u.uin === quickLoginUin)) { logger.log('正在快速登录 ', quickLoginUin); setTimeout(() => { @@ -139,10 +171,9 @@ 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(); }