refactor: logger bind (#577)

This commit is contained in:
手瓜一十雪
2024-11-28 20:55:28 +08:00
committed by GitHub
parent 97cacb4383
commit 53c1d40bcf
19 changed files with 109 additions and 117 deletions

View File

@@ -96,7 +96,7 @@ export async function encodeSilk(filePath: string, TEMP_DIR: string, logger: Log
}; };
} }
} catch (error: any) { } catch (error: any) {
logger.logError.bind(logger)('convert silk failed', error.stack); logger.logError('convert silk failed', error.stack);
return {}; return {};
} }
} }

View File

@@ -33,27 +33,27 @@ export abstract class ConfigBase<T> {
} }
read(copy_default: boolean = true): T { read(copy_default: boolean = true): T {
const logger = this.core.context.logger;
const configPath = this.getConfigPath(this.core.selfInfo.uin); const configPath = this.getConfigPath(this.core.selfInfo.uin);
if (!fs.existsSync(configPath) && copy_default) { if (!fs.existsSync(configPath) && copy_default) {
try { try {
fs.writeFileSync(configPath, fs.readFileSync(this.getConfigPath(undefined), 'utf-8')); 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) { } 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) { } else if (!fs.existsSync(configPath) && !copy_default) {
fs.writeFileSync(configPath, '{}'); fs.writeFileSync(configPath, '{}');
} }
try { try {
this.configData = JSON.parse(fs.readFileSync(configPath, 'utf-8')); 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; return this.configData;
} catch (e: any) { } catch (e: any) {
if (e instanceof SyntaxError) { if (e instanceof SyntaxError) {
logger.logError.bind(logger)(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); this.core.context.logger.logError(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message);
} else { } else {
logger.logError.bind(logger)(`[Core] [Config] 读取配置文件时发生错误:`, e.message); this.core.context.logger.logError(`[Core] [Config] 读取配置文件时发生错误:`, e.message);
} }
return {} as T; return {} as T;
} }
@@ -61,14 +61,13 @@ export abstract class ConfigBase<T> {
save(newConfigData: T = this.configData) { save(newConfigData: T = this.configData) {
const logger = this.core.context.logger;
const selfInfo = this.core.selfInfo; const selfInfo = this.core.selfInfo;
this.configData = newConfigData; this.configData = newConfigData;
const configPath = this.getConfigPath(selfInfo.uin); const configPath = this.getConfigPath(selfInfo.uin);
try { try {
fs.writeFileSync(configPath, JSON.stringify(newConfigData, this.getKeys(), 2)); fs.writeFileSync(configPath, JSON.stringify(newConfigData, this.getKeys(), 2));
} catch (e: any) { } catch (e: any) {
logger.logError.bind(logger)(`保存配置文件 ${configPath} 时发生错误:`, e.message); this.core.context.logger.logError(`保存配置文件 ${configPath} 时发生错误:`, e.message);
} }
} }
} }

View File

@@ -142,7 +142,6 @@ export class NTQQFileApi {
} }
async createValidSendVideoElement(context: SendMessageContext, filePath: string, fileName: string = '', diyThumbPath: string = ''): Promise<SendVideoElement> { async createValidSendVideoElement(context: SendMessageContext, filePath: string, fileName: string = '', diyThumbPath: string = ''): Promise<SendVideoElement> {
const logger = this.core.context.logger;
let videoInfo = { let videoInfo = {
width: 1920, width: 1920,
height: 1080, height: 1080,
@@ -152,9 +151,9 @@ export class NTQQFileApi {
filePath, filePath,
}; };
try { try {
videoInfo = await getVideoInfo(filePath, logger); videoInfo = await getVideoInfo(filePath, this.context.logger);
} catch (e) { } catch (e) {
logger.logError.bind(logger)('获取视频信息失败,将使用默认值', e); this.context.logger.logError('获取视频信息失败,将使用默认值', e);
} }
let fileExt = 'mp4'; let fileExt = 'mp4';
@@ -162,7 +161,7 @@ export class NTQQFileApi {
const tempExt = (await fileType.fileTypeFromFile(filePath))?.ext; const tempExt = (await fileType.fileTypeFromFile(filePath))?.ext;
if (tempExt) fileExt = tempExt; if (tempExt) fileExt = tempExt;
} catch (e) { } catch (e) {
this.context.logger.logError.bind(logger)('获取文件类型失败', e); this.context.logger.logError('获取文件类型失败', e);
} }
const newFilePath = filePath + '.' + fileExt; const newFilePath = filePath + '.' + fileExt;
fs.copyFileSync(filePath, newFilePath); fs.copyFileSync(filePath, newFilePath);
@@ -183,7 +182,7 @@ export class NTQQFileApi {
ffmpeg(filePath) ffmpeg(filePath)
.on('error', (err) => { .on('error', (err) => {
try { try {
logger.logDebug('获取视频封面失败,使用默认封面', err); this.context.logger.logDebug('获取视频封面失败,使用默认封面', err);
if (diyThumbPath) { if (diyThumbPath) {
fsPromises.copyFile(diyThumbPath, thumbPath).then(() => { fsPromises.copyFile(diyThumbPath, thumbPath).then(() => {
resolve(thumbPath); resolve(thumbPath);
@@ -193,7 +192,7 @@ export class NTQQFileApi {
resolve(thumbPath); resolve(thumbPath);
} }
} catch (error) { } catch (error) {
logger.logError.bind(logger)('获取视频封面失败,使用默认封面失败', error); this.context.logger.logError('获取视频封面失败,使用默认封面失败', error);
} }
}) })
.screenshots({ .screenshots({
@@ -230,6 +229,7 @@ export class NTQQFileApi {
} }
async createValidSendPttElement(pttPath: string): Promise<SendPttElement> { async createValidSendPttElement(pttPath: string): Promise<SendPttElement> {
const { converted, path: silkPath, duration } = await encodeSilk(pttPath, this.core.NapCatTempPath, this.core.context.logger); const { converted, path: silkPath, duration } = await encodeSilk(pttPath, this.core.NapCatTempPath, this.core.context.logger);
if (!silkPath) { if (!silkPath) {
throw new Error('语音转换失败, 请检查语音文件是否正常'); throw new Error('语音转换失败, 请检查语音文件是否正常');
@@ -239,8 +239,7 @@ export class NTQQFileApi {
throw new Error('文件异常大小为0'); throw new Error('文件异常大小为0');
} }
if (converted) { if (converted) {
fsPromises.unlink(silkPath).then().catch( fsPromises.unlink(silkPath).then().catch((e) => this.context.logger.logError('删除临时文件失败', e)
(e) => this.context.logger.logError.bind(this.context.logger)('删除临时文件失败', e)
); );
} }
return { return {
@@ -454,7 +453,7 @@ export class NTQQFileApi {
} }
} }
} catch (error: any) { } 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) { if (!rkeyData.online_rkey) {
@@ -464,7 +463,7 @@ export class NTQQFileApi {
rkeyData.private_rkey = tempRkeyData.private_rkey; rkeyData.private_rkey = tempRkeyData.private_rkey;
rkeyData.online_rkey = tempRkeyData.expired_time > Date.now() / 1000; rkeyData.online_rkey = tempRkeyData.expired_time > Date.now() / 1000;
} catch (e) { } catch (e) {
this.context.logger.logError.bind(this.context.logger)('获取rkey失败 Fallback Old Mode', e); this.context.logger.logError('获取rkey失败 Fallback Old Mode', e);
} }
} }

View File

@@ -27,7 +27,7 @@ export class NTQQGroupApi {
this.core = core; this.core = core;
} }
async initApi() { 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() { async initCache() {
this.groups = await this.getGroups(); this.groups = await this.getGroups();

View File

@@ -31,7 +31,7 @@ export class NTQQPacketApi {
await this.InitSendPacket(this.context.basicInfoWrapper.getFullQQVesion()) await this.InitSendPacket(this.context.basicInfoWrapper.getFullQQVesion())
.then() .then()
.catch((err) => { .catch((err) => {
this.logger.logError.bind(this.core.context.logger); this.logger.logError(err);
this.errStack.push(err); this.errStack.push(err);
}); });
} }

View File

@@ -27,7 +27,6 @@ export class RkeyManager {
await this.refreshRkey(); await this.refreshRkey();
} catch (e) { } catch (e) {
throw new Error(`获取rkey失败: ${e}`);//外抛 throw new Error(`获取rkey失败: ${e}`);//外抛
//this.logger.logError.bind(this.logger)('获取rkey失败', e);
} }
} }
return this.rkeyData; return this.rkeyData;
@@ -50,7 +49,7 @@ export class RkeyManager {
expired_time: temp.expired_time expired_time: temp.expired_time
}; };
} catch (e) { } catch (e) {
this.logger.logError.bind(this.logger)(`[Rkey] Get Rkey ${url} Error `, e); this.logger.logError(`[Rkey] Get Rkey ${url} Error `, e);
//是否为最后一个url //是否为最后一个url
if (url === this.serverUrl[this.serverUrl.length - 1]) { if (url === this.serverUrl[this.serverUrl.length - 1]) {
throw new Error(`获取rkey失败: ${e}`);//外抛 throw new Error(`获取rkey失败: ${e}`);//外抛

View File

@@ -127,7 +127,7 @@ export class NapCatCore {
await api.initApi(); 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.context.logger.setFileLogEnabled(
this.configLoader.configData.fileLog, this.configLoader.configData.fileLog,
@@ -154,7 +154,7 @@ export class NapCatCore {
const msgListener = new NodeIKernelMsgListener(); const msgListener = new NodeIKernelMsgListener();
msgListener.onKickedOffLine = (Info: KickedOffLineInfo) => { 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; this.selfInfo.online = false;
}; };
msgListener.onRecvMsg = (msgs) => { msgListener.onRecvMsg = (msgs) => {

View File

@@ -58,7 +58,7 @@ export async function NCoreInitFramework(
await loaderObject.core.initCore(); await loaderObject.core.initCore();
//启动WebUi //启动WebUi
InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e));
//初始化LLNC的Onebot实现 //初始化LLNC的Onebot实现
await new NapCatOneBot11Adapter(loaderObject.core, loaderObject.context, pathWrapper).InitOneBot(); await new NapCatOneBot11Adapter(loaderObject.core, loaderObject.context, pathWrapper).InitOneBot();
} }

View File

@@ -13,7 +13,7 @@ export class GoCQHTTPHandleQuickAction extends OneBotAction<Payload, null> {
async _handle(payload: Payload): Promise<null> { async _handle(payload: Payload): Promise<null> {
this.obContext.apis.QuickActionApi this.obContext.apis.QuickActionApi
.handleQuickOperation(payload.context, payload.operation) .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; return null;
} }
} }

View File

@@ -162,11 +162,10 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
finallySendElements: SendArkElement, finallySendElements: SendArkElement,
res_id?: string res_id?: string
} | null> { } | null> {
const logger = this.core.context.logger;
const packetMsg: PacketMsg[] = []; const packetMsg: PacketMsg[] = [];
for (const node of messageNodes) { for (const node of messageNodes) {
if (dp >= 3) { if (dp >= 3) {
logger.logWarn('转发消息深度超过3层将停止解析'); this.core.context.logger.logWarn('转发消息深度超过3层将停止解析');
break; break;
} }
if (!node.data.id) { if (!node.data.id) {
@@ -191,29 +190,29 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
time: Number(node.data.time) || Date.now(), time: Number(node.data.time) || Date.now(),
msg: sendElements, 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); 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); packetMsg.push(transformedMsg);
} else if (node.data.id) { } else if (node.data.id) {
const id = node.data.id; const id = node.data.id;
const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(+id) || MessageUnique.getPeerByMsgId(id); const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(+id) || MessageUnique.getPeerByMsgId(id);
if (!nodeMsg) { if (!nodeMsg) {
logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', id); this.core.context.logger.logError('转发消息失败,未找到消息', id);
continue; continue;
} }
const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsg.Peer, [nodeMsg.MsgId])).msgList[0]; 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]); await this.core.apis.FileApi.downloadRawMsgMedia([msg]);
const transformedMsg = this.core.apis.PacketApi.pkt.msgConverter.rawMsgToPacketMsg(msg, msgPeer); 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); packetMsg.push(transformedMsg);
} else { } else {
logger.logDebug(`handleForwardedNodesPacket 跳过元素 ${stringifyWithBigInt(node)}`); this.core.context.logger.logDebug(`handleForwardedNodesPacket 跳过元素 ${stringifyWithBigInt(node)}`);
} }
} }
if (packetMsg.length === 0) { if (packetMsg.length === 0) {
logger.logWarn('handleForwardedNodesPacket 元素为空!'); this.core.context.logger.logWarn('handleForwardedNodesPacket 元素为空!');
return null; return null;
} }
const resid = await this.core.apis.PacketApi.pkt.operation.UploadForwardMsg(packetMsg, msgPeer.chatType === ChatType.KCHATTYPEGROUP ? +msgPeer.peerUid : 0); 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<OB11PostSendMsg, ReturnDataType> {
peerUid: this.core.selfInfo.uid, peerUid: this.core.selfInfo.uid,
}; };
let nodeMsgIds: string[] = []; let nodeMsgIds: string[] = [];
const logger = this.core.context.logger;
for (const messageNode of messageNodes) { for (const messageNode of messageNodes) {
const nodeId = messageNode.data.id; const nodeId = messageNode.data.id;
if (nodeId) { if (nodeId) {
// 对Msgid和OB11ID混用情况兜底 // 对Msgid和OB11ID混用情况兜底
const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)) || MessageUnique.getPeerByMsgId(nodeId); const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)) || MessageUnique.getPeerByMsgId(nodeId);
if (!nodeMsg) { if (!nodeMsg) {
logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', nodeId); this.core.context.logger.logError('转发消息失败,未找到消息', nodeId);
continue; continue;
} }
nodeMsgIds.push(nodeMsg.MsgId); nodeMsgIds.push(nodeMsg.MsgId);
@@ -272,7 +270,7 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
const isNodeMsg = OB11Data.filter(e => e.type === OB11MessageDataType.node).length;//找到子转发消息 const isNodeMsg = OB11Data.filter(e => e.type === OB11MessageDataType.node).length;//找到子转发消息
if (isNodeMsg !== 0) { if (isNodeMsg !== 0) {
if (isNodeMsg !== OB11Data.length) { if (isNodeMsg !== OB11Data.length) {
logger.logError.bind(this.core.context.logger)('子消息中包含非node消息 跳过不合法部分'); this.core.context.logger.logError('子消息中包含非node消息 跳过不合法部分');
continue; continue;
} }
const nodeMsg = await this.handleForwardedNodes(selfPeer, OB11Data.filter(e => e.type === OB11MessageDataType.node)); const nodeMsg = await this.handleForwardedNodes(selfPeer, OB11Data.filter(e => e.type === OB11MessageDataType.node));
@@ -309,7 +307,7 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
} }
}); });
} catch (e: any) { } catch (e: any) {
logger.logDebug('生成转发消息节点失败', e?.stack); this.core.context.logger.logDebug('生成转发消息节点失败', e?.stack);
} }
} }
} }
@@ -320,7 +318,7 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
for (const msgId of nodeMsgIds) { for (const msgId of nodeMsgIds) {
const nodeMsgPeer = MessageUnique.getPeerByMsgId(msgId); const nodeMsgPeer = MessageUnique.getPeerByMsgId(msgId);
if (!nodeMsgPeer) { if (!nodeMsgPeer) {
logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', msgId); this.core.context.logger.logError('转发消息失败,未找到消息', msgId);
continue; continue;
} }
const nodeMsg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsgPeer.Peer, [msgId])).msgList[0]; const nodeMsg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsgPeer.Peer, [msgId])).msgList[0];
@@ -346,12 +344,12 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
} }
if (retMsgIds.length === 0) throw Error('转发消息失败,生成节点为空'); if (retMsgIds.length === 0) throw Error('转发消息失败,生成节点为空');
try { try {
logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds); this.core.context.logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds);
return { return {
message: await this.core.apis.MsgApi.multiForwardMsg(srcPeer!, destPeer, retMsgIds) message: await this.core.apis.MsgApi.multiForwardMsg(srcPeer!, destPeer, retMsgIds)
}; };
} catch (e: any) { } catch (e: any) {
logger.logError.bind(this.core.context.logger)('forward failed', e?.stack); this.core.context.logger.logError('forward failed', e?.stack);
return { return {
message: null message: null
}; };
@@ -363,7 +361,6 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
chatType: ChatType.KCHATTYPEC2C, chatType: ChatType.KCHATTYPEC2C,
peerUid: this.core.selfInfo.uid, peerUid: this.core.selfInfo.uid,
}; };
const logger = this.core.context.logger;
//msg 为待克隆消息 //msg 为待克隆消息
const sendElements: SendMessageElement[] = []; const sendElements: SendMessageElement[] = [];
@@ -372,12 +369,12 @@ export class SendMsg extends OneBotAction<OB11PostSendMsg, ReturnDataType> {
} }
if (sendElements.length === 0) { if (sendElements.length === 0) {
logger.logDebug('需要clone的消息无法解析将会忽略掉', msg); this.core.context.logger.logDebug('需要clone的消息无法解析将会忽略掉', msg);
} }
try { try {
return await this.core.apis.MsgApi.sendMsg(selfPeer, sendElements, true); return await this.core.apis.MsgApi.sendMsg(selfPeer, sendElements, true);
} catch (e: any) { } catch (e: any) {
logger.logError.bind(this.core.context.logger)(e?.stack, '克隆转发消息失败,将忽略本条消息', msg); this.core.context.logger.logError(e?.stack, '克隆转发消息失败,将忽略本条消息', msg);
} }
} }
} }

View File

@@ -159,7 +159,7 @@ export class OneBotGroupApi {
} }
const replyMsg = replyMsgList[0]; const replyMsg = replyMsgList[0];
if (!replyMsg) { if (!replyMsg) {
this.core.context.logger.logError.bind(this.core.context.logger)('解析表情回应消息失败: 未找到回应消息'); this.core.context.logger.logError('解析表情回应消息失败: 未找到回应消息');
return undefined; return undefined;
} }
return new OB11GroupMsgEmojiLikeEvent( return new OB11GroupMsgEmojiLikeEvent(

View File

@@ -130,7 +130,7 @@ export class OneBotMsgApi {
}, },
}; };
} catch (e: any) { } 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; return null;
} }
}, },
@@ -213,7 +213,7 @@ export class OneBotMsgApi {
guildId: '', guildId: '',
}; };
if (!records || !element.replyMsgTime || !element.senderUidStr) { 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; return null;
} }
@@ -231,7 +231,7 @@ export class OneBotMsgApi {
let replyMsg = replyMsgList.find(msg => msg.msgRandom === records.msgRandom); let replyMsg = replyMsgList.find(msg => msg.msgRandom === records.msgRandom);
if (!replyMsg || records.msgRandom !== replyMsg.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: ', '筛选结果,筛选消息失败,将使用Fallback-1 Seq: ',
element.replayMsgSeq, element.replayMsgSeq,
',消息长度:', ',消息长度:',
@@ -242,7 +242,7 @@ export class OneBotMsgApi {
} }
if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) {
this.core.context.logger.logWarn.bind(this.core.context.logger)( this.core.context.logger.logWarn(
'筛选消息失败,将使用Fallback-2 Seq:', '筛选消息失败,将使用Fallback-2 Seq:',
element.replayMsgSeq, element.replayMsgSeq,
',消息长度:', ',消息长度:',
@@ -256,7 +256,7 @@ export class OneBotMsgApi {
// 丢弃该消息段 // 丢弃该消息段
if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) {
this.core.context.logger.logError.bind(this.core.context.logger)( this.core.context.logger.logError(
'最终筛选结果,筛选消息失败,获取不到引用的消息 Seq: ', '最终筛选结果,筛选消息失败,获取不到引用的消息 Seq: ',
element.replayMsgSeq, element.replayMsgSeq,
',消息长度:', ',消息长度:',
@@ -458,7 +458,7 @@ export class OneBotMsgApi {
const sysFaces = faceConfig.sysface; const sysFaces = faceConfig.sysface;
const face: any = sysFaces.find((systemFace) => systemFace.QSid === parsedFaceId.toString()); const face: any = sysFaces.find((systemFace) => systemFace.QSid === parsedFaceId.toString());
if (!face) { if (!face) {
this.core.context.logger.logError.bind(this.core.context.logger)('不支持的ID', id); this.core.context.logger.logError('不支持的ID', id);
return undefined; return undefined;
} }
parsedFaceId = parseInt(parsedFaceId.toString()); parsedFaceId = parseInt(parsedFaceId.toString());
@@ -581,20 +581,20 @@ export class OneBotMsgApi {
// 保留, 直到...找到更好的解决方案 // 保留, 直到...找到更好的解决方案
if (data.id !== undefined) { if (data.id !== undefined) {
if (!['qq', '163', 'kugou', 'kuwo', 'migu'].includes(data.type)) { 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; return undefined;
} }
} else { } else {
if (!['qq', '163', 'kugou', 'kuwo', 'migu', 'custom'].includes(data.type)) { 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; return undefined;
} }
if (!data.url) { if (!data.url) {
this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数url'); this.core.context.logger.logError('自定义音卡缺少参数url');
return undefined; return undefined;
} }
if (!data.image) { if (!data.image) {
this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数image'); this.core.context.logger.logError('自定义音卡缺少参数image');
return undefined; return undefined;
} }
} }
@@ -618,7 +618,7 @@ export class OneBotMsgApi {
type: OB11MessageDataType.json type: OB11MessageDataType.json
}, context); }, context);
} catch (e) { } 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 ) timeout += PredictTime;// 10S Basic Timeout + PredictTime( For File 512kb/s )
} }
} catch (e) { } 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); const returnMsg = await this.core.apis.MsgApi.sendMsg(peer, sendElements, waitComplete, timeout);
if (!returnMsg) throw new Error('发送消息失败'); if (!returnMsg) throw new Error('发送消息失败');
@@ -921,10 +921,10 @@ export class OneBotMsgApi {
deleteAfterSentFiles.forEach(file => { deleteAfterSentFiles.forEach(file => {
try { try {
if (fs.existsSync(file)) { 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) { } 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); }, 60000);
@@ -938,7 +938,7 @@ export class OneBotMsgApi {
) { ) {
const realUri = inputdata.url || inputdata.file || inputdata.path || ''; const realUri = inputdata.url || inputdata.file || inputdata.path || '';
if (realUri.length === 0) { if (realUri.length === 0) {
this.core.context.logger.logError.bind(this.core.context.logger)('文件消息缺少参数', inputdata); this.core.context.logger.logError('文件消息缺少参数', inputdata);
throw Error('文件消息缺少参数'); throw Error('文件消息缺少参数');
} }
const { const {
@@ -949,7 +949,7 @@ export class OneBotMsgApi {
} = (await uri2local(this.core.NapCatTempPath, realUri)); } = (await uri2local(this.core.NapCatTempPath, realUri));
if (!success) { if (!success) {
this.core.context.logger.logError.bind(this.core.context.logger)('文件下载失败', errMsg); this.core.context.logger.logError('文件下载失败', errMsg);
throw Error('文件下载失败' + errMsg); throw Error('文件下载失败' + errMsg);
} }
@@ -959,14 +959,14 @@ export class OneBotMsgApi {
} }
groupChangDecreseType2String(type: number): GroupDecreaseSubType { groupChangDecreseType2String(type: number): GroupDecreaseSubType {
switch (type) { switch (type) {
case 130: case 130:
return 'leave'; return 'leave';
case 131: case 131:
return 'kick'; return 'kick';
case 3: case 3:
return 'kick_me'; return 'kick_me';
default: default:
return 'kick'; return 'kick';
} }
} }

View File

@@ -24,20 +24,19 @@ export class OneBotQuickActionApi {
} }
async handleQuickOperation(eventContext: QuickActionEvent, quickAction: QuickAction) { async handleQuickOperation(eventContext: QuickActionEvent, quickAction: QuickAction) {
const logger = this.core.context.logger;
if (eventContext.post_type === 'message') { if (eventContext.post_type === 'message') {
await this.handleMsg(eventContext as OB11Message, quickAction) 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') { if (eventContext.post_type === 'request') {
const friendRequest = eventContext as OB11FriendRequestEvent; const friendRequest = eventContext as OB11FriendRequestEvent;
const groupRequest = eventContext as OB11GroupRequestEvent; const groupRequest = eventContext as OB11GroupRequestEvent;
if ((friendRequest).request_type === 'friend') { if ((friendRequest).request_type === 'friend') {
await this.handleFriendRequest(friendRequest, quickAction) await this.handleFriendRequest(friendRequest, quickAction)
.catch(logger.logError.bind(logger)); .catch(e => this.core.context.logger.logError(e));
} else if (groupRequest.request_type === 'group') { } else if (groupRequest.request_type === 'group') {
await this.handleGroupRequest(groupRequest, quickAction) 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(), group_id: msg.group_id?.toString(),
user_id: msg.user_id?.toString(), user_id: msg.user_id?.toString(),
}, peerContextMode); }, peerContextMode);
if (reply) { if (reply) {
// let group: Group | undefined; // let group: Group | undefined;
let replyMessage: OB11MessageData[] = []; let replyMessage: OB11MessageData[] = [];
@@ -78,7 +77,7 @@ export class OneBotQuickActionApi {
sendElements, sendElements,
deleteAfterSentFiles, deleteAfterSentFiles,
} = await this.obContext.apis.MsgApi.createSendElements(replyMessage, peer); } = 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, request.flag,
quickAction.approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, quickAction.approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE,
quickAction.reason, 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) { async handleFriendRequest(request: OB11FriendRequestEvent, quickAction: QuickActionFriendRequest) {
if (!isNull(quickAction.approve)) { 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));
} }
} }
} }

View File

@@ -105,7 +105,7 @@ export class NapCatOneBot11Adapter {
selfInfo.nick = user.nick; selfInfo.nick = user.nick;
this.context.logger.setLogSelfInfo(selfInfo); 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); const serviceInfo = await this.creatOneBotLog(ob11Config);
this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`); this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`);
@@ -228,7 +228,7 @@ export class NapCatOneBot11Adapter {
if (event) this.networkManager.emitEvent(event); if (event) this.networkManager.emitEvent(event);
}) })
.catch((e) => .catch((e) =>
this.context.logger.logError.bind(this.context.logger)( this.context.logger.logError(
'constructSysMessage error: ', 'constructSysMessage error: ',
e, e,
'\n Parse Hex:', '\n Parse Hex:',
@@ -260,7 +260,7 @@ export class NapCatOneBot11Adapter {
m.msgId m.msgId
); );
await this.emitMsg(m).catch((e) => 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); const event = new BotOfflineEvent(this.core, kick.tipsTitle, kick.tipsDesc);
this.networkManager this.networkManager
.emitEvent(event) .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)); this.context.session.getMsgService().addKernelMsgListener(proxiedListenerOf(msgListener, this.context.logger));
} }
@@ -404,7 +404,7 @@ export class NapCatOneBot11Adapter {
this.networkManager this.networkManager
.emitEvent(groupAdminNoticeEvent) .emitEvent(groupAdminNoticeEvent)
.catch((e) => .catch((e) =>
this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e) this.context.logger.logError('处理群管理员变动失败', e)
); );
} else { } else {
this.context.logger.logDebug( this.context.logger.logDebug(
@@ -440,7 +440,7 @@ export class NapCatOneBot11Adapter {
// this.networkManager // this.networkManager
// .emitEvent(groupDecreaseEvent) // .emitEvent(groupDecreaseEvent)
// .catch((e) => // .catch((e) =>
// this.context.logger.logError.bind(this.context.logger)('处理群成员退出失败', e) // this.context.logger.logError('处理群成员退出失败', e)
// ); // );
// // notify.status == 1 表示未处理 2表示处理完成 // // notify.status == 1 表示未处理 2表示处理完成
// } else // } else
@@ -465,10 +465,10 @@ export class NapCatOneBot11Adapter {
this.networkManager this.networkManager
.emitEvent(groupRequestEvent) .emitEvent(groupRequestEvent)
.catch((e) => .catch((e) =>
this.context.logger.logError.bind(this.context.logger)('处理加群请求失败', e) this.context.logger.logError('处理加群请求失败', e)
); );
} catch (e) { } catch (e) {
this.context.logger.logError.bind(this.context.logger)( this.context.logger.logError(
'获取加群人QQ号失败 Uid:', '获取加群人QQ号失败 Uid:',
notify.user1.uid, notify.user1.uid,
e e
@@ -490,7 +490,7 @@ export class NapCatOneBot11Adapter {
this.networkManager this.networkManager
.emitEvent(groupInviteEvent) .emitEvent(groupInviteEvent)
.catch((e) => .catch((e) =>
this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) this.context.logger.logError('处理邀请本人加群失败', e)
); );
} else if ( } else if (
notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS &&
@@ -508,7 +508,7 @@ export class NapCatOneBot11Adapter {
this.networkManager this.networkManager
.emitEvent(groupInviteEvent) .emitEvent(groupInviteEvent)
.catch((e) => .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 this.networkManager
.emitEvent(groupAdminNoticeEvent) .emitEvent(groupAdminNoticeEvent)
.catch((e) => .catch((e) =>
this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e) this.context.logger.logError('处理群管理员变动失败', e)
); );
existMember.isChangeRole = false; existMember.isChangeRole = false;
this.context.logger.logDebug.bind(this.context.logger)('群管理员变动处理完毕'); this.context.logger.logDebug('群管理员变动处理完毕');
}); });
} }
}; };

View File

@@ -50,12 +50,12 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter {
try { try {
this.obContext.apis.QuickActionApi this.obContext.apis.QuickActionApi
.handleQuickOperation(event as QuickActionEvent, resJson) .handleQuickOperation(event as QuickActionEvent, resJson)
.catch(this.logger.logError.bind(this.logger)); .catch(e=>this.logger.logError(e));
} catch (e: any) { } catch (e: any) {
this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e);
} }
}).catch((e) => { }).catch((e) => {
this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报失败', e);
}); });
} }

View File

@@ -95,7 +95,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
try { try {
this.connectEvent(this.core); this.connectEvent(this.core);
} catch (e) { } 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', () => { this.connection.once('close', () => {
if (!isClosedByError) { if (!isClosedByError) {
this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接意外关闭`); this.logger.logError(`[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] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`);
if (this.isEnable) { if (this.isEnable) {
this.connection = null; this.connection = null;
setTimeout(() => this.tryConnect(), this.config.reconnectInterval); setTimeout(() => this.tryConnect(), this.config.reconnectInterval);
@@ -114,8 +114,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
}); });
this.connection.on('error', (err) => { this.connection.on('error', (err) => {
isClosedByError = true; isClosedByError = true;
this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接错误`, err); this.logger.logError(`[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] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`);
if (this.isEnable) { if (this.isEnable) {
this.connection = null; this.connection = null;
setTimeout(() => this.tryConnect(), this.config.reconnectInterval); setTimeout(() => this.tryConnect(), this.config.reconnectInterval);
@@ -128,7 +128,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
try { try {
this.checkStateAndReply<any>(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT)); this.checkStateAndReply<any>(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT));
} catch (e) { } 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 : {};// 兼容类型验证 receiveData.params = (receiveData?.params) ? receiveData.params : {};// 兼容类型验证
const action = this.actions.get(receiveData.action); const action = this.actions.get(receiveData.action);
if (!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<any>(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo)); this.checkStateAndReply<any>(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo));
return; return;
} }

View File

@@ -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('error', (err) => this.logger.log('[OneBot] [WebSocket Server] Client Error:', err.message));
wsClient.on('message', (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.on('ping', () => {
wsClient.pong(); wsClient.pong();
@@ -85,7 +85,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter {
try { try {
this.checkStateAndReply<any>(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT), wsClient); this.checkStateAndReply<any>(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT), wsClient);
} catch (e) { } 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() { open() {
if (this.isEnable) { 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; return;
} }
const addressInfo = this.wsServer.address(); const addressInfo = this.wsServer.address();
@@ -116,9 +116,9 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter {
this.isEnable = false; this.isEnable = false;
this.wsServer.close((err) => { this.wsServer.close((err) => {
if (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 { } 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 : {};//兼容类型验证 不然类型校验爆炸 receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 不然类型校验爆炸
const action = this.actions.get(receiveData.action); const action = this.actions.get(receiveData.action);
if (!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<any>(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient); this.checkStateAndReply<any>(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient);
return; return;
} }

View File

@@ -176,7 +176,7 @@ async function handleLogin(
} }
logger.log('核心登录服务连接成功!'); logger.log('核心登录服务连接成功!');
loginService.getLoginList().then((res) => { loginService.getLoginList().then((res) => {
// 遍历 res.LocalLoginInfoList[x].isQuickLogin是否可以 res.LocalLoginInfoList[x].uin 转为string 加入string[] 最后遍历完成调用WebUiDataRuntime.setQQQuickLoginList // 遍历 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.setQQQuickLoginList(res.LocalLoginInfoList.filter((item) => item.isQuickLogin).map((item) => item.uin.toString()));
@@ -276,7 +276,7 @@ export async function NCoreInitShell() {
o3Service.addO3MiscListener(new NodeIO3MiscListener()); o3Service.addO3MiscListener(new NodeIO3MiscListener());
logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion); 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 engine = wrapper.NodeIQQNTWrapperEngine.get();
const loginService = wrapper.NodeIKernelLoginService.get(); const loginService = wrapper.NodeIKernelLoginService.get();
@@ -362,7 +362,7 @@ export class NapCatShell {
async InitNapCat() { async InitNapCat() {
await this.core.initCore(); await this.core.initCore();
new NapCatOneBot11Adapter(this.core, this.context, this.context.pathWrapper).InitOneBot() 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));
} }
} }

View File

@@ -29,10 +29,9 @@ export let webUiPathWrapper: NapCatPathWrapper;
export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapper) { export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapper) {
webUiPathWrapper = pathWrapper; webUiPathWrapper = pathWrapper;
WebUiConfig = new WebUiConfigWrapper(); WebUiConfig = new WebUiConfigWrapper();
const log = logger.log.bind(logger);
const config = await WebUiConfig.GetWebUIConfig(); const config = await WebUiConfig.GetWebUIConfig();
if (config.port == 0) { if (config.port == 0) {
log('[NapCat] [WebUi] Current WebUi is not run.'); logger.log('[NapCat] [WebUi] Current WebUi is not run.');
return; return;
} }
@@ -67,16 +66,16 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp
path = `${config.prefix}/webui`; path = `${config.prefix}/webui`;
// 打印日志地址、token // 打印日志地址、token
log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); logger.log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`);
log(`[NapCat] [WebUi] Login Token is ${config.token}`); logger.log(`[NapCat] [WebUi] Login Token is ${config.token}`);
log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); logger.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] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`);
// 获取公网地址 // 获取公网地址
try { try {
const publishUrl = 'https://ip.011102.xyz/'; const publishUrl = 'https://ip.011102.xyz/';
const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); 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) { } catch (err) {
logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`);
} }