Spot/model/command/eval.js
2021-05-02 20:00:36 -04:00

55 lines
1.6 KiB
JavaScript

const Discord = require('discord.js');
const Logger = require('@lilywonhalf/pretty-logger');
const Config = require('../../config.json');
const CommandCategory = require('../command-category');
const CommandPermission = require('../command-permission');
// Including every model here so that it's ready to be used by the command
const Guild = require('../guild');
const JAVASCRIPT_LOGO_URL = 'https://i.discord.fr/IEV8.png';
class Eval
{
static instance = null;
constructor() {
if (Eval.instance !== null) {
return Eval.instance;
}
this.aliases = [];
this.category = CommandCategory.BOT_MANAGEMENT;
this.isAllowedForContext = CommandPermission.isMommy;
}
/**
* @param {Message} message
*/
async process(message) {
const code = message.content
.substr(Config.prefix.length + 'eval'.length)
.trim()
.replace(/(`{3})js\n(.+)\n\1/iu, '$2')
.trim();
await message.react('✔');
Logger.notice('Eval: ' + code);
let output = null;
try {
output = eval(`${code}`); // Spoopy! 🎃 🦇 👻 ☠ 🕷
} catch (exception) {
output = `**${exception.name}: ${exception.message}**\n${exception.stack}`;
}
const embed = new Discord.MessageEmbed()
.setAuthor('Eval', JAVASCRIPT_LOGO_URL)
.setColor(0x00FF00)
.setDescription(output);
message.channel.send(embed).catch(error => Logger.warning(error.toString()));
}
}
module.exports = new Eval();