UNPKG

@ccms/api

Version:

MiaoScript api package

148 lines 6.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.command = void 0; var tslib_1 = require("tslib"); var i18n_1 = require("@ccms/i18n"); var container_1 = require("@ccms/container"); var command; (function (command_1) { var Command = /** @class */ (function () { function Command() { } /** * 注册插件命令 * @param plugin 插件 * @param name 命令 * @param exec 执行器 */ Command.prototype.on = function (plugin, name, exec) { var cmd = this.create(plugin, name); if (!cmd) { throw Error("Plugin ".concat(plugin.description.name, " can't create Command ").concat(name, "!")); } console.debug(i18n_1.default.translate("ms.api.command.register", { plugin: plugin.description.name, name: name, cmd: cmd })); if (exec.cmd && typeof exec.cmd === "function") { this.onCommand(plugin, cmd, exec.cmd); } else { throw Error(i18n_1.default.translate("ms.api.command.register.input.error", { exec: exec.cmd })); } if (exec.tab && typeof exec.tab === "function") { this.onTabComplete(plugin, cmd, exec.tab); } }; Command.prototype.tabComplete = function (sender, input, index) { throw new Error("Method not implemented."); }; /** * 取消命令注册 * @param plugin 插件 * @param name 命令 */ Command.prototype.off = function (plugin, name) { console.debug(i18n_1.default.translate("ms.api.command.unregister", { plugin: plugin.description.name, name: name })); this.remove(plugin, name); }; Command.prototype.setExecutor = function (plugin, command, executor) { return function (sender, _, command, args) { try { var time = Date.now(); var result = executor(sender, command, Java.from(args)); var cost = Date.now() - time; if (cost > global.ScriptSlowExecuteTime) { console.i18n("ms.api.command.execute.slow", { player: sender.name, plugin: plugin.description.name, command: command, args: Java.from(args).join(' '), cost: cost }); } return result; } catch (ex) { console.i18n("ms.api.command.execute.error", { player: sender.name, plugin: plugin.description.name, command: command, args: Java.from(args).join(' '), ex: ex }); console.ex(ex); if (sender.name != 'CONSOLE') { console.sender(sender, tslib_1.__spreadArray([i18n_1.default.translate("ms.api.command.execute.error", { player: sender.name, plugin: plugin.description.name, command: command, args: Java.from(args).join(' '), ex: ex })], tslib_1.__read(console.stack(ex)), false)); } return true; } }; }; Command.prototype.setTabCompleter = function (plugin, command, tabCompleter) { var _this = this; return function (sender, _, command, args) { try { var time = Date.now(); var token = args[args.length - 1]; var complete = tabCompleter(sender, command, Java.from(args)) || []; var result = _this.copyPartialMatches(complete, token); var cost = Date.now() - time; if (cost > global.ScriptSlowExecuteTime) { console.i18n("ms.api.command.tab.completer.slow", { player: sender.name, plugin: plugin.description.name, command: command, args: Java.from(args).join(' '), cost: cost }); } return result; } catch (ex) { console.i18n("ms.api.command.tab.completer.error", { player: sender.name, plugin: plugin.description.name, command: command, args: Java.from(args).join(' '), ex: ex }); console.ex(ex); if (sender.name != 'CONSOLE') { console.sender(sender, tslib_1.__spreadArray([ i18n_1.default.translate("ms.api.command.tab.completer.error", { player: sender.name, plugin: plugin.description.name, command: command, args: Java.from(args).join(' '), ex: ex }) ], tslib_1.__read(console.stack(ex)), false)); } return []; } }; }; Command.prototype.copyPartialMatches = function (complete, token, array) { if (array === void 0) { array = []; } if (!token) { return complete; } complete.forEach(function (e) { if (typeof e === "string" && e.toLowerCase().startsWith(token.toLowerCase())) { array.push(e); } }); return array; }; Command = tslib_1.__decorate([ (0, container_1.injectable)() ], Command); return Command; }()); command_1.Command = Command; })(command = exports.command || (exports.command = {})); //# sourceMappingURL=command.js.map