UNPKG

@oebot/core

Version:

能跑就行的 QQ 机器人框架,基于 oicq v2,改自KiviBot(R.I.P.)

121 lines (120 loc) 4.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.redirectLog = exports.LogTypeMap = exports.PluginLogger = exports.OELogger = exports.Devices = void 0; const dayjs_1 = __importDefault(require("dayjs")); const log4js_1 = __importDefault(require("log4js")); const node_path_1 = __importDefault(require("node:path")); const path_1 = require("./path"); const utils_1 = require("../utils"); /** 1:安卓手机 2:aPad 3:安卓手表 4:MacOS 5:iPad */ exports.Devices = [ '', 'Android Phone', 'Android Pad', 'Android Watch', 'MacOS', 'iPad' ]; exports.OELogger = log4js_1.default.getLogger('oe'); exports.PluginLogger = log4js_1.default.getLogger('plugin'); exports.LogTypeMap = { all: 'gray', mark: 'gray', trace: 'white', debug: 'cyan', info: 'green', warn: 'yellow', error: 'red', fatal: 'magenta', off: 'magenta' }; // 添加自定义 log4js Layout 布局:oe log4js_1.default.addLayout('oe', (config) => { const { qq, platform, target = 'oe' } = config; // oicq 日志输出到日志文件(可选关闭) logs/OEBot_YYYY-MM-DD_HH-mm-ss.log if (target === 'oicq') { return (info) => { const now = (0, dayjs_1.default)(info.startTime).format(`YYYY-MM-DD HH:mm:ss:SSS`); return `[${now}] [${info.level.levelStr}] [${qq}-${exports.Devices[platform]}] ${info.data}`; }; } // OEBot 框架日志输出到控制台(包括插件,可选关闭) return (info) => { const level = info.level.levelStr.toLowerCase(); const now = (0, dayjs_1.default)(info.startTime).format(`HH:mm:ss`); const color = exports.LogTypeMap[level]; const type = target === 'oe' ? qq : 'Plugin'; const head = utils_1.colors[color](`[${now}-${type}]`); return head + utils_1.colors.gray(' - ') + info.data; }; }); /** 重定向 oicq 日志输出到日志文件 */ function redirectLog(oeLogLevel = 'info', oicq_config, account) { const { platform = 5, log_level: oicqLogLevel } = oicq_config; // 定义输出文件名和路径 const now = (0, dayjs_1.default)().format('YYYY-MM-DD_HH-mm-ss'); const filename = `OEBot_${now}_${account}_${exports.Devices[platform]}`; const logFilePath = node_path_1.default.join(path_1.LogDir, `${filename}.log`); const errorFilePath = node_path_1.default.join(path_1.LogDir, `${filename}_error.log`); // 使用自定义的 OE Layout const layout = { platform, type: 'oe', qq: account }; // 配置 log4js log4js_1.default.configure({ appenders: { oe: { layout, type: 'stdout' }, plugin: { type: 'stdout', layout: { ...layout, target: 'plugin' } }, log_file: { type: 'file', filename: logFilePath, layout: { ...layout, target: 'oicq' } }, _error_file: { type: 'file', filename: errorFilePath, layout: { ...layout, target: 'oicq' } }, error_file: { type: 'logLevelFilter', appender: '_error_file', level: 'warn' } }, categories: { default: { appenders: ['log_file', 'error_file'], level: oicqLogLevel }, oe: { appenders: ['oe'], level: oeLogLevel }, plugin: { appenders: ['plugin'], level: oeLogLevel } } }); } exports.redirectLog = redirectLog;