80 lines
2 KiB
JavaScript
Executable file
80 lines
2 KiB
JavaScript
Executable file
const Command = require('../../src/structures/Command');
|
|
const { table } = require('quick.db');
|
|
const Servers = new table('servers');
|
|
const Users = new table('users');
|
|
const Bot = new table('bot');
|
|
|
|
const clean = (text) => {
|
|
if (typeof text == 'string')
|
|
return text.replace(/`/g, '`' + String.fromCharCode(8203)).replace(/@/g, '@' + String.fromCharCode(8203));
|
|
else return text;
|
|
};
|
|
|
|
module.exports = class Eval extends Command {
|
|
constructor() {
|
|
super({
|
|
name: 'eval',
|
|
description: 'Run JavaScript code directly from the process.',
|
|
aliases: [ 'ev', 'e' ],
|
|
module: 'Developers',
|
|
cooldown: 0,
|
|
guildOnly: false,
|
|
developerOnly: true
|
|
});
|
|
}
|
|
|
|
async command(ctx) {
|
|
if (!ctx.args.length) return;
|
|
|
|
const client = ctx.client;
|
|
|
|
let code = ctx.args.join(' ');
|
|
let silent = false;
|
|
|
|
if (code.endsWith('-s')) (code = code.split('-s')[0]), (silent = true);
|
|
if (code.endsWith('--silent')) (code = code.split('--silent')[0]), (silent = true);
|
|
|
|
try {
|
|
let evaled = await eval(code);
|
|
|
|
if (typeof evaled != 'string')
|
|
evaled = require('util').inspect(evaled, false, await ctx.db.backend.get('eval'));
|
|
|
|
evaled.replace(new RegExp(client.token.replace(/\./g, '\\.', 'g')), 'uwu');
|
|
|
|
if (!silent) {
|
|
ctx
|
|
.send(`\`\`\`js\n${clean(evaled)}\n\`\`\``)
|
|
.then(async (m) => {
|
|
await m.react('📥');
|
|
await m.react('🗑');
|
|
})
|
|
.catch((err) => {
|
|
ctx
|
|
.send(`\`Content is over 2,000 characters: react to upload to Hastebin\``)
|
|
.then(async (m) => {
|
|
client.lastEval = clean(evaled);
|
|
|
|
await m.react('📥');
|
|
await m.react('🗑');
|
|
});
|
|
});
|
|
}
|
|
} catch (error) {
|
|
ctx
|
|
.send(`\`\`\`js\n${clean(error)}\n\`\`\``)
|
|
.then(async (m) => {
|
|
await m.react('📥');
|
|
await m.react('🗑');
|
|
})
|
|
.catch((err) => {
|
|
ctx.send(`\`Content is over 2,000 characters: react to upload to Hastebin\``).then(async (m) => {
|
|
client.lastEval = clean(error);
|
|
|
|
await m.react('📥');
|
|
await m.react('🗑');
|
|
});
|
|
});
|
|
}
|
|
}
|
|
};
|