UNPKG

meocord

Version:

MeoCord is a lightweight and modular framework for building scalable Discord bots using TypeScript and Discord.js. It simplifies bot development with an extensible architecture, TypeScript-first approach, and powerful CLI tools.

17 lines 24.5 kB
function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d["return"]&&(k=d["return"](),Object(k)!==k))return}finally{if(m)throw h}}return l}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _createForOfIteratorHelper(b,c){var d="undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(!d){if(Array.isArray(b)||(d=_unsupportedIterableToArray(b))||c&&b&&"number"==typeof b.length){d&&(b=d);var e=0,f=function F(){};return{s:f,n:function n(){return e>=b.length?{done:!0}:{done:!1,value:b[e++]}},e:function e(a){throw a},f:f}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var g,h=!0,i=!1;return{s:function s(){d=d.call(b)},n:function n(){var a=d.next();return h=a.done,a},e:function e(a){i=!0,g=a},f:function f(){try{h||null==d["return"]||d["return"]()}finally{if(i)throw g}}}}function _unsupportedIterableToArray(b,c){if(b){if("string"==typeof b)return _arrayLikeToArray(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(b,c):void 0}}function _arrayLikeToArray(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function define(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function wrap(b,d,e,f){var g=d&&d.prototype instanceof Generator?d:Generator,i=Object.create(g.prototype),a=new Context(f||[]);return h(i,"_invoke",{value:makeInvokeMethod(b,e,a)}),i}function tryCatch(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}function defineIteratorMethods(a){["next","throw","return"].forEach(function(b){define(a,b,function(a){return this._invoke(b,a)})})}function AsyncIterator(b,d){function invoke(e,f,g,i){var a=tryCatch(b[e],b,f);if("throw"!==a.type){var c=a.arg,k=c.value;return k&&"object"==_typeof(k)&&j.call(k,"__await")?d.resolve(k.__await).then(function(a){invoke("next",a,g,i)},function(a){invoke("throw",a,g,i)}):d.resolve(k).then(function(a){c.value=a,g(c)},function(a){return invoke("throw",a,g,i)})}i(a.arg)}var a;h(this,"_invoke",{value:function value(b,c){function callInvokeWithMethodAndArg(){return new d(function(a,d){invoke(b,c,a,d)})}return a=a?a.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(a,d,e){var f="suspendedStart";return function(g,h){if(f==="executing")throw Error("Generator is already running");if("completed"===f){if("throw"===g)throw h;return{value:b,done:!0}}for(e.method=g,e.arg=h;;){var i=e.delegate;if(i){var j=maybeInvokeDelegate(i,e);if(j){if(j===m)continue;return j}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===f)throw f="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);f="executing";var k=tryCatch(a,d,e);if("normal"===k.type){if(f=e.done?"completed":"suspendedYield",k.arg===m)continue;return{value:k.arg,done:e.done}}"throw"===k.type&&(f="completed",e.method="throw",e.arg=k.arg)}}}function maybeInvokeDelegate(c,d){var e=d.method,f=c.iterator[e];if(f===b)return d.delegate=null,"throw"===e&&c.iterator["return"]&&(d.method="return",d.arg=b,maybeInvokeDelegate(c,d),"throw"===d.method)||"return"!==e&&(d.method="throw",d.arg=new TypeError("The iterator does not provide a '"+e+"' method")),m;var g=tryCatch(f,c.iterator,d.arg);if("throw"===g.type)return d.method="throw",d.arg=g.arg,d.delegate=null,m;var h=g.arg;return h?h.done?(d[c.resultName]=h.value,d.next=c.nextLoc,"return"!==d.method&&(d.method="next",d.arg=b),d.delegate=null,m):h:(d.method="throw",d.arg=new TypeError("iterator result is not an object"),d.delegate=null,m)}function pushTryEntry(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function resetTryEntry(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function Context(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(pushTryEntry,this),this.reset(!0)}function values(a){if(a||""===a){var c=a[l];if(c)return c.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var d=-1,e=function next(){for(;++d<a.length;)if(j.call(a,d))return next.value=a[d],next.done=!1,next;return next.value=b,next.done=!0,next};return e.next=e}}throw new TypeError(_typeof(a)+" is not iterable")}_regeneratorRuntime=function _regeneratorRuntime(){return f};var b,f={},e=Object.prototype,j=e.hasOwnProperty,h=Object.defineProperty||function(a,b,c){a[b]=c.value},k="function"==typeof Symbol?Symbol:{},l=k.iterator||"@@iterator",a=k.asyncIterator||"@@asyncIterator",c=k.toStringTag||"@@toStringTag";try{define({},"")}catch(a){define=function define(a,b,c){return a[b]=c}}f.wrap=wrap;var m={},i={};define(i,l,function(){return this});var n=Object.getPrototypeOf,d=n&&n(n(values([])));d&&d!==e&&j.call(d,l)&&(i=d);var o=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(i);return GeneratorFunction.prototype=GeneratorFunctionPrototype,h(o,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),h(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,c,"GeneratorFunction"),f.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===GeneratorFunction||"GeneratorFunction"===(b.displayName||b.name))},f.mark=function(a){return Object.setPrototypeOf?Object.setPrototypeOf(a,GeneratorFunctionPrototype):(a.__proto__=GeneratorFunctionPrototype,define(a,c,"GeneratorFunction")),a.prototype=Object.create(o),a},f.awrap=function(a){return{__await:a}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,a,function(){return this}),f.AsyncIterator=AsyncIterator,f.async=function(b,c,d,e,g){void 0===g&&(g=Promise);var h=new AsyncIterator(wrap(b,c,d,e),g);return f.isGeneratorFunction(c)?h:h.next().then(function(a){return a.done?a.value:h.next()})},defineIteratorMethods(o),define(o,c,"Generator"),define(o,l,function(){return this}),define(o,"toString",function(){return"[object Generator]"}),f.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function next(){for(;c.length;){var a=c.pop();if(a in b)return next.value=a,next.done=!1,next}return next.done=!0,next}},f.values=values,Context.prototype={constructor:Context,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=b,this.done=!1,this.delegate=null,this.method="next",this.arg=b,this.tryEntries.forEach(resetTryEntry),!a)for(var c in this)"t"===c.charAt(0)&&j.call(this,c)&&!isNaN(+c.slice(1))&&(this[c]=b)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(d){function handle(a,c){return h.type="throw",h.arg=d,e.next=a,c&&(e.method="next",e.arg=b),!!c}if(this.done)throw d;for(var e=this,f=this.tryEntries.length-1;0<=f;--f){var g=this.tryEntries[f],h=g.completion;if("root"===g.tryLoc)return handle("end");if(g.tryLoc<=this.prev){var k=j.call(g,"catchLoc"),l=j.call(g,"finallyLoc");if(k&&l){if(this.prev<g.catchLoc)return handle(g.catchLoc,!0);if(this.prev<g.finallyLoc)return handle(g.finallyLoc)}else if(!k){if(!l)throw Error("try statement without catch or finally");if(this.prev<g.finallyLoc)return handle(g.finallyLoc)}else if(this.prev<g.catchLoc)return handle(g.catchLoc,!0)}}},abrupt:function abrupt(b,c){for(var d,e=this.tryEntries.length-1;0<=e;--e)if(d=this.tryEntries[e],d.tryLoc<=this.prev&&j.call(d,"finallyLoc")&&this.prev<d.finallyLoc){var f=d;break}f&&("break"===b||"continue"===b)&&f.tryLoc<=c&&c<=f.finallyLoc&&(f=null);var g=f?f.completion:{};return g.type=b,g.arg=c,f?(this.method="next",this.next=f.finallyLoc,m):this.complete(g)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),m},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),resetTryEntry(b),m},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var f=d.arg;resetTryEntry(b)}return f}throw Error("illegal catch attempt")},delegateYield:function delegateYield(a,c,d){return this.delegate={iterator:values(a),resultName:c,nextLoc:d},"next"===this.method&&(this.arg=b),m}},f}function asyncGeneratorStep(b,d,f,e,g,h,a){try{var c=b[h](a),i=c.value}catch(a){return void f(a)}c.done?d(i):Promise.resolve(i).then(e,g)}function _asyncToGenerator(b){return function(){var c=this,d=arguments;return new Promise(function(e,f){function _next(a){asyncGeneratorStep(g,e,f,_next,_throw,"next",a)}function _throw(a){asyncGeneratorStep(g,e,f,_next,_throw,"throw",a)}var g=b.apply(c,d);_next(void 0)})}}function _classCallCheck(b,a){if(!(b instanceof a))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!=_typeof(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/** * MeoCord Framework * Copyright (C) 2025 Ukasyah Rahmatullah Zada * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */import{MessageFlagsBitField,SlashCommandBuilder}from"discord.js";import{Logger}from"../common/index.js";import{getCommandMap,getMessageHandlers,getReactionHandlers,mainContainer}from"../decorator/index.js";import{sample}from"lodash-es";import{EmbedUtil}from"../util/index.js";import wait from"../util/wait.util.js";import{CommandType}from"../enum/index.js";import{ReactionHandlerAction}from"../enum/controller.enum.js";export var MeoCordApp=/*#__PURE__*/function(){function MeoCordApp(a,b,c,d){var e=this;_classCallCheck(this,MeoCordApp),_defineProperty(this,"logger",new Logger(MeoCordApp.name)),_defineProperty(this,"isShuttingDown",!1),_defineProperty(this,"controllerInstancesCache",new Map),this.controllers=a,this.discordClient=b,this.discordToken=c,this.activities=d,this.bot=this.discordClient,process.on("SIGINT",function(){return e.gracefulShutdown()}),process.on("SIGTERM",function(){return e.gracefulShutdown()})}return _createClass(MeoCordApp,[{key:"start",value:function(){function start(){return a.apply(this,arguments)}var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(){var a=this;return _regeneratorRuntime().wrap(function _callee6$(b){for(;;)switch(b.prev=b.next){case 0:return b.prev=0,this.logger.log("Starting bot..."),this.bot.on("ready",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){return _regeneratorRuntime().wrap(function _callee$(b){for(;1;)switch(b.prev=b.next){case 0:return setInterval(function(){var b;null===(b=a.bot.user)||void 0===b||b.setActivity(sample(a.activities))},1e4),b.next=3,a.registerCommands();case 3:case"end":return b.stop()}},_callee)}))),this.bot.on("interactionCreate",/*#__PURE__*/function(){var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(b){return _regeneratorRuntime().wrap(function _callee2$(c){for(;1;)switch(c.prev=c.next){case 0:return c.next=2,a.handleInteraction(b);case 2:case"end":return c.stop()}},_callee2)}));return function(a){return b.apply(this,arguments)}}()),this.bot.on("messageCreate",/*#__PURE__*/function(){var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(b){return _regeneratorRuntime().wrap(function _callee3$(c){for(;1;)switch(c.prev=c.next){case 0:return c.next=2,a.handleMessage(b);case 2:case"end":return c.stop()}},_callee3)}));return function(a){return b.apply(this,arguments)}}()),this.bot.on("messageReactionAdd",/*#__PURE__*/function(){var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(b,c){return _regeneratorRuntime().wrap(function _callee4$(d){for(;1;)switch(d.prev=d.next){case 0:return d.next=2,a.handleReaction(b,{user:c,action:ReactionHandlerAction.ADD});case 2:case"end":return d.stop()}},_callee4)}));return function(a,c){return b.apply(this,arguments)}}()),this.bot.on("messageReactionRemove",/*#__PURE__*/function(){var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(b,c){return _regeneratorRuntime().wrap(function _callee5$(d){for(;1;)switch(d.prev=d.next){case 0:return d.next=2,a.handleReaction(b,{user:c,action:ReactionHandlerAction.REMOVE});case 2:case"end":return d.stop()}},_callee5)}));return function(a,c){return b.apply(this,arguments)}}()),b.next=9,this.bot.login(this.discordToken);case 9:this.logger.log("Bot is online!"),b.next=15;break;case 12:b.prev=12,b.t0=b["catch"](0),this.logger.error("Error during bot startup:",b.t0);case 15:case"end":return b.stop()}},_callee6,this,[[0,12]])}));return start}()},{key:"registerCommands",value:function(){function registerCommands(){return a.apply(this,arguments)}var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(){var a,b,c,d,e,f,g,h,i,j,k,l;return _regeneratorRuntime().wrap(function _callee7$(m){for(;1;)switch(m.prev=m.next){case 0:a=[],b=_createForOfIteratorHelper(this.controllers),m.prev=2,b.s();case 4:if((c=b.n()).done){m.next=19;break}d=c.value,e=getCommandMap(d),m.t0=_regeneratorRuntime().keys(e);case 8:if((m.t1=m.t0()).done){m.next=17;break}if(f=m.t1.value,g=e[f],Array.isArray(g)){m.next=13;break}return m.abrupt("continue",8);case 13:h=_createForOfIteratorHelper(g);try{for(h.s();!(i=h.n()).done;)j=i.value,k=j.builder,l=j.type,l in CommandType&&k&&a.push(k)}catch(a){h.e(a)}finally{h.f()}m.next=8;break;case 17:m.next=4;break;case 19:m.next=24;break;case 21:m.prev=21,m.t2=m["catch"](2),b.e(m.t2);case 24:return m.prev=24,b.f(),m.finish(24);case 27:if(m.prev=27,!this.bot.application){m.next=32;break}return m.next=31,this.bot.application.commands.set(a);case 31:this.logger.log("Registered ".concat(a.length," bot commands:"),a.map(function(a){if(a instanceof SlashCommandBuilder&&a.options.length){var b;return{name:a.name,subCommands:null===(b=a.toJSON().options)||void 0===b?void 0:b.map(function(a){return a.name})}}return{name:a.name}}));case 32:m.next=37;break;case 34:m.prev=34,m.t3=m["catch"](27),this.logger.error("Error during command registration:",m.t3);case 37:case"end":return m.stop()}},_callee7,this,[[2,21,24,27],[27,34]])}));return registerCommands}()},{key:"handleInteraction",value:function(){function handleInteraction(b){return a.apply(this,arguments)}var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(a){var b,c,d,e,f,g=this;return _regeneratorRuntime().wrap(function _callee8$(h){for(;1;)switch(h.prev=h.next){case 0:b=_createForOfIteratorHelper(this.controllers),h.prev=1,d=/*#__PURE__*/_regeneratorRuntime().mark(function _loop(){var b,d,e,f,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function _loop$(o){for(;1;)switch(o.prev=o.next){case 0:if(b=c.value,d=g.controllerInstancesCache.get(b),d||(d=mainContainer.get(b.constructor),g.controllerInstancesCache.set(b,d)),e=getCommandMap(d),e){o.next=6;break}return o.abrupt("return",0);case 6:if(f=void 0,h=void 0,a.isChatInputCommand()||a.isContextMenuCommand()?(h=a.commandName,f=e[h]):(a.isButton()||a.isStringSelectMenu()||a.isModalSubmit())&&(h=a.customId,i=Object.entries(e).find(function(b){var c=_slicedToArray(b,2),d=c[0],e=c[1];return!!Array.isArray(e)&&e.some(function(b){if(!b.regex||!h)return!1;var c=b.regex.exec(h);return null!==c&&void 0!==c&&c.groups?(a.dynamicParams=c.groups,!0):h===d})}),i&&(f=i[1])),!(f&&0<f.length)){o.next=34;break}if(j=f[0],k=j.methodName,l=j.type,o.prev=12,!(l===CommandType.SLASH&&a.isChatInputCommand()||l===CommandType.BUTTON&&a.isButton()||l===CommandType.SELECT_MENU&&a.isStringSelectMenu()||l===CommandType.CONTEXT_MENU&&a.isUserContextMenuCommand()||l===CommandType.CONTEXT_MENU&&a.isMessageContextMenuCommand()||l===CommandType.MODAL_SUBMIT&&a.isModalSubmit())){o.next=22;break}return g.logger.log("[INTERACTION]","[".concat(CommandType[l],"]"),"[".concat(k,"]")),m={},a.isChatInputCommand()&&a.options?m=a.options.data.reduce(function(a,b){return a[b.name]=b.value,a},{}):(a.isButton()||a.isStringSelectMenu())&&(m=a.dynamicParams||{}),o.next=19,d[k](a,m);case 19:return o.abrupt("return",{v:void 0});case 22:g.logger.debug(l,k,CommandType.BUTTON,a.isButton()),g.logger.warn("Interaction type mismatch for command \"".concat(h,"\". Interaction type: ").concat(a.type,"."));case 24:o.next=33;break;case 26:if(o.prev=26,o.t0=o["catch"](12),g.logger.error("Error executing command \"".concat(h,"\":"),o.t0),!a.isRepliable()){o.next=33;break}return n=EmbedUtil.createErrorEmbed("An error occurred while executing the command."),o.next=33,a.reply({embeds:[n],flags:MessageFlagsBitField.Flags.Ephemeral});case 33:return o.abrupt("return",{v:void 0});case 34:case"end":return o.stop()}},_loop,null,[[12,26]])}),b.s();case 4:if((c=b.n()).done){h.next=13;break}return h.delegateYield(d(),"t0",6);case 6:if(e=h.t0,0!==e){h.next=9;break}return h.abrupt("continue",11);case 9:if(!e){h.next=11;break}return h.abrupt("return",e.v);case 11:h.next=4;break;case 13:h.next=18;break;case 15:h.prev=15,h.t1=h["catch"](1),b.e(h.t1);case 18:return h.prev=18,b.f(),h.finish(18);case 21:if(!a.isRepliable()){h.next=25;break}return f=EmbedUtil.createErrorEmbed("Command not found!"),h.next=25,a.reply({embeds:[f],flags:MessageFlagsBitField.Flags.Ephemeral});case 25:case"end":return h.stop()}},_callee8,this,[[1,15,18,21]])}));return handleInteraction}()},{key:"handleMessage",value:function(){function handleMessage(b){return a.apply(this,arguments)}var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;return _regeneratorRuntime().wrap(function _callee9$(p){for(;1;)switch(p.prev=p.next){case 0:if(!a.author.bot&&null!==(b=a.content)&&void 0!==b&&b.trim()){p.next=2;break}return p.abrupt("return");case 2:c=a.content.trim(),d=this.controllers.filter(function(a){var b=getMessageHandlers(a);return b.some(function(a){return!a.keyword||a.keyword===c})}),e=_createForOfIteratorHelper(d),p.prev=5,e.s();case 7:if((f=e.n()).done){p.next=40;break}g=f.value,h=this.controllerInstancesCache.get(g.constructor),h||(i=Reflect.getMetadata("inversify:container",g.constructor),h=i.get(g.constructor,{autobind:!0}),this.controllerInstancesCache.set(g.constructor,h)),j=getMessageHandlers(g),j=j.sort(function(c,a){return c.keyword&&!a.keyword?-1:!c.keyword&&a.keyword?1:0}),k=_createForOfIteratorHelper(j),p.prev=14,k.s();case 16:if((l=k.n()).done){p.next=30;break}if(m=l.value,n=m.keyword,o=m.method,n&&n!==c){p.next=28;break}return p.prev=20,p.next=23,h[o](a);case 23:p.next=28;break;case 25:p.prev=25,p.t0=p["catch"](20),this.logger.error("Error handling message \"".concat(c,"\" for method \"").concat(o,"\":"),p.t0);case 28:p.next=16;break;case 30:p.next=35;break;case 32:p.prev=32,p.t1=p["catch"](14),k.e(p.t1);case 35:return p.prev=35,k.f(),p.finish(35);case 38:p.next=7;break;case 40:p.next=45;break;case 42:p.prev=42,p.t2=p["catch"](5),e.e(p.t2);case 45:return p.prev=45,e.f(),p.finish(45);case 48:case"end":return p.stop()}},_callee9,this,[[5,42,45,48],[14,32,35,38],[20,25]])}));return handleMessage}()},{key:"handleReaction",value:function(){function handleReaction(b,c){return a.apply(this,arguments)}var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;return _regeneratorRuntime().wrap(function _callee10$(q){for(;1;)switch(q.prev=q.next){case 0:return c=b.user,d=b.action,q.next=3,a.message.fetch();case 3:e=this.controllers.filter(function(b){var c=getReactionHandlers(b);return c.some(function(b){return!b.emoji||b.emoji===a.emoji.name})}),f=_createForOfIteratorHelper(e),q.prev=5,f.s();case 7:if((g=f.n()).done){q.next=40;break}h=g.value,i=this.controllerInstancesCache.get(h.constructor),i||(j=Reflect.getMetadata("inversify:container",h.constructor),i=j.get(h.constructor,{autobind:!0}),this.controllerInstancesCache.set(h.constructor,i)),k=getReactionHandlers(h),k=k.sort(function(c,a){return c.emoji&&!a.emoji?-1:!c.emoji&&a.emoji?1:0}),l=_createForOfIteratorHelper(k),q.prev=14,l.s();case 16:if((m=l.n()).done){q.next=30;break}if(n=m.value,o=n.emoji,p=n.method,o&&o!==a.emoji.name){q.next=28;break}return q.prev=20,q.next=23,i[p](a,{user:c,action:d});case 23:q.next=28;break;case 25:q.prev=25,q.t0=q["catch"](20),this.logger.error("Error handling reaction \"".concat(a.emoji.name,"\" for method \"").concat(p,"\":"),q.t0);case 28:q.next=16;break;case 30:q.next=35;break;case 32:q.prev=32,q.t1=q["catch"](14),l.e(q.t1);case 35:return q.prev=35,l.f(),q.finish(35);case 38:q.next=7;break;case 40:q.next=45;break;case 42:q.prev=42,q.t2=q["catch"](5),f.e(q.t2);case 45:return q.prev=45,f.f(),q.finish(45);case 48:case"end":return q.stop()}},_callee10,this,[[5,42,45,48],[14,32,35,38],[20,25]])}));return handleReaction}()},{key:"gracefulShutdown",value:function(){function gracefulShutdown(){return a.apply(this,arguments)}var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11(){return _regeneratorRuntime().wrap(function _callee11$(a){for(;1;)switch(a.prev=a.next){case 0:if(!this.bot||this.isShuttingDown){a.next=19;break}return a.prev=1,this.isShuttingDown=!0,this.logger.log("Shutting down bot..."),this.bot.removeAllListeners(),a.next=7,this.bot.destroy();case 7:return this.logger.log("Bot has shut down"),a.next=10,wait(100);case 10:process.exit(0),a.next=19;break;case 13:return a.prev=13,a.t0=a["catch"](1),this.logger.error("Error during shutdown:",a.t0),a.next=18,wait(100);case 18:process.exit(0);case 19:case"end":return a.stop()}},_callee11,this,[[1,13]])}));return gracefulShutdown}()}])}();