galactic-bot/structure/client/components/commands/developer/Evaluate.js

86 lines
2.5 KiB
JavaScript
Raw Normal View History

const { inspect } = require('util');
const { username } = require('os').userInfo();
2020-08-14 16:13:04 +02:00
// eslint-disable-next-line no-unused-vars
const moment = require('moment');
let _storage = null; //eslint-disable-line
const { Command } = require('../../../../interfaces/');
class Evaluate extends Command {
constructor(client) {
super(client, {
name: 'evaluate',
module: 'developer',
aliases: [
'eval',
'e'
],
usage: '<code>',
restricted: true,
arguments: [
{
name: 'log',
type: 'BOOLEAN',
types: ['FLAG'],
default: true
},
{
name: 'hide',
type: 'BOOLEAN',
types: ['FLAG'],
default: true
}
],
2020-06-04 19:59:09 +02:00
showUsage: true,
2020-07-28 05:00:24 +02:00
keepQuotes: true,
guarded: true
});
}
async execute(message, { params, args }) {
params = params.join(' ');
2020-08-14 16:13:04 +02:00
const { guild, author, member, client } = message; //eslint-disable-line no-unused-vars
try {
let evaled = eval(params); //eslint-disable-line no-eval
if(evaled instanceof Promise) await evaled;
if(typeof evaled !== 'string') evaled = inspect(evaled);
evaled = evaled
.replace(new RegExp(this.client.token, 'gu'), '<redacted>')
.replace(new RegExp(username, 'gu'), '<redacted>');
if(args.log) guild._debugLog(`[${message.author.tag}] Evaluation Success: ${evaled}`);
2020-05-01 16:12:45 +02:00
if (evaled.length > 1850) {
evaled = `${evaled.substring(0, 1850)}...`;
}
await message.respond(
`Evaluation was successful.\`\`\`js\n${args.hide ? '<hidden>' : evaled}\`\`\``,
{ emoji: 'success' }
);
} catch(error) {
2020-05-01 16:12:45 +02:00
let msg = `${error}${error.stack ? `\n${error.stack}` : ''}`;
if(args.log) guild._debugLog(`[${message.author.tag}] Evaluation Fail: ${msg}`);
2020-05-01 16:12:45 +02:00
if(msg.length > 2000) msg = `${msg.substring(0, 1900)}...`;
await message.respond(
`Evaluation failed.\`\`\`js\n${args.hide ? '<hidden>' : msg}\`\`\``,
{ emoji: 'failure' }
);
}
}
}
module.exports = Evaluate;