mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-01-08 12:09:00 +08:00
167 lines
4.6 KiB
TypeScript
167 lines
4.6 KiB
TypeScript
import store from 'napcat-common/src/store';
|
||
import { napCatVersion } from 'napcat-common/src/version';
|
||
import { NapCatCoreWorkingEnv, type LoginRuntimeType } from '../types';
|
||
|
||
const LoginRuntime: LoginRuntimeType = {
|
||
workingEnv: NapCatCoreWorkingEnv.Unknown,
|
||
LoginCurrentTime: Date.now(),
|
||
LoginCurrentRate: 0,
|
||
QQLoginStatus: false, // 已实现 但太傻了 得去那边注册个回调刷新
|
||
QQQRCodeURL: '',
|
||
QQLoginUin: '',
|
||
QQLoginInfo: {
|
||
uid: '',
|
||
uin: '',
|
||
nick: '',
|
||
},
|
||
QQVersion: 'unknown',
|
||
OneBotContext: null,
|
||
onQQLoginStatusChange: async (status: boolean) => {
|
||
LoginRuntime.QQLoginStatus = status;
|
||
},
|
||
onWebUiTokenChange: async (_token: string) => {
|
||
|
||
},
|
||
NapCatHelper: {
|
||
onOB11ConfigChanged: async () => {
|
||
|
||
},
|
||
onQuickLoginRequested: async () => {
|
||
return { result: false, message: '' };
|
||
},
|
||
QQLoginList: [],
|
||
NewQQLoginList: [],
|
||
},
|
||
NapCatVersion: napCatVersion,
|
||
WebUiConfigQuickFunction: async () => {
|
||
|
||
},
|
||
};
|
||
export const WebUiDataRuntime = {
|
||
setWorkingEnv (env: NapCatCoreWorkingEnv): void {
|
||
LoginRuntime.workingEnv = env;
|
||
},
|
||
getWorkingEnv (): NapCatCoreWorkingEnv {
|
||
return LoginRuntime.workingEnv;
|
||
},
|
||
setWebUiTokenChangeCallback (func: (token: string) => Promise<void>): void {
|
||
LoginRuntime.onWebUiTokenChange = func;
|
||
},
|
||
getWebUiTokenChangeCallback (): (token: string) => Promise<void> {
|
||
return LoginRuntime.onWebUiTokenChange;
|
||
},
|
||
checkLoginRate (ip: string, RateLimit: number): boolean {
|
||
const key = `login_rate:${ip}`;
|
||
const count = store.get<number>(key) || 0;
|
||
|
||
if (count === 0) {
|
||
// 第一次访问,设置计数器为1,并设置60秒过期
|
||
store.set(key, 1, 60);
|
||
return true;
|
||
}
|
||
|
||
if (count >= RateLimit) {
|
||
return false;
|
||
}
|
||
|
||
store.set(key, count + 1);
|
||
return true;
|
||
},
|
||
|
||
getQQLoginStatus (): LoginRuntimeType['QQLoginStatus'] {
|
||
return LoginRuntime.QQLoginStatus;
|
||
},
|
||
|
||
setQQLoginCallback (func: (status: boolean) => Promise<void>): void {
|
||
LoginRuntime.onQQLoginStatusChange = func;
|
||
},
|
||
|
||
getQQLoginCallback (): (status: boolean) => Promise<void> {
|
||
return LoginRuntime.onQQLoginStatusChange;
|
||
},
|
||
|
||
setQQLoginStatus (status: LoginRuntimeType['QQLoginStatus']): void {
|
||
LoginRuntime.QQLoginStatus = status;
|
||
},
|
||
|
||
setQQLoginQrcodeURL (url: LoginRuntimeType['QQQRCodeURL']): void {
|
||
LoginRuntime.QQQRCodeURL = url;
|
||
},
|
||
|
||
getQQLoginQrcodeURL (): LoginRuntimeType['QQQRCodeURL'] {
|
||
return LoginRuntime.QQQRCodeURL;
|
||
},
|
||
|
||
setQQLoginInfo (info: LoginRuntimeType['QQLoginInfo']): void {
|
||
LoginRuntime.QQLoginInfo = info;
|
||
LoginRuntime.QQLoginUin = info.uin.toString();
|
||
},
|
||
|
||
getQQLoginInfo (): LoginRuntimeType['QQLoginInfo'] {
|
||
return LoginRuntime.QQLoginInfo;
|
||
},
|
||
|
||
getQQLoginUin (): LoginRuntimeType['QQLoginUin'] {
|
||
return LoginRuntime.QQLoginUin;
|
||
},
|
||
|
||
getQQQuickLoginList (): LoginRuntimeType['NapCatHelper']['QQLoginList'] {
|
||
return LoginRuntime.NapCatHelper.QQLoginList;
|
||
},
|
||
|
||
setQQQuickLoginList (list: LoginRuntimeType['NapCatHelper']['QQLoginList']): void {
|
||
LoginRuntime.NapCatHelper.QQLoginList = list;
|
||
},
|
||
|
||
getQQNewLoginList (): LoginRuntimeType['NapCatHelper']['NewQQLoginList'] {
|
||
return LoginRuntime.NapCatHelper.NewQQLoginList;
|
||
},
|
||
|
||
setQQNewLoginList (list: LoginRuntimeType['NapCatHelper']['NewQQLoginList']): void {
|
||
LoginRuntime.NapCatHelper.NewQQLoginList = list;
|
||
},
|
||
|
||
setQuickLoginCall (func: LoginRuntimeType['NapCatHelper']['onQuickLoginRequested']): void {
|
||
LoginRuntime.NapCatHelper.onQuickLoginRequested = func;
|
||
},
|
||
|
||
requestQuickLogin: function (uin) {
|
||
return LoginRuntime.NapCatHelper.onQuickLoginRequested(uin);
|
||
} as LoginRuntimeType['NapCatHelper']['onQuickLoginRequested'],
|
||
|
||
setOnOB11ConfigChanged (func: LoginRuntimeType['NapCatHelper']['onOB11ConfigChanged']): void {
|
||
LoginRuntime.NapCatHelper.onOB11ConfigChanged = func;
|
||
},
|
||
|
||
setOB11Config: function (ob11) {
|
||
return LoginRuntime.NapCatHelper.onOB11ConfigChanged(ob11);
|
||
} as LoginRuntimeType['NapCatHelper']['onOB11ConfigChanged'],
|
||
|
||
GetNapCatVersion () {
|
||
return LoginRuntime.NapCatVersion;
|
||
},
|
||
|
||
setQQVersion (version: string) {
|
||
LoginRuntime.QQVersion = version;
|
||
},
|
||
|
||
getQQVersion () {
|
||
return LoginRuntime.QQVersion;
|
||
},
|
||
|
||
setWebUiConfigQuickFunction (func: LoginRuntimeType['WebUiConfigQuickFunction']): void {
|
||
LoginRuntime.WebUiConfigQuickFunction = func;
|
||
},
|
||
runWebUiConfigQuickFunction: async function () {
|
||
await LoginRuntime.WebUiConfigQuickFunction();
|
||
},
|
||
|
||
setOneBotContext (context: any): void {
|
||
LoginRuntime.OneBotContext = context;
|
||
},
|
||
|
||
getOneBotContext (): any | null {
|
||
return LoginRuntime.OneBotContext;
|
||
},
|
||
};
|