Files
discordeno/examples/nodejs/Plugins/Developer/commands/eval.js
Jonathan Ho d04a040f28 Setup turborepo (#2610)
* chore: BREAKING move to monorepo structure

* chore: setup turborepo
2022-12-01 01:59:02 +08:00

51 lines
1.6 KiB
JavaScript

const Discord = require("discordeno.js");
const BaseCommand = require("../../../Structures/BaseCommand.js");
class evalcommand extends BaseCommand {
static name = "eval";
static description = "danger !!!";
static category = "Developer";
static slash = { name: "eval", category: "dev" };
constructor(data) {
super(data);
}
async execute() {
if (!this.client.config.owners.includes(String(this.user.id))) return;
if (!(this.args.length > 0)) return this.reply({ content: "**You must provide something to eval!**" });
let inputOfEval = this.args.join(" ");
let outputOfEval;
let typeOfEval;
try {
if (this.args.includes("await")) {
outputOfEval = await eval("(async () => {" + inputOfEval + "})()");
} else {
outputOfEval = await eval(inputOfEval);
}
} catch (e) {
outputOfEval = e.message;
typeOfEval = e.name;
}
var seen = [];
outputOfEval = typeof outputOfEval === "object"
? JSON.stringify(outputOfEval, (_, value) => {
if (value == `Bot ${this.client.config.token}`) return `BOT_TOKEN`;
if (typeof value === "bigint") value = value.toString();
if (typeof value === "object" && value !== null) {
if (seen.indexOf(value) !== -1) return;
else seen.push(value);
}
return value;
}, 1)
: outputOfEval;
const embed = new Discord.Embed()
.addField({ name: "Input", value: "```js\n" + inputOfEval + "```" })
.addField({ name: "Output", value: "```json\n" + `${outputOfEval}`.slice(0, 1000) + "```" });
this.reply({ embeds: [embed] });
}
}
module.exports = evalcommand;