From 53c1d40bcf45392efa8495322ce7505aa284ddc4 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: Thu, 28 Nov 2024 20:55:28 +0800 Subject: [PATCH] refactor: logger bind (#577) --- src/common/audio.ts | 2 +- src/common/config-base.ts | 15 ++++--- src/core/apis/file.ts | 19 ++++----- src/core/apis/group.ts | 2 +- src/core/apis/packet.ts | 2 +- src/core/helper/rkey.ts | 3 +- src/core/index.ts | 4 +- src/framework/napcat.ts | 2 +- src/onebot/action/go-cqhttp/QuickAction.ts | 2 +- src/onebot/action/msg/SendMsg.ts | 35 ++++++++-------- src/onebot/api/group.ts | 2 +- src/onebot/api/msg.ts | 48 +++++++++++----------- src/onebot/api/quick-action.ts | 15 ++++--- src/onebot/index.ts | 24 +++++------ src/onebot/network/active-http.ts | 6 +-- src/onebot/network/active-websocket.ts | 14 +++---- src/onebot/network/passive-websocket.ts | 12 +++--- src/shell/napcat.ts | 6 +-- src/webui/index.ts | 13 +++--- 19 files changed, 109 insertions(+), 117 deletions(-) diff --git a/src/common/audio.ts b/src/common/audio.ts index 284ff13a..ade00e69 100644 --- a/src/common/audio.ts +++ b/src/common/audio.ts @@ -96,7 +96,7 @@ export async function encodeSilk(filePath: string, TEMP_DIR: string, logger: Log }; } } catch (error: any) { - logger.logError.bind(logger)('convert silk failed', error.stack); + logger.logError('convert silk failed', error.stack); return {}; } } diff --git a/src/common/config-base.ts b/src/common/config-base.ts index 4593c78c..deead630 100644 --- a/src/common/config-base.ts +++ b/src/common/config-base.ts @@ -33,27 +33,27 @@ export abstract class ConfigBase { } read(copy_default: boolean = true): T { - const logger = this.core.context.logger; + const configPath = this.getConfigPath(this.core.selfInfo.uin); if (!fs.existsSync(configPath) && copy_default) { try { fs.writeFileSync(configPath, fs.readFileSync(this.getConfigPath(undefined), 'utf-8')); - logger.log(`[Core] [Config] 配置文件创建成功!\n`); + this.core.context.logger.log(`[Core] [Config] 配置文件创建成功!\n`); } catch (e: any) { - logger.logError.bind(logger)(`[Core] [Config] 创建配置文件时发生错误:`, e.message); + this.core.context.logger.logError(`[Core] [Config] 创建配置文件时发生错误:`, e.message); } } else if (!fs.existsSync(configPath) && !copy_default) { fs.writeFileSync(configPath, '{}'); } try { this.configData = JSON.parse(fs.readFileSync(configPath, 'utf-8')); - logger.logDebug(`[Core] [Config] 配置文件${configPath}加载`, this.configData); + this.core.context.logger.logDebug(`[Core] [Config] 配置文件${configPath}加载`, this.configData); return this.configData; } catch (e: any) { if (e instanceof SyntaxError) { - logger.logError.bind(logger)(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); + this.core.context.logger.logError(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); } else { - logger.logError.bind(logger)(`[Core] [Config] 读取配置文件时发生错误:`, e.message); + this.core.context.logger.logError(`[Core] [Config] 读取配置文件时发生错误:`, e.message); } return {} as T; } @@ -61,14 +61,13 @@ export abstract class ConfigBase { save(newConfigData: T = this.configData) { - const logger = this.core.context.logger; const selfInfo = this.core.selfInfo; this.configData = newConfigData; const configPath = this.getConfigPath(selfInfo.uin); try { fs.writeFileSync(configPath, JSON.stringify(newConfigData, this.getKeys(), 2)); } catch (e: any) { - logger.logError.bind(logger)(`保存配置文件 ${configPath} 时发生错误:`, e.message); + this.core.context.logger.logError(`保存配置文件 ${configPath} 时发生错误:`, e.message); } } } diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index d8857371..07860ca8 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -142,7 +142,6 @@ export class NTQQFileApi { } async createValidSendVideoElement(context: SendMessageContext, filePath: string, fileName: string = '', diyThumbPath: string = ''): Promise { - const logger = this.core.context.logger; let videoInfo = { width: 1920, height: 1080, @@ -152,9 +151,9 @@ export class NTQQFileApi { filePath, }; try { - videoInfo = await getVideoInfo(filePath, logger); + videoInfo = await getVideoInfo(filePath, this.context.logger); } catch (e) { - logger.logError.bind(logger)('获取视频信息失败,将使用默认值', e); + this.context.logger.logError('获取视频信息失败,将使用默认值', e); } let fileExt = 'mp4'; @@ -162,7 +161,7 @@ export class NTQQFileApi { const tempExt = (await fileType.fileTypeFromFile(filePath))?.ext; if (tempExt) fileExt = tempExt; } catch (e) { - this.context.logger.logError.bind(logger)('获取文件类型失败', e); + this.context.logger.logError('获取文件类型失败', e); } const newFilePath = filePath + '.' + fileExt; fs.copyFileSync(filePath, newFilePath); @@ -183,7 +182,7 @@ export class NTQQFileApi { ffmpeg(filePath) .on('error', (err) => { try { - logger.logDebug('获取视频封面失败,使用默认封面', err); + this.context.logger.logDebug('获取视频封面失败,使用默认封面', err); if (diyThumbPath) { fsPromises.copyFile(diyThumbPath, thumbPath).then(() => { resolve(thumbPath); @@ -193,7 +192,7 @@ export class NTQQFileApi { resolve(thumbPath); } } catch (error) { - logger.logError.bind(logger)('获取视频封面失败,使用默认封面失败', error); + this.context.logger.logError('获取视频封面失败,使用默认封面失败', error); } }) .screenshots({ @@ -230,6 +229,7 @@ export class NTQQFileApi { } async createValidSendPttElement(pttPath: string): Promise { + const { converted, path: silkPath, duration } = await encodeSilk(pttPath, this.core.NapCatTempPath, this.core.context.logger); if (!silkPath) { throw new Error('语音转换失败, 请检查语音文件是否正常'); @@ -239,8 +239,7 @@ export class NTQQFileApi { throw new Error('文件异常,大小为0'); } if (converted) { - fsPromises.unlink(silkPath).then().catch( - (e) => this.context.logger.logError.bind(this.context.logger)('删除临时文件失败', e) + fsPromises.unlink(silkPath).then().catch((e) => this.context.logger.logError('删除临时文件失败', e) ); } return { @@ -454,7 +453,7 @@ export class NTQQFileApi { } } } catch (error: any) { - this.context.logger.logError.bind(this.context.logger)('获取rkey失败', error.message); + this.context.logger.logError('获取rkey失败', error.message); } if (!rkeyData.online_rkey) { @@ -464,7 +463,7 @@ export class NTQQFileApi { rkeyData.private_rkey = tempRkeyData.private_rkey; rkeyData.online_rkey = tempRkeyData.expired_time > Date.now() / 1000; } catch (e) { - this.context.logger.logError.bind(this.context.logger)('获取rkey失败 Fallback Old Mode', e); + this.context.logger.logError('获取rkey失败 Fallback Old Mode', e); } } diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index a51b04f3..074155e9 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -27,7 +27,7 @@ export class NTQQGroupApi { this.core = core; } async initApi() { - this.initCache().then().catch(this.context.logger.logError.bind(this.context.logger)); + this.initCache().then().catch(e => this.context.logger.logError(e)); } async initCache() { this.groups = await this.getGroups(); diff --git a/src/core/apis/packet.ts b/src/core/apis/packet.ts index e29dcee9..358cea68 100644 --- a/src/core/apis/packet.ts +++ b/src/core/apis/packet.ts @@ -31,7 +31,7 @@ export class NTQQPacketApi { await this.InitSendPacket(this.context.basicInfoWrapper.getFullQQVesion()) .then() .catch((err) => { - this.logger.logError.bind(this.core.context.logger); + this.logger.logError(err); this.errStack.push(err); }); } diff --git a/src/core/helper/rkey.ts b/src/core/helper/rkey.ts index 89e4229f..4b952b44 100644 --- a/src/core/helper/rkey.ts +++ b/src/core/helper/rkey.ts @@ -27,7 +27,6 @@ export class RkeyManager { await this.refreshRkey(); } catch (e) { throw new Error(`获取rkey失败: ${e}`);//外抛 - //this.logger.logError.bind(this.logger)('获取rkey失败', e); } } return this.rkeyData; @@ -50,7 +49,7 @@ export class RkeyManager { expired_time: temp.expired_time }; } catch (e) { - this.logger.logError.bind(this.logger)(`[Rkey] Get Rkey ${url} Error `, e); + this.logger.logError(`[Rkey] Get Rkey ${url} Error `, e); //是否为最后一个url if (url === this.serverUrl[this.serverUrl.length - 1]) { throw new Error(`获取rkey失败: ${e}`);//外抛 diff --git a/src/core/index.ts b/src/core/index.ts index 7faa4027..3b318054 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -127,7 +127,7 @@ export class NapCatCore { await api.initApi(); } } - this.initNapCatCoreListeners().then().catch(this.context.logger.logError.bind(this.context.logger)); + this.initNapCatCoreListeners().then().catch((e) => this.context.logger.logError(e)); this.context.logger.setFileLogEnabled( this.configLoader.configData.fileLog, @@ -154,7 +154,7 @@ export class NapCatCore { const msgListener = new NodeIKernelMsgListener(); msgListener.onKickedOffLine = (Info: KickedOffLineInfo) => { // 下线通知 - this.context.logger.logError.bind(this.context.logger)('[KickedOffLine] [' + Info.tipsTitle + '] ' + Info.tipsDesc); + this.context.logger.logError('[KickedOffLine] [' + Info.tipsTitle + '] ' + Info.tipsDesc); this.selfInfo.online = false; }; msgListener.onRecvMsg = (msgs) => { diff --git a/src/framework/napcat.ts b/src/framework/napcat.ts index ad217b78..1dfb92b5 100644 --- a/src/framework/napcat.ts +++ b/src/framework/napcat.ts @@ -58,7 +58,7 @@ export async function NCoreInitFramework( await loaderObject.core.initCore(); //启动WebUi - InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); + InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e)); //初始化LLNC的Onebot实现 await new NapCatOneBot11Adapter(loaderObject.core, loaderObject.context, pathWrapper).InitOneBot(); } diff --git a/src/onebot/action/go-cqhttp/QuickAction.ts b/src/onebot/action/go-cqhttp/QuickAction.ts index d579eebe..30eacaf7 100644 --- a/src/onebot/action/go-cqhttp/QuickAction.ts +++ b/src/onebot/action/go-cqhttp/QuickAction.ts @@ -13,7 +13,7 @@ export class GoCQHTTPHandleQuickAction extends OneBotAction { async _handle(payload: Payload): Promise { this.obContext.apis.QuickActionApi .handleQuickOperation(payload.context, payload.operation) - .catch(this.core.context.logger.logError.bind(this.core.context.logger)); + .catch(e => this.core.context.logger.logError(e)); return null; } } diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index 1de705e3..ed83239a 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -162,11 +162,10 @@ export class SendMsg extends OneBotAction { finallySendElements: SendArkElement, res_id?: string } | null> { - const logger = this.core.context.logger; const packetMsg: PacketMsg[] = []; for (const node of messageNodes) { if (dp >= 3) { - logger.logWarn('转发消息深度超过3层,将停止解析!'); + this.core.context.logger.logWarn('转发消息深度超过3层,将停止解析!'); break; } if (!node.data.id) { @@ -191,29 +190,29 @@ export class SendMsg extends OneBotAction { time: Number(node.data.time) || Date.now(), msg: sendElements, }; - logger.logDebug(`handleForwardedNodesPacket[SendRaw] 开始转换 ${stringifyWithBigInt(packetMsgElements)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[SendRaw] 开始转换 ${stringifyWithBigInt(packetMsgElements)}`); const transformedMsg = this.core.apis.PacketApi.pkt.msgConverter.rawMsgWithSendMsgToPacketMsg(packetMsgElements); - logger.logDebug(`handleForwardedNodesPacket[SendRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[SendRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); packetMsg.push(transformedMsg); } else if (node.data.id) { const id = node.data.id; const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(+id) || MessageUnique.getPeerByMsgId(id); if (!nodeMsg) { - logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', id); + this.core.context.logger.logError('转发消息失败,未找到消息', id); continue; } const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsg.Peer, [nodeMsg.MsgId])).msgList[0]; - logger.logDebug(`handleForwardedNodesPacket[PureRaw] 开始转换 ${stringifyWithBigInt(msg)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[PureRaw] 开始转换 ${stringifyWithBigInt(msg)}`); await this.core.apis.FileApi.downloadRawMsgMedia([msg]); const transformedMsg = this.core.apis.PacketApi.pkt.msgConverter.rawMsgToPacketMsg(msg, msgPeer); - logger.logDebug(`handleForwardedNodesPacket[PureRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[PureRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); packetMsg.push(transformedMsg); } else { - logger.logDebug(`handleForwardedNodesPacket 跳过元素 ${stringifyWithBigInt(node)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket 跳过元素 ${stringifyWithBigInt(node)}`); } } if (packetMsg.length === 0) { - logger.logWarn('handleForwardedNodesPacket 元素为空!'); + this.core.context.logger.logWarn('handleForwardedNodesPacket 元素为空!'); return null; } const resid = await this.core.apis.PacketApi.pkt.operation.UploadForwardMsg(packetMsg, msgPeer.chatType === ChatType.KCHATTYPEGROUP ? +msgPeer.peerUid : 0); @@ -253,14 +252,13 @@ export class SendMsg extends OneBotAction { peerUid: this.core.selfInfo.uid, }; let nodeMsgIds: string[] = []; - const logger = this.core.context.logger; for (const messageNode of messageNodes) { const nodeId = messageNode.data.id; if (nodeId) { // 对Msgid和OB11ID混用情况兜底 const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)) || MessageUnique.getPeerByMsgId(nodeId); if (!nodeMsg) { - logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', nodeId); + this.core.context.logger.logError('转发消息失败,未找到消息', nodeId); continue; } nodeMsgIds.push(nodeMsg.MsgId); @@ -272,7 +270,7 @@ export class SendMsg extends OneBotAction { const isNodeMsg = OB11Data.filter(e => e.type === OB11MessageDataType.node).length;//找到子转发消息 if (isNodeMsg !== 0) { if (isNodeMsg !== OB11Data.length) { - logger.logError.bind(this.core.context.logger)('子消息中包含非node消息 跳过不合法部分'); + this.core.context.logger.logError('子消息中包含非node消息 跳过不合法部分'); continue; } const nodeMsg = await this.handleForwardedNodes(selfPeer, OB11Data.filter(e => e.type === OB11MessageDataType.node)); @@ -309,7 +307,7 @@ export class SendMsg extends OneBotAction { } }); } catch (e: any) { - logger.logDebug('生成转发消息节点失败', e?.stack); + this.core.context.logger.logDebug('生成转发消息节点失败', e?.stack); } } } @@ -320,7 +318,7 @@ export class SendMsg extends OneBotAction { for (const msgId of nodeMsgIds) { const nodeMsgPeer = MessageUnique.getPeerByMsgId(msgId); if (!nodeMsgPeer) { - logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', msgId); + this.core.context.logger.logError('转发消息失败,未找到消息', msgId); continue; } const nodeMsg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsgPeer.Peer, [msgId])).msgList[0]; @@ -346,12 +344,12 @@ export class SendMsg extends OneBotAction { } if (retMsgIds.length === 0) throw Error('转发消息失败,生成节点为空'); try { - logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds); + this.core.context.logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds); return { message: await this.core.apis.MsgApi.multiForwardMsg(srcPeer!, destPeer, retMsgIds) }; } catch (e: any) { - logger.logError.bind(this.core.context.logger)('forward failed', e?.stack); + this.core.context.logger.logError('forward failed', e?.stack); return { message: null }; @@ -363,7 +361,6 @@ export class SendMsg extends OneBotAction { chatType: ChatType.KCHATTYPEC2C, peerUid: this.core.selfInfo.uid, }; - const logger = this.core.context.logger; //msg 为待克隆消息 const sendElements: SendMessageElement[] = []; @@ -372,12 +369,12 @@ export class SendMsg extends OneBotAction { } if (sendElements.length === 0) { - logger.logDebug('需要clone的消息无法解析,将会忽略掉', msg); + this.core.context.logger.logDebug('需要clone的消息无法解析,将会忽略掉', msg); } try { return await this.core.apis.MsgApi.sendMsg(selfPeer, sendElements, true); } catch (e: any) { - logger.logError.bind(this.core.context.logger)(e?.stack, '克隆转发消息失败,将忽略本条消息', msg); + this.core.context.logger.logError(e?.stack, '克隆转发消息失败,将忽略本条消息', msg); } } } diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 52233c56..c760dfd9 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -159,7 +159,7 @@ export class OneBotGroupApi { } const replyMsg = replyMsgList[0]; if (!replyMsg) { - this.core.context.logger.logError.bind(this.core.context.logger)('解析表情回应消息失败: 未找到回应消息'); + this.core.context.logger.logError('解析表情回应消息失败: 未找到回应消息'); return undefined; } return new OB11GroupMsgEmojiLikeEvent( diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 953bd6c4..ce25ae3a 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -130,7 +130,7 @@ export class OneBotMsgApi { }, }; } catch (e: any) { - this.core.context.logger.logError.bind(this.core.context.logger)('获取图片url失败', e.stack); + this.core.context.logger.logError('获取图片url失败', e.stack); return null; } }, @@ -213,7 +213,7 @@ export class OneBotMsgApi { guildId: '', }; if (!records || !element.replyMsgTime || !element.senderUidStr) { - this.core.context.logger.logError.bind(this.core.context.logger)('似乎是旧版客户端,获取不到引用的消息', element.replayMsgSeq); + this.core.context.logger.logError('似乎是旧版客户端,获取不到引用的消息', element.replayMsgSeq); return null; } @@ -231,7 +231,7 @@ export class OneBotMsgApi { let replyMsg = replyMsgList.find(msg => msg.msgRandom === records.msgRandom); if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logError.bind(this.core.context.logger)( + this.core.context.logger.logError( '筛选结果,筛选消息失败,将使用Fallback-1 Seq: ', element.replayMsgSeq, ',消息长度:', @@ -242,7 +242,7 @@ export class OneBotMsgApi { } if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logWarn.bind(this.core.context.logger)( + this.core.context.logger.logWarn( '筛选消息失败,将使用Fallback-2 Seq:', element.replayMsgSeq, ',消息长度:', @@ -256,7 +256,7 @@ export class OneBotMsgApi { // 丢弃该消息段 if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logError.bind(this.core.context.logger)( + this.core.context.logger.logError( '最终筛选结果,筛选消息失败,获取不到引用的消息 Seq: ', element.replayMsgSeq, ',消息长度:', @@ -458,7 +458,7 @@ export class OneBotMsgApi { const sysFaces = faceConfig.sysface; const face: any = sysFaces.find((systemFace) => systemFace.QSid === parsedFaceId.toString()); if (!face) { - this.core.context.logger.logError.bind(this.core.context.logger)('不支持的ID', id); + this.core.context.logger.logError('不支持的ID', id); return undefined; } parsedFaceId = parseInt(parsedFaceId.toString()); @@ -581,20 +581,20 @@ export class OneBotMsgApi { // 保留, 直到...找到更好的解决方案 if (data.id !== undefined) { if (!['qq', '163', 'kugou', 'kuwo', 'migu'].includes(data.type)) { - this.core.context.logger.logError.bind(this.core.context.logger)('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu,当前type:', data.type); + this.core.context.logger.logError('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu,当前type:', data.type); return undefined; } } else { if (!['qq', '163', 'kugou', 'kuwo', 'migu', 'custom'].includes(data.type)) { - this.core.context.logger.logError.bind(this.core.context.logger)('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu、custom,当前type:', data.type); + this.core.context.logger.logError('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu、custom,当前type:', data.type); return undefined; } if (!data.url) { - this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数url'); + this.core.context.logger.logError('自定义音卡缺少参数url'); return undefined; } if (!data.image) { - this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数image'); + this.core.context.logger.logError('自定义音卡缺少参数image'); return undefined; } } @@ -618,7 +618,7 @@ export class OneBotMsgApi { type: OB11MessageDataType.json }, context); } catch (e) { - this.core.context.logger.logError.bind(this.core.context.logger)('生成音乐消息失败', e); + this.core.context.logger.logError('生成音乐消息失败', e); } }, @@ -907,7 +907,7 @@ export class OneBotMsgApi { timeout += PredictTime;// 10S Basic Timeout + PredictTime( For File 512kb/s ) } } catch (e) { - this.core.context.logger.logError.bind(this.core.context.logger)('发送消息计算预计时间异常', e); + this.core.context.logger.logError('发送消息计算预计时间异常', e); } const returnMsg = await this.core.apis.MsgApi.sendMsg(peer, sendElements, waitComplete, timeout); if (!returnMsg) throw new Error('发送消息失败'); @@ -921,10 +921,10 @@ export class OneBotMsgApi { deleteAfterSentFiles.forEach(file => { try { if (fs.existsSync(file)) { - fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', e)); + fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError('发送消息删除文件失败', e)); } } catch (error) { - this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', (error as Error).message); + this.core.context.logger.logError('发送消息删除文件失败', (error as Error).message); } }); }, 60000); @@ -938,7 +938,7 @@ export class OneBotMsgApi { ) { const realUri = inputdata.url || inputdata.file || inputdata.path || ''; if (realUri.length === 0) { - this.core.context.logger.logError.bind(this.core.context.logger)('文件消息缺少参数', inputdata); + this.core.context.logger.logError('文件消息缺少参数', inputdata); throw Error('文件消息缺少参数'); } const { @@ -949,7 +949,7 @@ export class OneBotMsgApi { } = (await uri2local(this.core.NapCatTempPath, realUri)); if (!success) { - this.core.context.logger.logError.bind(this.core.context.logger)('文件下载失败', errMsg); + this.core.context.logger.logError('文件下载失败', errMsg); throw Error('文件下载失败' + errMsg); } @@ -959,14 +959,14 @@ export class OneBotMsgApi { } groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'leave'; - case 131: - return 'kick'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'leave'; + case 131: + return 'kick'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } diff --git a/src/onebot/api/quick-action.ts b/src/onebot/api/quick-action.ts index e661d9df..b6b7d2f4 100644 --- a/src/onebot/api/quick-action.ts +++ b/src/onebot/api/quick-action.ts @@ -24,20 +24,19 @@ export class OneBotQuickActionApi { } async handleQuickOperation(eventContext: QuickActionEvent, quickAction: QuickAction) { - const logger = this.core.context.logger; if (eventContext.post_type === 'message') { await this.handleMsg(eventContext as OB11Message, quickAction) - .catch(logger.logError.bind(logger)); + .catch(e => this.core.context.logger.logError(e)); } if (eventContext.post_type === 'request') { const friendRequest = eventContext as OB11FriendRequestEvent; const groupRequest = eventContext as OB11GroupRequestEvent; if ((friendRequest).request_type === 'friend') { await this.handleFriendRequest(friendRequest, quickAction) - .catch(logger.logError.bind(logger)); + .catch(e => this.core.context.logger.logError(e)); } else if (groupRequest.request_type === 'group') { await this.handleGroupRequest(groupRequest, quickAction) - .catch(logger.logError.bind(logger)); + .catch(e => this.core.context.logger.logError(e)); } } } @@ -51,7 +50,7 @@ export class OneBotQuickActionApi { group_id: msg.group_id?.toString(), user_id: msg.user_id?.toString(), }, peerContextMode); - + if (reply) { // let group: Group | undefined; let replyMessage: OB11MessageData[] = []; @@ -78,7 +77,7 @@ export class OneBotQuickActionApi { sendElements, deleteAfterSentFiles, } = await this.obContext.apis.MsgApi.createSendElements(replyMessage, peer); - this.obContext.apis.MsgApi.sendMsgWithOb11UniqueId(peer, sendElements, deleteAfterSentFiles, false).then().catch(this.core.context.logger.logError.bind(this.core.context.logger)); + this.obContext.apis.MsgApi.sendMsgWithOb11UniqueId(peer, sendElements, deleteAfterSentFiles, false).then().catch(e => this.core.context.logger.logError(e)); } } @@ -88,13 +87,13 @@ export class OneBotQuickActionApi { request.flag, quickAction.approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, quickAction.reason, - ).catch(this.core.context.logger.logError.bind(this.core.context.logger)); + ).catch(e => this.core.context.logger.logError(e)); } } async handleFriendRequest(request: OB11FriendRequestEvent, quickAction: QuickActionFriendRequest) { if (!isNull(quickAction.approve)) { - this.core.apis.FriendApi.handleFriendRequest(request.flag, !!quickAction.approve).then().catch(this.core.context.logger.logError.bind(this.core.context.logger)); + this.core.apis.FriendApi.handleFriendRequest(request.flag, !!quickAction.approve).then().catch(e => this.core.context.logger.logError(e)); } } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 9ffe9b07..5a87c5b4 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -105,7 +105,7 @@ export class NapCatOneBot11Adapter { selfInfo.nick = user.nick; this.context.logger.setLogSelfInfo(selfInfo); }) - .catch(this.context.logger.logError.bind(this.context.logger)); + .catch(e => this.context.logger.logError(e)); const serviceInfo = await this.creatOneBotLog(ob11Config); this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`); @@ -228,7 +228,7 @@ export class NapCatOneBot11Adapter { if (event) this.networkManager.emitEvent(event); }) .catch((e) => - this.context.logger.logError.bind(this.context.logger)( + this.context.logger.logError( 'constructSysMessage error: ', e, '\n Parse Hex:', @@ -260,7 +260,7 @@ export class NapCatOneBot11Adapter { m.msgId ); await this.emitMsg(m).catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理消息失败', e) + this.context.logger.logError('处理消息失败', e) ); } }; @@ -315,7 +315,7 @@ export class NapCatOneBot11Adapter { const event = new BotOfflineEvent(this.core, kick.tipsTitle, kick.tipsDesc); this.networkManager .emitEvent(event) - .catch((e) => this.context.logger.logError.bind(this.context.logger)('处理Bot掉线失败', e)); + .catch((e) => this.context.logger.logError('处理Bot掉线失败', e)); }; this.context.session.getMsgService().addKernelMsgListener(proxiedListenerOf(msgListener, this.context.logger)); } @@ -404,7 +404,7 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupAdminNoticeEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e) + this.context.logger.logError('处理群管理员变动失败', e) ); } else { this.context.logger.logDebug( @@ -440,7 +440,7 @@ export class NapCatOneBot11Adapter { // this.networkManager // .emitEvent(groupDecreaseEvent) // .catch((e) => - // this.context.logger.logError.bind(this.context.logger)('处理群成员退出失败', e) + // this.context.logger.logError('处理群成员退出失败', e) // ); // // notify.status == 1 表示未处理 2表示处理完成 // } else @@ -465,10 +465,10 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupRequestEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理加群请求失败', e) + this.context.logger.logError('处理加群请求失败', e) ); } catch (e) { - this.context.logger.logError.bind(this.context.logger)( + this.context.logger.logError( '获取加群人QQ号失败 Uid:', notify.user1.uid, e @@ -490,7 +490,7 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupInviteEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) + this.context.logger.logError('处理邀请本人加群失败', e) ); } else if ( notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && @@ -508,7 +508,7 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupInviteEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) + this.context.logger.logError('处理邀请本人加群失败', e) ); } } @@ -533,10 +533,10 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupAdminNoticeEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e) + this.context.logger.logError('处理群管理员变动失败', e) ); existMember.isChangeRole = false; - this.context.logger.logDebug.bind(this.context.logger)('群管理员变动处理完毕'); + this.context.logger.logDebug('群管理员变动处理完毕'); }); } }; diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 2b4d549d..5e62369f 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -50,12 +50,12 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { try { this.obContext.apis.QuickActionApi .handleQuickOperation(event as QuickActionEvent, resJson) - .catch(this.logger.logError.bind(this.logger)); + .catch(e=>this.logger.logError(e)); } catch (e: any) { - this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); + this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); } }).catch((e) => { - this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); + this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); }); } diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index d41bd7f7..47d75a6e 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -95,7 +95,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.connectEvent(this.core); } catch (e) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发送连接生命周期失败', e); + this.logger.logError('[OneBot] [WebSocket Client] 发送连接生命周期失败', e); } }); @@ -104,8 +104,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { }); this.connection.once('close', () => { if (!isClosedByError) { - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接意外关闭`); - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); + this.logger.logError(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接意外关闭`); + this.logger.logError(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); if (this.isEnable) { this.connection = null; setTimeout(() => this.tryConnect(), this.config.reconnectInterval); @@ -114,8 +114,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { }); this.connection.on('error', (err) => { isClosedByError = true; - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接错误`, err); - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); + this.logger.logError(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接错误`, err); + this.logger.logError(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); if (this.isEnable) { this.connection = null; setTimeout(() => this.tryConnect(), this.config.reconnectInterval); @@ -128,7 +128,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.checkStateAndReply(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT)); } catch (e) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发送生命周期失败', e); + this.logger.logError('[OneBot] [WebSocket Client] 发送生命周期失败', e); } } @@ -147,7 +147,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { receiveData.params = (receiveData?.params) ? receiveData.params : {};// 兼容类型验证 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的Api ' + receiveData.action); + this.logger.logError('[OneBot] [WebSocket Client] 发生错误', '不支持的Api ' + receiveData.action); this.checkStateAndReply(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo)); return; } diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 836f881f..85a73a94 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -51,7 +51,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { wsClient.on('error', (err) => this.logger.log('[OneBot] [WebSocket Server] Client Error:', err.message)); wsClient.on('message', (message) => { - this.handleMessage(wsClient, message).then().catch(this.logger.logError.bind(this.logger)); + this.handleMessage(wsClient, message).then().catch(e => this.logger.logError(e)); }); wsClient.on('ping', () => { wsClient.pong(); @@ -85,7 +85,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.checkStateAndReply(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT), wsClient); } catch (e) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] 发送生命周期失败', e); + this.logger.logError('[OneBot] [WebSocket Server] 发送生命周期失败', e); } } @@ -99,7 +99,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { open() { if (this.isEnable) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] Cannot open a opened WebSocket server'); + this.logger.logError('[OneBot] [WebSocket Server] Cannot open a opened WebSocket server'); return; } const addressInfo = this.wsServer.address(); @@ -116,9 +116,9 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.isEnable = false; this.wsServer.close((err) => { if (err) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] Error closing server:', err.message); + this.logger.logError('[OneBot] [WebSocket Server] Error closing server:', err.message); } else { - this.logger.log.bind(this.logger)('[OneBot] [WebSocket Server] Server Closed'); + this.logger.log('[OneBot] [WebSocket Server] Server Closed'); } }); @@ -179,7 +179,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 不然类型校验爆炸 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的API ' + receiveData.action); + this.logger.logError('[OneBot] [WebSocket Client] 发生错误', '不支持的API ' + receiveData.action); this.checkStateAndReply(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient); return; } diff --git a/src/shell/napcat.ts b/src/shell/napcat.ts index 8675f7dc..8b4d5a69 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -176,7 +176,7 @@ async function handleLogin( } logger.log('核心登录服务连接成功!'); - + 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())); @@ -276,7 +276,7 @@ export async function NCoreInitShell() { o3Service.addO3MiscListener(new NodeIO3MiscListener()); logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion); - InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); + InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e)); const engine = wrapper.NodeIQQNTWrapperEngine.get(); const loginService = wrapper.NodeIKernelLoginService.get(); @@ -362,7 +362,7 @@ export class NapCatShell { async InitNapCat() { await this.core.initCore(); new NapCatOneBot11Adapter(this.core, this.context, this.context.pathWrapper).InitOneBot() - .catch(e => this.context.logger.logError.bind(this.context.logger)('初始化OneBot失败', e)); + .catch(e => this.context.logger.logError('初始化OneBot失败', e)); } } diff --git a/src/webui/index.ts b/src/webui/index.ts index a450d856..fedb2a6d 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -29,10 +29,9 @@ export let webUiPathWrapper: NapCatPathWrapper; export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapper) { webUiPathWrapper = pathWrapper; WebUiConfig = new WebUiConfigWrapper(); - const log = logger.log.bind(logger); const config = await WebUiConfig.GetWebUIConfig(); if (config.port == 0) { - log('[NapCat] [WebUi] Current WebUi is not run.'); + logger.log('[NapCat] [WebUi] Current WebUi is not run.'); return; } @@ -67,16 +66,16 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp path = `${config.prefix}/webui`; // 打印日志(地址、token) - log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); - log(`[NapCat] [WebUi] Login Token is ${config.token}`); - log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); - log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); + logger.log(`[NapCat] [WebUi] Login Token is ${config.token}`); + logger.log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); // 获取公网地址 try { const publishUrl = 'https://ip.011102.xyz/'; const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); - log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, port, path, searchParams)}`); } catch (err) { logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); }