thaldrin/DiscordModules/Developers/eval.js

91 lines
2.3 KiB
JavaScript
Raw Normal View History

2019-10-14 11:19:41 +00:00
const Command = require("../../src/structures/Command");
const { table } = require("quick.db");
const Servers = new table("servers");
const Users = new table("users");
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);
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("🗑");
});
});
}
}
};