UNPKG

@oebot/core

Version:

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

133 lines (132 loc) 4.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleOECommand = void 0; const minimist_1 = __importDefault(require("minimist")); const config_1 = require("./config"); const plugin_1 = require("./plugin"); const status_1 = require("./status"); const src_1 = require("../../index"); const utils_1 = require("../../utils"); const start_1 = require("../start"); const HelpMenu = ` 〓 OEBot 帮助 〓 /plugin 插件操作 简化:/p /status 查看状态 简化:/s /config 框架配置 简化:/c /update 检查更新 简化:/u /about 关于框架 简化:/a /exit 退出框架 简化:/e `.trim(); const AboutText = ` 〓 关于 OEBot 〓 OEBot 是一个能跑就行的 QQ 机器人框架,基于 Node.js 和 oicq v2 构建。 使用文档: https://docs.d3ft.cn.eu.org/oebot/ 开源地址: 还没放呢 `.trim(); /** 解析框架命令,进行框架操作,仅框架主管理有权限 */ async function handleOECommand(event, bot, oeConf) { const msg = event.toString().trim(); if (!/^\s*\/[a-z0-9]+/i.test(msg)) { return; } // eslint-disable-next-line @typescript-eslint/no-unused-vars const { _: params, '--': __, ...options } = (0, minimist_1.default)(msg.split(/\s+/)); const cmd = params.shift()?.replace(/^\s*\//, '') ?? ''; // 是否是管理员 const isAdmin = oeConf.admins.includes(event.sender.user_id); // 是否是主管理员 const isMainAdmin = oeConf.admins[0] === event.sender.user_id; // 过滤非管理员消息 if (!isAdmin) { return; } switch (cmd) { case 'help': case 'h': { return event.reply(HelpMenu); break; } case 'about': case 'a': { return event.reply(AboutText); break; } case 'status': case 's': { try { const status = await (0, status_1.fetchStatus)(bot); return event.reply(status); } catch (e) { src_1.OELogger.error((0, utils_1.stringifyError)(e)); return event.reply('〓 设备状态获取失败 〓\n' + (0, utils_1.stringifyError)(e)); } break; } } // 过滤非主管理员命令 if (!isMainAdmin) { return; } switch (cmd) { case 'exit': case 'e': { await event.reply('〓 OEBot 进程已停止 〓'); utils_1.notice.success('框架进程已由管理员通过 /exit 消息指令退出'); process.exit(0); break; } case 'plugin': case 'p': { return (0, plugin_1.handlePluginCommand)(bot, params, event.reply.bind(event)); break; } case 'config': case 'c': { return (0, config_1.handleConfigCommand)(bot, params, event.reply.bind(event)); break; } case 'update': case 'u': { await event.reply('〓 正在检查更新... 〓'); try { const upInfo = await (0, utils_1.update)(); if (upInfo) { const info = Object.entries(upInfo) .map(([k, v]) => `${k.replace('oebot-plugin-', 'plugin: ')} => ${v.replace('^', '')}`) .join('\n'); const msg = info ? `〓 更新成功 〓\n${info}\ntip: 需要重启框架才能生效` : '〓 已是最新版本 〓'; await event.reply(msg); } else { await event.reply('〓 更新失败,详情查看日志 〓'); } } catch (e) { src_1.OELogger.error((0, utils_1.stringifyError)(e)); await event.reply(`〓 更新失败 〓\n${(0, utils_1.stringifyError)(e)}`); } process.title = `OEBot ${start_1.pkg.version} ${oeConf.account}`; break; } } } exports.handleOECommand = handleOECommand;