diff --git a/src/common/audio.ts b/src/common/audio.ts index 97bdc921..a89a873f 100644 --- a/src/common/audio.ts +++ b/src/common/audio.ts @@ -83,7 +83,7 @@ export async function encodeSilk(filePath: string, TEMP_DIR: string, logger: Log }; } } catch (error: any) { - logger.logError('convert silk failed', error.stack); + logger.logError.bind(logger)('convert silk failed', error.stack); return {}; } } \ No newline at end of file diff --git a/src/common/config-base.ts b/src/common/config-base.ts index 79e44c85..8070c79b 100644 --- a/src/common/config-base.ts +++ b/src/common/config-base.ts @@ -40,7 +40,7 @@ export abstract class ConfigBase { fs.writeFileSync(configPath, fs.readFileSync(this.getConfigPath(undefined), 'utf-8')); logger.log(`[Core] [Config] 配置文件创建成功!\n`); } catch (e: any) { - logger.logError(`[Core] [Config] 创建配置文件时发生错误:`, e.message); + logger.logError.bind(logger)(`[Core] [Config] 创建配置文件时发生错误:`, e.message); } } try { @@ -49,9 +49,9 @@ export abstract class ConfigBase { return this.configData; } catch (e: any) { if (e instanceof SyntaxError) { - logger.logError(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); + logger.logError.bind(logger)(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); } else { - logger.logError(`[Core] [Config] 读取配置文件时发生错误:`, e.message); + logger.logError.bind(logger)(`[Core] [Config] 读取配置文件时发生错误:`, e.message); } return {} as T; } @@ -66,7 +66,7 @@ export abstract class ConfigBase { try { fs.writeFileSync(configPath, JSON.stringify(newConfigData, this.getKeys(), 2)); } catch (e: any) { - logger.logError(`保存配置文件 ${configPath} 时发生错误:`, e.message); + logger.logError.bind(logger)(`保存配置文件 ${configPath} 时发生错误:`, e.message); } } } diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 586532f3..27f5ebaf 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -145,7 +145,7 @@ export class NTQQFileApi { try { videoInfo = await getVideoInfo(filePath, logger); } catch (e) { - logger.logError('获取视频信息失败,将使用默认值', e); + logger.logError.bind(logger)('获取视频信息失败,将使用默认值', e); } let fileExt = 'mp4'; @@ -153,7 +153,7 @@ export class NTQQFileApi { const tempExt = (await fileType.fileTypeFromFile(filePath))?.ext; if (tempExt) fileExt = tempExt; } catch (e) { - this.context.logger.logError('获取文件类型失败', e); + this.context.logger.logError.bind(logger)('获取文件类型失败', e); } const newFilePath = filePath + '.' + fileExt; fs.copyFileSync(filePath, newFilePath); @@ -227,7 +227,7 @@ export class NTQQFileApi { } if (converted) { fsPromises.unlink(silkPath).then().catch( - (e) => this.context.logger.logError('删除临时文件失败', e) + (e) => this.context.logger.logError.bind(this.context.logger)('删除临时文件失败', e) ); } return { diff --git a/src/core/apis/webapi.ts b/src/core/apis/webapi.ts index 243b93b8..6e3c1218 100644 --- a/src/core/apis/webapi.ts +++ b/src/core/apis/webapi.ts @@ -264,7 +264,7 @@ export class NTQQWebApi { }); } } else { - this.context.logger.logError('获取龙王信息失败'); + this.context.logger.logError.bind(this.context.logger)('获取龙王信息失败'); } } if (getType === WebHonorType.PERFORMER || getType === WebHonorType.ALL) { @@ -280,7 +280,7 @@ export class NTQQWebApi { }); } } else { - this.context.logger.logError('获取群聊之火失败'); + this.context.logger.logError.bind(this.context.logger)('获取群聊之火失败'); } } if (getType === WebHonorType.PERFORMER || getType === WebHonorType.ALL) { @@ -296,7 +296,7 @@ export class NTQQWebApi { }); } } else { - this.context.logger.logError('获取群聊炽焰失败'); + this.context.logger.logError.bind(this.context.logger)('获取群聊炽焰失败'); } } if (getType === WebHonorType.EMOTION || getType === WebHonorType.ALL) { @@ -312,7 +312,7 @@ export class NTQQWebApi { }); } } else { - this.context.logger.logError('获取快乐源泉失败'); + this.context.logger.logError.bind(this.context.logger)('获取快乐源泉失败'); } } diff --git a/src/core/helper/rkey.ts b/src/core/helper/rkey.ts index 4806baf2..0c74f45c 100644 --- a/src/core/helper/rkey.ts +++ b/src/core/helper/rkey.ts @@ -26,7 +26,7 @@ export class RkeyManager { try { await this.refreshRkey(); } catch (e) { - this.logger.logError('获取rkey失败', e); + this.logger.logError.bind(this.logger)('获取rkey失败', e); } } return this.rkeyData; @@ -44,7 +44,7 @@ export class RkeyManager { try { this.rkeyData = await RequestUtil.HttpGetJson(url, 'GET'); } catch (e) { - this.logger.logError(`[Rkey] Get Rkey ${url} Error `, e); + this.logger.logError.bind(this.logger)(`[Rkey] Get Rkey ${url} Error `, e); } } diff --git a/src/core/index.ts b/src/core/index.ts index 475573ce..5a5f89f5 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -99,7 +99,7 @@ export class NapCatCore { if (!fs.existsSync(this.NapCatTempPath)) { fs.mkdirSync(this.NapCatTempPath, { recursive: true }); } - this.initNapCatCoreListeners().then().catch(this.context.logger.logError); + this.initNapCatCoreListeners().then().catch(this.context.logger.logError.bind(this.context.logger)); this.context.logger.setFileLogEnabled( this.configLoader.configData.fileLog, @@ -127,7 +127,7 @@ export class NapCatCore { const msgListener = new NodeIKernelMsgListener(); msgListener.onKickedOffLine = (Info: KickedOffLineInfo) => { // 下线通知 - this.context.logger.logError('[KickedOffLine] [' + Info.tipsTitle + '] ' + Info.tipsDesc); + this.context.logger.logError.bind(this.context.logger)('[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 7be6b7e4..cc1c3f23 100644 --- a/src/framework/napcat.ts +++ b/src/framework/napcat.ts @@ -49,7 +49,7 @@ export async function NCoreInitFramework( const loaderObject = new NapCatFramework(wrapper, session, logger, loginService, selfInfo, basicInfoWrapper, pathWrapper); //启动WebUi - InitWebUi(logger, pathWrapper).then().catch(logger.logError); + InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); //初始化LLNC的Onebot实现 new NapCatOneBot11Adapter(loaderObject.core, loaderObject.context, pathWrapper); } diff --git a/src/onebot/action/BaseAction.ts b/src/onebot/action/BaseAction.ts index 8c4aa543..92e46f8a 100644 --- a/src/onebot/action/BaseAction.ts +++ b/src/onebot/action/BaseAction.ts @@ -46,7 +46,7 @@ abstract class BaseAction { const resData = await this._handle(payload); return OB11Response.ok(resData); } catch (e: any) { - this.core.context.logger.logError('发生错误', e); + this.core.context.logger.logError.bind(this.core.context.logger)('发生错误', e); return OB11Response.error(e?.toString() || e?.stack?.toString() || '未知错误,可能操作超时', 200); } } @@ -60,7 +60,7 @@ abstract class BaseAction { const resData = await this._handle(payload); return OB11Response.ok(resData, echo); } catch (e: any) { - this.core.context.logger.logError('发生错误', e); + this.core.context.logger.logError.bind(this.core.context.logger)('发生错误', e); return OB11Response.error(e.stack?.toString() || e.toString(), 1200, echo); } } diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index a6d99400..d65d2032 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -149,7 +149,7 @@ export class SendMsg extends BaseAction { //对Mgsid和OB11ID混用情况兜底 const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)) || MessageUnique.getPeerByMsgId(nodeId); if (!nodeMsg) { - logger.logError('转发消息失败,未找到消息', nodeId); + logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', nodeId); continue; } nodeMsgIds.push(nodeMsg.MsgId); @@ -161,7 +161,7 @@ export class SendMsg extends BaseAction { const isNodeMsg = OB11Data.filter(e => e.type === OB11MessageDataType.node).length;//找到子转发消息 if (isNodeMsg !== 0) { if (isNodeMsg !== OB11Data.length) { - logger.logError('子消息中包含非node消息 跳过不合法部分'); + logger.logError.bind(this.core.context.logger)('子消息中包含非node消息 跳过不合法部分'); continue; } const nodeMsg = await this.handleForwardedNodes(selfPeer, OB11Data.filter(e => e.type === OB11MessageDataType.node)); @@ -209,7 +209,7 @@ export class SendMsg extends BaseAction { for (const msgId of nodeMsgIds) { const nodeMsgPeer = MessageUnique.getPeerByMsgId(msgId); if (!nodeMsgPeer) { - logger.logError('转发消息失败,未找到消息', msgId); + logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', msgId); continue; } const nodeMsg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsgPeer.Peer, [msgId])).msgList[0]; @@ -238,7 +238,7 @@ export class SendMsg extends BaseAction { logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds); return await this.core.apis.MsgApi.multiForwardMsg(srcPeer!, destPeer, retMsgIds); } catch (e) { - logger.logError('forward failed', e); + logger.logError.bind(this.core.context.logger)('forward failed', e); return null; } } @@ -262,7 +262,7 @@ export class SendMsg extends BaseAction { try { return await this.core.apis.MsgApi.sendMsg(selfPeer, sendElements, true); } catch (e) { - logger.logError(e, '克隆转发消息失败,将忽略本条消息', msg); + logger.logError.bind(this.core.context.logger)(e, '克隆转发消息失败,将忽略本条消息', msg); } } } diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index fb2d646f..5a5ad8a1 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -289,7 +289,7 @@ export class OneBotGroupApi { } const replyMsg = replyMsgList[0]; if (!replyMsg) { - this.core.context.logger.logError('解析表情回应消息失败: 未找到回应消息'); + this.core.context.logger.logError.bind(this.core.context.logger)('解析表情回应消息失败: 未找到回应消息'); return undefined; } return new OB11GroupMsgEmojiLikeEvent( diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 27f2e9d0..e77e652b 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -122,7 +122,7 @@ export class OneBotMsgApi { }, }; } catch (e: any) { - this.core.context.logger.logError('获取图片url失败', e.stack); + this.core.context.logger.logError.bind(this.core.context.logger)('获取图片url失败', e.stack); return null; } }, @@ -201,7 +201,7 @@ export class OneBotMsgApi { guildId: '', }; if (!records || !element.replyMsgTime || !element.senderUidStr) { - this.core.context.logger.logError('获取不到引用的消息', element.replayMsgSeq); + this.core.context.logger.logError.bind(this.core.context.logger)('获取不到引用的消息', element.replayMsgSeq); return null; } @@ -219,7 +219,7 @@ export class OneBotMsgApi { .msgList.find(msg => msg.msgRandom === records.msgRandom); if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logError('获取不到引用的消息', element.replayMsgSeq); + this.core.context.logger.logError.bind(this.core.context.logger)('获取不到引用的消息', element.replayMsgSeq); return null; } return createReplyData(replyMsg.msgId); @@ -422,7 +422,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('不支持的ID', id); + this.core.context.logger.logError.bind(this.core.context.logger)('不支持的ID', id); return undefined; } parsedFaceId = parseInt(parsedFaceId.toString()); @@ -549,20 +549,20 @@ export class OneBotMsgApi { // 保留, 直到...找到更好的解决方案 if (data.id !== undefined) { if (!['qq', '163', 'kugou', 'kuwo', 'migu'].includes(data.type)) { - this.core.context.logger.logError('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu,当前type:', data.type); + this.core.context.logger.logError.bind(this.core.context.logger)('音乐卡片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('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu、custom,当前type:', data.type); + this.core.context.logger.logError.bind(this.core.context.logger)('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu、custom,当前type:', data.type); return undefined; } if (!data.url) { - this.core.context.logger.logError('自定义音卡缺少参数url'); + this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数url'); return undefined; } if (!data.image) { - this.core.context.logger.logError('自定义音卡缺少参数image'); + this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数image'); return undefined; } } @@ -586,7 +586,7 @@ export class OneBotMsgApi { type: OB11MessageDataType.json }, context); } catch (e) { - this.core.context.logger.logError('生成音乐消息失败', e); + this.core.context.logger.logError.bind(this.core.context.logger)('生成音乐消息失败', e); } }, @@ -725,7 +725,7 @@ export class OneBotMsgApi { if (entry.status === 'fulfilled') { return !!entry.value; } else { - this.core.context.logger.logError('消息段解析失败', entry.reason); + this.core.context.logger.logError.bind(this.core.context.logger)('消息段解析失败', entry.reason); return false; } }).map((entry) => (>entry).value).filter(value => value != null); @@ -793,7 +793,7 @@ export class OneBotMsgApi { timeout += PredictTime;// 10S Basic Timeout + PredictTime( For File 512kb/s ) } } catch (e) { - this.core.context.logger.logError('发送消息计算预计时间异常', e); + this.core.context.logger.logError.bind(this.core.context.logger)('发送消息计算预计时间异常', e); } const returnMsg = await this.core.apis.MsgApi.sendMsg(peer, sendElements, waitComplete, timeout); if (!returnMsg) throw new Error('发送消息失败'); @@ -803,7 +803,7 @@ export class OneBotMsgApi { peerUid: peer.peerUid, }, returnMsg.msgId); deleteAfterSentFiles.forEach(file => { - fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError('发送消息删除文件失败', e)); + fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', e)); }); return returnMsg; } @@ -814,7 +814,7 @@ export class OneBotMsgApi { ) { const realUri = inputdata.url || inputdata.file || inputdata.path || ''; if (realUri.length === 0) { - this.core.context.logger.logError('文件消息缺少参数', inputdata); + this.core.context.logger.logError.bind(this.core.context.logger)('文件消息缺少参数', inputdata); throw Error('文件消息缺少参数'); } const { @@ -825,7 +825,7 @@ export class OneBotMsgApi { } = (await uri2local(this.core.NapCatTempPath, realUri)); if (!success) { - this.core.context.logger.logError('文件下载失败', errMsg); + this.core.context.logger.logError.bind(this.core.context.logger)('文件下载失败', errMsg); throw Error('文件下载失败' + errMsg); } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index b21f0060..f1a6c174 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -71,7 +71,7 @@ export class NapCatOneBot11Adapter { this.actions = createActionMap(this, core); this.networkManager = new OB11NetworkManager(); this.InitOneBot() - .catch(e => this.context.logger.logError('初始化OneBot失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('初始化OneBot失败', e)); } async InitOneBot() { @@ -87,7 +87,7 @@ export class NapCatOneBot11Adapter { this.core.apis.UserApi.getUserDetailInfo(selfInfo.uid).then(user => { selfInfo.nick = user.nick; this.context.logger.setLogSelfInfo(selfInfo); - }).catch(this.context.logger.logError); + }).catch(this.context.logger.logError.bind(this.context.logger)); this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`); //创建NetWork服务 @@ -241,7 +241,7 @@ export class NapCatOneBot11Adapter { msgListener.onRecvSysMsg = (msg) => { this.apis.MsgApi.parseSysMessage(msg).then((event) => { if (event) this.networkManager.emitEvent(event); - }).catch(e => this.context.logger.logError('constructSysMessage error: ', e)); + }).catch(e => this.context.logger.logError.bind(this.context.logger)('constructSysMessage error: ', e)); }; msgListener.onInputStatusPush = async data => { @@ -270,7 +270,7 @@ export class NapCatOneBot11Adapter { m.msgId, ); await this.emitMsg(m) - .catch(e => this.context.logger.logError('处理消息失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理消息失败', e)); } }; @@ -278,7 +278,7 @@ export class NapCatOneBot11Adapter { const recallMsgs = new LRUCache(100); msgListener.onMsgInfoListUpdate = async msgList => { this.emitRecallMsg(msgList, recallMsgs) - .catch(e => this.context.logger.logError('处理消息失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理消息失败', e)); for (const msg of msgList.filter(e => e.senderUin == this.core.selfInfo.uin)) { if (msg.sendStatus == SendStatusType.KSEND_STATUS_SUCCESS && !msgIdSend.get(msg.msgId)) { @@ -380,7 +380,7 @@ export class NapCatOneBot11Adapter { ].includes(notify.type) ? 'unset' : 'set', ); this.networkManager.emitEvent(groupAdminNoticeEvent) - .catch(e => this.context.logger.logError('处理群管理员变动失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e)); } else { this.context.logger.logDebug('获取群通知的成员信息失败', notify, this.core.apis.GroupApi.getGroup(notify.group.groupCode)); } @@ -405,7 +405,7 @@ export class NapCatOneBot11Adapter { subType, ); this.networkManager.emitEvent(groupDecreaseEvent) - .catch(e => this.context.logger.logError('处理群成员退出失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理群成员退出失败', e)); // notify.status == 1 表示未处理 2表示处理完成 } else if ([ GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS, @@ -425,9 +425,9 @@ export class NapCatOneBot11Adapter { flag, ); this.networkManager.emitEvent(groupRequestEvent) - .catch(e => this.context.logger.logError('处理加群请求失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理加群请求失败', e)); } catch (e) { - this.context.logger.logError('获取加群人QQ号失败 Uid:', notify.user1.uid, e); + this.context.logger.logError.bind(this.context.logger)('获取加群人QQ号失败 Uid:', notify.user1.uid, e); } } else if (notify.type == GroupNotifyMsgType.INVITED_BY_MEMBER && notify.status == GroupNotifyMsgStatus.KUNHANDLE) { this.context.logger.logDebug(`收到邀请我加群通知:${notify}`); @@ -440,7 +440,7 @@ export class NapCatOneBot11Adapter { flag, ); this.networkManager.emitEvent(groupInviteEvent) - .catch(e => this.context.logger.logError('处理邀请本人加群失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e)); } else if (notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && notify.status == GroupNotifyMsgStatus.KUNHANDLE) { this.context.logger.logDebug(`收到群员邀请加群通知:${notify}`); const groupInviteEvent = new OB11GroupRequestEvent( @@ -452,7 +452,7 @@ export class NapCatOneBot11Adapter { flag, ); this.networkManager.emitEvent(groupInviteEvent) - .catch(e => this.context.logger.logError('处理邀请本人加群失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e)); } } } @@ -474,9 +474,9 @@ export class NapCatOneBot11Adapter { member.role === GroupMemberRole.admin ? 'set' : 'unset', ); this.networkManager.emitEvent(groupAdminNoticeEvent) - .catch(e => this.context.logger.logError('处理群管理员变动失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e)); existMember.isChangeRole = false; - this.context.logger.logDebug('群管理员变动处理完毕'); + this.context.logger.logDebug.bind(this.context.logger)('群管理员变动处理完毕'); }); } }; @@ -499,8 +499,6 @@ export class NapCatOneBot11Adapter { return; } } - // logOB11Message(this.core, ob11Msg) - // .catch(e => this.context.logger.logError('logMessage error: ', e)); const isSelfMsg = ob11Msg.user_id.toString() == this.core.selfInfo.uin; if (isSelfMsg && !reportSelfMessage) { return; @@ -509,21 +507,21 @@ export class NapCatOneBot11Adapter { ob11Msg.target_id = parseInt(message.peerUin); } this.networkManager.emitEvent(ob11Msg); - }).catch(e => this.context.logger.logError('constructMessage error: ', e)); + }).catch(e => this.context.logger.logError.bind(this.context.logger)('constructMessage error: ', e)); this.apis.GroupApi.parseGroupEvent(message).then(groupEvent => { if (groupEvent) { // log("post group event", groupEvent); this.networkManager.emitEvent(groupEvent); } - }).catch(e => this.context.logger.logError('constructGroupEvent error: ', e)); + }).catch(e => this.context.logger.logError.bind(this.context.logger)('constructGroupEvent error: ', e)); this.apis.MsgApi.parsePrivateMsgEvent(message).then(privateEvent => { if (privateEvent) { // log("post private event", privateEvent); this.networkManager.emitEvent(privateEvent); } - }).catch(e => this.context.logger.logError('constructPrivateEvent error: ', e)); + }).catch(e => this.context.logger.logError.bind(this.context.logger)('constructPrivateEvent error: ', e)); } private async emitRecallMsg(msgList: RawMessage[], cache: LRUCache) { @@ -543,7 +541,7 @@ export class NapCatOneBot11Adapter { oriMessageId, ); this.networkManager.emitEvent(friendRecallEvent) - .catch(e => this.context.logger.logError('处理好友消息撤回失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理好友消息撤回失败', e)); } else if (message.chatType == ChatType.KCHATTYPEGROUP) { let operatorId = message.senderUin; for (const element of message.elements) { @@ -560,7 +558,7 @@ export class NapCatOneBot11Adapter { oriMessageId, ); this.networkManager.emitEvent(groupRecallEvent) - .catch(e => this.context.logger.logError('处理群消息撤回失败', e)); + .catch(e => this.context.logger.logError.bind(this.context.logger)('处理群消息撤回失败', e)); } } } diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 9992f6bf..26687929 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -49,12 +49,12 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { try { this.obContext.apis.QuickActionApi .handleQuickOperation(event as QuickActionEvent, resJson) - .catch(this.logger.logError); + .catch(this.logger.logError.bind(this.logger)); } catch (e: any) { - this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); + this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); } }).catch((e) => { - this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); + this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); }); } diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index cf7ec602..e35c16c5 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -91,7 +91,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.connectEvent(this.core); } catch (e) { - this.logger.logError('[OneBot] [WebSocket Client] 发送连接生命周期失败', e); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发送连接生命周期失败', e); } }); @@ -100,8 +100,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { }); this.connection.once('close', () => { if (!isClosedByError) { - this.logger.logError(`[OneBot] [WebSocket Client] 反向WebSocket (${this.url}) 连接意外关闭`); - this.logger.logError(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.reconnectIntervalInMillis / 1000)} 秒后尝试重新连接`); + this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.url}) 连接意外关闭`); + this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.reconnectIntervalInMillis / 1000)} 秒后尝试重新连接`); if (!this.isClosed) { this.connection = null; setTimeout(() => this.tryConnect(), this.reconnectIntervalInMillis); @@ -110,8 +110,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { }); this.connection.on('error', (err) => { isClosedByError = true; - this.logger.logError(`[OneBot] [WebSocket Client] 反向WebSocket (${this.url}) 连接错误`, err); - this.logger.logError(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.reconnectIntervalInMillis / 1000)} 秒后尝试重新连接`); + this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.url}) 连接错误`, err); + this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.reconnectIntervalInMillis / 1000)} 秒后尝试重新连接`); if (!this.isClosed) { this.connection = null; setTimeout(() => this.tryConnect(), this.reconnectIntervalInMillis); @@ -124,7 +124,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.checkStateAndReply(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT)); } catch (e) { - this.logger.logError('[OneBot] [WebSocket Client] 发送生命周期失败', e); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发送生命周期失败', e); } } @@ -143,7 +143,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError('[OneBot] [WebSocket Client] 发生错误', '不支持的api ' + receiveData.action); + this.logger.logError.bind(this.logger)('[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 8c2f2230..ba967222 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -55,7 +55,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); + this.handleMessage(wsClient, message).then().catch(this.logger.logError.bind(this.logger)); }); wsClient.on('ping', () => { wsClient.pong(); @@ -89,7 +89,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.checkStateAndReply(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT), wsClient); } catch (e) { - this.logger.logError('[OneBot] [WebSocket Server] 发送生命周期失败', e); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] 发送生命周期失败', e); } } @@ -103,11 +103,11 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { open() { if (this.isOpen) { - this.logger.logError('[OneBot] [WebSocket Server] Cannot open a opened WebSocket server'); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] Cannot open a opened WebSocket server'); return; } if (this.hasBeenClosed) { - this.logger.logError('[OneBot] [WebSocket Server] Cannot open a WebSocket server that has been closed'); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] Cannot open a WebSocket server that has been closed'); return; } const addressInfo = this.wsServer.address(); @@ -170,7 +170,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError('[OneBot] [WebSocket Client] 发生错误', '不支持的api ' + receiveData.action); + this.logger.logError.bind(this.logger)('[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 480e6cd4..36f82c06 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -46,7 +46,7 @@ export async function NCoreInitShell() { o3Service.addO3MiscListener(new NodeIO3MiscListener()); logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion); - InitWebUi(logger, pathWrapper).then().catch(logger.logError); + InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); // from constructor const engine = wrapper.NodeIQQNTWrapperEngine.get(); @@ -126,7 +126,7 @@ export async function NCoreInitShell() { let isLogined = false; // from constructor loginListener.onUserLoggedIn = (userid: string) => { - logger.logError(`当前账号(${userid})已登录,无法重复登录`); + logger.logError.bind(logger)(`当前账号(${userid})已登录,无法重复登录`); }; loginListener.onQRCodeLoginSucceed = async (loginResult) => { @@ -160,9 +160,8 @@ export async function NCoreInitShell() { }); }; loginListener.onQRCodeSessionFailed = (errType: number, errCode: number, errMsg: string) => { - //logger.logError('登录失败(onQRCodeSessionFailed)', errCode, errMsg); if (!isLogined) { - logger.logError('[Core] [Login] Login Error,ErrCode: ', errCode, ' ErrMsg:', errMsg); + logger.logError.bind(logger)('[Core] [Login] Login Error,ErrCode: ', errCode, ' ErrMsg:', errMsg); if (errType == 1 && errCode == 3) { // 二维码过期刷新 } @@ -170,14 +169,13 @@ export async function NCoreInitShell() { } }; loginListener.onLoginFailed = (args) => { - //logger.logError('登录失败(onLoginFailed)', args); - logger.logError('[Core] [Login] Login Error , ErrInfo: ', args); + logger.logError.bind(logger)('[Core] [Login] Login Error , ErrInfo: ', args); }; loginService.addKernelLoginListener(proxiedListenerOf(loginListener, logger) as any); const isConnect = loginService.connect(); if (!isConnect) { - logger.logError('核心登录服务连接失败!'); + logger.logError.bind(logger)('核心登录服务连接失败!'); return; } logger.log('核心登录服务连接成功!'); @@ -197,14 +195,14 @@ export async function NCoreInitShell() { WebUiDataRuntime.setQuickLoginCall(async (uin: string) => { return await new Promise((resolve) => { if (uin) { - logger.log('正在快速登录 ', uin); + logger.log.bind(logger)('正在快速登录 ', 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); + logger.logError.bind(logger)(e); resolve({ result: false, message: '快速登录发生错误' }); }); } else { @@ -220,14 +218,14 @@ export async function NCoreInitShell() { loginService.quickLoginWithUin(quickLoginUin) .then(result => { if (result.loginErrorInfo.errMsg) { - logger.logError('快速登录错误:', result.loginErrorInfo.errMsg); + logger.logError.bind(logger)('快速登录错误:', result.loginErrorInfo.errMsg); if (!isLogined) loginService.getQRCodePicture(); } }) .catch(); }, 1000); } else { - logger.logError('快速登录失败,未找到该 QQ 历史登录记录,将使用二维码登录方式'); + logger.logError.bind(logger)('快速登录失败,未找到该 QQ 历史登录记录,将使用二维码登录方式'); if (!isLogined) loginService.getQRCodePicture(); } } else { diff --git a/src/webui/index.ts b/src/webui/index.ts index d64f5fe4..3d4cae46 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -54,7 +54,7 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp ).then((data) => { log(`[NapCat] [WebUi] WebUi Publish Panel Url: http://${data.IP.IP}:${config.port}${config.prefix}/webui/?token=${config.token}`); }).catch((err) => { - logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); + logger.logError.bind(logger)(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); }); });