@oebot/core
Version:
能跑就行的 QQ 机器人框架,基于 oicq v2,改自KiviBot(R.I.P.)
133 lines (132 loc) • 4.54 kB
JavaScript
;
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;