chore: 快速登录

This commit is contained in:
手瓜一十雪 2024-08-11 23:24:20 +08:00
parent a78bc686cd
commit 35e75be0d0
3 changed files with 37 additions and 6 deletions

View File

@ -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);
}

View File

@ -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() {

View File

@ -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,8 +171,7 @@ 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}`)
logger.log(`可用于快速登录的 QQ\n${historyLoginList.map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`)
.join('\n')
}`);
}