UNPKG

@sern/handler

Version:

A complete, customizable, typesafe, & reactive framework for discord bots.

119 lines 3.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.pipe = exports.resultPayload = exports.isModal = exports.isAutocomplete = exports.isContextCommand = exports.isCommand = exports.isMessageComponent = exports.createLookupTable = exports.partitionPlugins = exports.fmt = exports.createSDT = void 0; const discord_js_1 = require("discord.js"); const enums_1 = require("./structures/enums"); const node_path_1 = __importDefault(require("node:path")); const createSDT = (module, deps, params) => { return { state: {}, deps, params, type: module.type, module: { name: module.name, description: module.description, locals: module.locals, meta: module.meta } }; }; exports.createSDT = createSDT; /** * Removes the first character(s) _[depending on prefix length]_ of the message * @param msg * @param prefix The prefix to remove * @returns The message without the prefix * @example * message.content = '!ping'; * console.log(fmt(message.content, '!')); * // [ 'ping' ] */ function fmt(msg, prefix) { if (!prefix) throw Error("Unable to parse message without prefix"); return msg.slice(prefix.length).trim().split(/\s+/g); } exports.fmt = fmt; function partitionPlugins(arr = []) { const controlPlugins = []; const initPlugins = []; for (const el of arr) { switch (el.type) { case enums_1.PluginType.Control: controlPlugins.push(el); break; case enums_1.PluginType.Init: initPlugins.push(el); break; } } return [controlPlugins, initPlugins]; } exports.partitionPlugins = partitionPlugins; const createLookupTable = (options) => { const table = new Map(); _createLookupTable(table, options, "<parent>"); return table; }; exports.createLookupTable = createLookupTable; const _createLookupTable = (table, options, parent) => { for (const opt of options) { const name = node_path_1.default.posix.join(parent, opt.name); switch (opt.type) { case discord_js_1.ApplicationCommandOptionType.Subcommand: { _createLookupTable(table, opt.options ?? [], name); } break; case discord_js_1.ApplicationCommandOptionType.SubcommandGroup: { _createLookupTable(table, opt.options ?? [], name); } break; default: { if (Reflect.get(opt, 'autocomplete') === true) { table.set(name, opt); } } break; } } }; function isMessageComponent(i) { return i.type === discord_js_1.InteractionType.MessageComponent; } exports.isMessageComponent = isMessageComponent; function isCommand(i) { return i.type === discord_js_1.InteractionType.ApplicationCommand; } exports.isCommand = isCommand; function isContextCommand(i) { return i.isContextMenuCommand(); } exports.isContextCommand = isContextCommand; function isAutocomplete(i) { return i.type === discord_js_1.InteractionType.ApplicationCommandAutocomplete; } exports.isAutocomplete = isAutocomplete; function isModal(i) { return i.type === discord_js_1.InteractionType.ModalSubmit; } exports.isModal = isModal; function resultPayload(type, module, reason) { return { type, module, reason }; } exports.resultPayload = resultPayload; function pipe(arg, firstFn, ...fns) { let result = firstFn(arg); for (let fn of fns) { result = fn(result); } return result; } exports.pipe = pipe; //# sourceMappingURL=functions.js.map