UNPKG

@sern/handler

Version:

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

46 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.messageHandler = void 0; const event_utils_1 = require("./event-utils"); const enums_1 = require("../core/structures/enums"); const functions_1 = require("../core/functions"); const context_1 = require("../core/structures/context"); /** * Ignores messages from any person / bot except itself * @param prefix */ function isBotOrNoPrefix(msg, prefix) { return msg.author.bot || !hasPrefix(prefix, msg.content); } function hasPrefix(prefix, content) { const prefixInContent = content.slice(0, prefix.length); return prefixInContent.localeCompare(prefix, undefined, { sensitivity: 'accent' }) === 0; } function messageHandler(deps, defaultPrefix) { const { "@sern/emitter": emitter, '@sern/logger': log, '@sern/modules': mg, '@sern/client': client } = deps; if (!defaultPrefix) { log?.debug({ message: 'No prefix found. message handler shutting down' }); return; } client.on('messageCreate', async (message) => { if (isBotOrNoPrefix(message, defaultPrefix)) { return; } const [prefix] = (0, functions_1.fmt)(message.content, defaultPrefix); let module = mg.get(`${prefix}_T`) ?? mg.get(`${prefix}_B`); if (!module) { throw Error('Possibly undefined behavior: could not find a static id to resolve'); } const payload = { module, args: [context_1.Context.wrap(message, defaultPrefix), (0, functions_1.createSDT)(module, deps, undefined)] }; const result = await (0, event_utils_1.callPlugins)(payload); if (!result.ok) { emitter.emit('module.activate', (0, functions_1.resultPayload)('failure', module, result.error ?? enums_1.SernError.PluginFailure)); return; } //@ts-ignore payload.args[1].state = result.value; (0, event_utils_1.executeModule)(emitter, log, payload); }); } exports.messageHandler = messageHandler; //# sourceMappingURL=message.js.map