mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
style: lint
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { NodeIKernelMsgListener } from "@/core";
|
||||
import { NodeIQQNTWrapperSession } from "@/core/wrapper";
|
||||
import { randomUUID } from "crypto";
|
||||
import { NodeIKernelMsgListener } from '@/core';
|
||||
import { NodeIQQNTWrapperSession } from '@/core/wrapper';
|
||||
import { randomUUID } from 'crypto';
|
||||
|
||||
interface Internal_MapKey {
|
||||
timeout: number,
|
||||
createtime: number,
|
||||
func: Function
|
||||
func: (...arg: any[]) => any,
|
||||
}
|
||||
|
||||
export class ListenerClassBase {
|
||||
@@ -27,7 +27,8 @@ export class NTEventWrapper {
|
||||
|
||||
}
|
||||
createProxyDispatch(ListenerMainName: string) {
|
||||
let current = this;
|
||||
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
||||
const current = this;
|
||||
return new Proxy({}, {
|
||||
get(target: any, prop: any, receiver: any) {
|
||||
// console.log('get', prop, typeof target[prop]);
|
||||
@@ -47,16 +48,16 @@ export class NTEventWrapper {
|
||||
this.WrapperSession = WrapperSession;
|
||||
}
|
||||
CreatEventFunction<T extends (...args: any) => any>(eventName: string): T | undefined {
|
||||
let eventNameArr = eventName.split('/');
|
||||
const eventNameArr = eventName.split('/');
|
||||
type eventType = {
|
||||
[key: string]: () => { [key: string]: (...params: Parameters<T>) => Promise<ReturnType<T>> }
|
||||
}
|
||||
if (eventNameArr.length > 1) {
|
||||
let serviceName = 'get' + eventNameArr[0].replace('NodeIKernel', '');
|
||||
let eventName = eventNameArr[1];
|
||||
const serviceName = 'get' + eventNameArr[0].replace('NodeIKernel', '');
|
||||
const eventName = eventNameArr[1];
|
||||
//getNodeIKernelGroupListener,GroupService
|
||||
//console.log('2', eventName);
|
||||
let services = (this.WrapperSession as unknown as eventType)[serviceName]();
|
||||
const services = (this.WrapperSession as unknown as eventType)[serviceName]();
|
||||
let event = services[eventName];
|
||||
//重新绑定this
|
||||
event = event.bind(services);
|
||||
@@ -67,14 +68,14 @@ export class NTEventWrapper {
|
||||
}
|
||||
|
||||
}
|
||||
CreatListenerFunction<T>(listenerMainName: string, uniqueCode: string = ""): T {
|
||||
let ListenerType = this.ListenerMap![listenerMainName];
|
||||
CreatListenerFunction<T>(listenerMainName: string, uniqueCode: string = ''): T {
|
||||
const ListenerType = this.ListenerMap![listenerMainName];
|
||||
let Listener = this.ListenerManger.get(listenerMainName + uniqueCode);
|
||||
if (!Listener && ListenerType) {
|
||||
Listener = new ListenerType(this.createProxyDispatch(listenerMainName));
|
||||
let ServiceSubName = listenerMainName.match(/^NodeIKernel(.*?)Listener$/)![1];
|
||||
let Service = "NodeIKernel" + ServiceSubName + "Service/addKernel" + ServiceSubName + "Listener";
|
||||
let addfunc = this.CreatEventFunction<(listener: T) => number>(Service);
|
||||
const ServiceSubName = listenerMainName.match(/^NodeIKernel(.*?)Listener$/)![1];
|
||||
const Service = 'NodeIKernel' + ServiceSubName + 'Service/addKernel' + ServiceSubName + 'Listener';
|
||||
const addfunc = this.CreatEventFunction<(listener: T) => number>(Service);
|
||||
addfunc!(Listener as T);
|
||||
//console.log(addfunc!(Listener as T));
|
||||
this.ListenerManger.set(listenerMainName + uniqueCode, Listener);
|
||||
@@ -91,18 +92,18 @@ export class NTEventWrapper {
|
||||
return;
|
||||
}
|
||||
task.func(...args);
|
||||
})
|
||||
});
|
||||
}
|
||||
async CallNoListenerEvent<EventType extends (...args: any[]) => Promise<any>,>(EventName = '', timeout: number = 3000, ...args: Parameters<EventType>) {
|
||||
return new Promise<ReturnType<EventType>>(async (resolve, reject) => {
|
||||
let EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
const EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
let complete = false;
|
||||
let Timeouter = setTimeout(() => {
|
||||
const Timeouter = setTimeout(() => {
|
||||
if (!complete) {
|
||||
reject(new Error('NTEvent EventName:' + EventName + ' timeout'));
|
||||
}
|
||||
}, timeout);
|
||||
let retData = await EventFunc!(...args);
|
||||
const retData = await EventFunc!(...args);
|
||||
complete = true;
|
||||
resolve(retData);
|
||||
});
|
||||
@@ -113,20 +114,20 @@ export class NTEventWrapper {
|
||||
let complete = 0;
|
||||
let retData: ArrayLike<Parameters<ListenerType>> | undefined = undefined;
|
||||
let retEvent: any = {};
|
||||
let databack = () => {
|
||||
const databack = () => {
|
||||
if (complete < waitTimes) {
|
||||
reject(new Error('NTEvent EventName:' + EventName + ' ListenerName:' + ListenerName + ' timeout'));
|
||||
} else {
|
||||
|
||||
resolve([retEvent as Awaited<ReturnType<EventType>>, ...(retData as Parameters<ListenerType>)]);
|
||||
}
|
||||
}
|
||||
let Timeouter = setTimeout(databack, timeout);
|
||||
};
|
||||
const Timeouter = setTimeout(databack, timeout);
|
||||
|
||||
let ListenerNameList = ListenerName.split('/');
|
||||
let ListenerMainName = ListenerNameList[0];
|
||||
let ListenerSubName = ListenerNameList[1];
|
||||
let eventCallbak = {
|
||||
const ListenerNameList = ListenerName.split('/');
|
||||
const ListenerMainName = ListenerNameList[0];
|
||||
const ListenerSubName = ListenerNameList[1];
|
||||
const eventCallbak = {
|
||||
timeout: timeout,
|
||||
createtime: Date.now(),
|
||||
func: (...args: any[]) => {
|
||||
@@ -138,7 +139,7 @@ export class NTEventWrapper {
|
||||
databack();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!this.EventTask.get(ListenerMainName)) {
|
||||
this.EventTask.set(ListenerMainName, new Map());
|
||||
}
|
||||
@@ -147,7 +148,7 @@ export class NTEventWrapper {
|
||||
}
|
||||
this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallbak);
|
||||
this.CreatListenerFunction(ListenerMainName);
|
||||
let EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
const EventFunc = this.CreatEventFunction<EventType>(EventName);
|
||||
retEvent = await EventFunc!(...args);
|
||||
});
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { logError, logDebug } from "@/common/utils/log";
|
||||
import { logError, logDebug } from '@/common/utils/log';
|
||||
|
||||
type group_id = number;
|
||||
type user_id = number;
|
||||
@@ -44,7 +44,7 @@ class LRU<T> {
|
||||
// 移除LRU节点
|
||||
private removeLRUNode(node: cacheNode<T>) {
|
||||
logDebug(
|
||||
"removeLRUNode",
|
||||
'removeLRUNode',
|
||||
node.groupId,
|
||||
node.userId,
|
||||
node.value,
|
||||
|
@@ -3,7 +3,7 @@ import { ElementType, FileElement, PicElement, PttElement, RawMessage, VideoElem
|
||||
import sqlite3 from 'sqlite3';
|
||||
import { log, logDebug, logError } from '@/common/utils/log';
|
||||
import { NTQQMsgApi } from '@/core';
|
||||
import LRU from "@/common/utils/LRUCache";
|
||||
import LRU from '@/common/utils/LRUCache';
|
||||
|
||||
export interface IRember {
|
||||
last_sent_time: number;
|
||||
@@ -111,7 +111,7 @@ class DBUtil extends DBUtilBase {
|
||||
|
||||
// 初始化群缓存列表
|
||||
this.db!.serialize(() => {
|
||||
const sql = `SELECT * FROM sqlite_master WHERE type='table'`;
|
||||
const sql = 'SELECT * FROM sqlite_master WHERE type=\'table\'';
|
||||
this.db!.all(sql, [], (err, rows: { name: string }[]) => {
|
||||
if (err) return logError(err);
|
||||
rows.forEach((row) => this.groupIds.push(parseInt(row.name)));
|
||||
@@ -123,22 +123,22 @@ class DBUtil extends DBUtilBase {
|
||||
this.LURCache.on(async (node) => {
|
||||
const { value: time, groupId, userId } = node;
|
||||
|
||||
logDebug("插入发言时间", userId, groupId);
|
||||
logDebug('插入发言时间', userId, groupId);
|
||||
await this.createGroupInfoTimeTableIfNotExist(groupId);
|
||||
|
||||
const method = await this.getDataSetMethod(groupId, userId);
|
||||
logDebug("插入发言时间方法判断", userId, groupId, method);
|
||||
logDebug('插入发言时间方法判断', userId, groupId, method);
|
||||
|
||||
const sql =
|
||||
method == "update"
|
||||
method == 'update'
|
||||
? `UPDATE "${groupId}" SET last_sent_time = ? WHERE user_id = ?`
|
||||
: `INSERT INTO "${groupId}" (last_sent_time, user_id) VALUES (?, ?)`;
|
||||
|
||||
this.db!.all(sql, [time, userId], (err) => {
|
||||
if (err) {
|
||||
return logError("插入/更新发言时间失败", userId, groupId);
|
||||
return logError('插入/更新发言时间失败', userId, groupId);
|
||||
}
|
||||
logDebug("插入/更新发言时间成功", userId, groupId);
|
||||
logDebug('插入/更新发言时间成功', userId, groupId);
|
||||
});
|
||||
|
||||
});
|
||||
@@ -146,28 +146,28 @@ class DBUtil extends DBUtilBase {
|
||||
async getDataSetMethod(groupId: number, userId: number) {
|
||||
// 缓存记录
|
||||
if (this.LastSentCache.get(groupId, userId)) {
|
||||
logDebug("缓存命中", userId, groupId);
|
||||
return "update";
|
||||
logDebug('缓存命中', userId, groupId);
|
||||
return 'update';
|
||||
}
|
||||
|
||||
// 数据库判断
|
||||
return new Promise<"insert" | "update">((resolve, reject) => {
|
||||
return new Promise<'insert' | 'update'>((resolve, reject) => {
|
||||
this.db!.all(
|
||||
`SELECT * FROM "${groupId}" WHERE user_id = ?`,
|
||||
[userId],
|
||||
(err, rows) => {
|
||||
if (err) {
|
||||
logError("查询发言时间存在失败", userId, groupId, err);
|
||||
return logError("插入发言时间失败", userId, groupId, err);
|
||||
logError('查询发言时间存在失败', userId, groupId, err);
|
||||
return logError('插入发言时间失败', userId, groupId, err);
|
||||
}
|
||||
|
||||
if (rows.length === 0) {
|
||||
logDebug("查询发言时间不存在", userId, groupId);
|
||||
return resolve("insert");
|
||||
logDebug('查询发言时间不存在', userId, groupId);
|
||||
return resolve('insert');
|
||||
}
|
||||
|
||||
logDebug("查询发言时间存在", userId, groupId);
|
||||
resolve("update");
|
||||
logDebug('查询发言时间存在', userId, groupId);
|
||||
resolve('update');
|
||||
}
|
||||
);
|
||||
});
|
||||
@@ -465,14 +465,14 @@ class DBUtil extends DBUtilBase {
|
||||
async getLastSentTimeAndJoinTime(
|
||||
groupId: number
|
||||
): Promise<IRember[]> {
|
||||
logDebug("读取发言时间", groupId);
|
||||
logDebug('读取发言时间', groupId);
|
||||
return new Promise<IRember[]>((resolve, reject) => {
|
||||
this.db!.all(`SELECT * FROM "${groupId}" `, (err, rows: IRember[]) => {
|
||||
if (err) {
|
||||
logError("查询发言时间失败", groupId);
|
||||
logError('查询发言时间失败', groupId);
|
||||
return resolve([]);
|
||||
}
|
||||
logDebug("查询发言时间成功", groupId, rows);
|
||||
logDebug('查询发言时间成功', groupId, rows);
|
||||
resolve(rows);
|
||||
});
|
||||
});
|
||||
@@ -483,7 +483,7 @@ class DBUtil extends DBUtilBase {
|
||||
userId: number,
|
||||
time: number
|
||||
) {
|
||||
this.LURCache.set(groupId, userId, time)
|
||||
this.LURCache.set(groupId, userId, time);
|
||||
}
|
||||
async insertJoinTime(
|
||||
groupId: number,
|
||||
@@ -498,7 +498,7 @@ class DBUtil extends DBUtilBase {
|
||||
if (err)
|
||||
logError(err),
|
||||
Promise.reject(),
|
||||
console.log("插入入群时间失败", userId, groupId);
|
||||
console.log('插入入群时间失败', userId, groupId);
|
||||
}
|
||||
);
|
||||
|
||||
|
@@ -21,6 +21,7 @@ const invalidMacAddresses = new Set([
|
||||
]);
|
||||
|
||||
function validateMacAddress(candidate: string): boolean {
|
||||
// eslint-disable-next-line no-useless-escape
|
||||
const tempCandidate = candidate.replace(/\-/g, ':').toLowerCase();
|
||||
return !invalidMacAddresses.has(tempCandidate);
|
||||
}
|
||||
|
@@ -14,7 +14,7 @@ export async function checkVersion(): Promise<string> {
|
||||
try {
|
||||
version = (await RequestUtil.HttpGetJson<{ version: string }>(url)).version;
|
||||
} catch (e) {
|
||||
logDebug("检测更新异常",e);
|
||||
logDebug('检测更新异常',e);
|
||||
}
|
||||
if (version) {
|
||||
resolve(version);
|
||||
|
@@ -19,7 +19,7 @@ export class GetGroupFileList extends BaseAction<Payload, { FileList: Array<any>
|
||||
actionName = ActionName.GetGroupFileList;
|
||||
PayloadSchema = SchemaData;
|
||||
protected async _handle(payload: Payload) {
|
||||
let ret = await NTQQMsgApi.getGroupFileList(payload.group_id.toString(), {
|
||||
const ret = await NTQQMsgApi.getGroupFileList(payload.group_id.toString(), {
|
||||
sortType: 1,
|
||||
fileCount: payload.file_count,
|
||||
startIndex: payload.start_index,
|
||||
|
@@ -66,7 +66,7 @@ class GetGroupMemberList extends BaseAction<Payload, OB11GroupMember[]> {
|
||||
} else if (ob11Config.GroupLocalTime.Record && ob11Config.GroupLocalTime.RecordList[0] === '-1' || ob11Config.GroupLocalTime.RecordList.includes(payload.group_id.toString())) {
|
||||
const _sendAndJoinRember = await dbUtil.getLastSentTimeAndJoinTime(TypeConvert.toNumber(payload.group_id));
|
||||
_sendAndJoinRember.forEach((element) => {
|
||||
let MemberData = MemberMap.get(element.user_id);
|
||||
const MemberData = MemberMap.get(element.user_id);
|
||||
if (MemberData) {
|
||||
MemberData.join_time = element.join_time;
|
||||
MemberData.last_sent_time = element.last_sent_time;
|
||||
|
@@ -27,12 +27,12 @@ export enum ActionName {
|
||||
GetFile = 'get_file',
|
||||
ForwardFriendSingleMsg = 'forward_friend_single_msg',
|
||||
ForwardGroupSingleMsg = 'forward_group_single_msg',
|
||||
TranslateEnWordToZn = "translate_en2zh",
|
||||
GetGroupFileCount = "get_group_file_count",
|
||||
GetGroupFileList = "get_group_file_list",
|
||||
SetGroupFileFolder = "set_group_file_folder",
|
||||
DelGroupFile = "del_group_file",
|
||||
DelGroupFileFolder = "del_group_file_folder",
|
||||
TranslateEnWordToZn = 'translate_en2zh',
|
||||
GetGroupFileCount = 'get_group_file_count',
|
||||
GetGroupFileList = 'get_group_file_list',
|
||||
SetGroupFileFolder = 'set_group_file_folder',
|
||||
DelGroupFile = 'del_group_file',
|
||||
DelGroupFileFolder = 'del_group_file_folder',
|
||||
// onebot 11
|
||||
Reboot = 'set_restart',
|
||||
SendLike = 'send_like',
|
||||
@@ -85,7 +85,7 @@ export enum ActionName {
|
||||
GoCQHTTP_GetForwardMsg = 'get_forward_msg',
|
||||
GetFriendMsgHistory = 'get_friend_msg_history',
|
||||
GetGroupSystemMsg = 'get_group_system_msg',
|
||||
GetOnlineClient = "get_online_clients",
|
||||
OCRImage = "ocr_image",
|
||||
IOCRImage = ".ocr_image"
|
||||
GetOnlineClient = 'get_online_clients',
|
||||
OCRImage = 'ocr_image',
|
||||
IOCRImage = '.ocr_image'
|
||||
}
|
||||
|
@@ -25,10 +25,10 @@ export class GetCookies extends BaseAction<Payload, Response> {
|
||||
if (!payload.domain) {
|
||||
throw new Error('缺少参数 domain');
|
||||
}
|
||||
if (payload.domain.endsWith("qzone.qq.com")) {
|
||||
if (payload.domain.endsWith('qzone.qq.com')) {
|
||||
const _Skey = await NTQQUserApi.getSkey() as string;
|
||||
// 兼容整个 *.qzone.qq.com
|
||||
let data = (await NTQQUserApi.getQzoneCookies());
|
||||
const data = (await NTQQUserApi.getQzoneCookies());
|
||||
const Bkn = WebApi.genBkn(data.p_skey);
|
||||
const CookieValue = 'p_skey=' + data.p_skey + '; skey=' + data.skey + '; p_uin=o' + selfInfo.uin + '; uin=o' + selfInfo.uin;
|
||||
return { cookies: CookieValue };
|
||||
|
@@ -15,6 +15,6 @@ export class OB11GroupIncreaseEvent extends OB11GroupNoticeEvent {
|
||||
this.sub_type = subType;
|
||||
|
||||
if(ob11Config.GroupLocalTime.Record && (ob11Config.GroupLocalTime.RecordList[0] == '-1' || ob11Config.GroupLocalTime.RecordList.includes(groupId.toString())))
|
||||
dbUtil.insertJoinTime(groupId, userId, Math.floor(Date.now() / 1000))
|
||||
dbUtil.insertJoinTime(groupId, userId, Math.floor(Date.now() / 1000));
|
||||
}
|
||||
}
|
||||
|
@@ -152,7 +152,7 @@ export class NapCatOnebot11 {
|
||||
app_id: '0',
|
||||
device_name: device.deviceName,
|
||||
device_kind: 'none'
|
||||
})
|
||||
});
|
||||
// log('[设备列表] 设备名称: ' + device.deviceName);
|
||||
});
|
||||
}
|
||||
|
@@ -69,7 +69,7 @@ async function onSettingWindowCreated(view: Element) {
|
||||
</div>
|
||||
<div class="q-input">
|
||||
<input id="config-ob11-http-secret" class="q-input__inner" data-config-key="ob11.http.secret" type="text" value="${ob11Config.http.secret
|
||||
}" placeholder="未设置" />
|
||||
}" placeholder="未设置" />
|
||||
</div>
|
||||
</setting-item>
|
||||
<setting-item data-direction="row">
|
||||
|
Reference in New Issue
Block a user