For the past while, I've been trying to make an "Eval" command using Slash Commands.
I have a system in place that goes along with my Command Handler, however, it's specifically the "Eval" command that's causing issues.
I'm currently using @discordjs/builders
, however, it's not helping with this.
This is how the Slash Command is built:
slash: new SlashCommandBuilder()
.setName("eval")
.setDescription("Evaluates JavaScript code.")
.addStringOption(option => option.setName("code").setDescription("Your JavaScript code.").setRequired(true)),
In Discord, the "code" option doesn't even appear. When I try to run the command by running:
/eval ```js
console.log("Hello World");
I get an error saying Cannot read property "replace" of null
Here's the script for the Slash Command:
runSlash: async (interaction, bot) => {
if (interaction.user.id !== interaction.guild.ownerId) {
interaction.reply("You are not allowed to do this.");
return bot.commandLog(`${msg.author} attempted to use the EVAL command, but was not Atelo.`);
}
const toEval = interaction.options.getString("code");
console.log(interaction.options);
/*
this is what ^^^ returns:
CommandInteractionOptionResolver {
_group: null,
_subcommand: null,
_hoistedOptions: []
}
*/
console.log(interaction.options.getString("code")); // Also returns null
const toRemove = /^(```js)|(```)$/gi;
const evalEmbed = new MessageEmbed();
try {
const evalled = eval(toEval.replace(toRemove, ''));
evalEmbed.setTitle("Evaluation Successful");
evalEmbed.addFields({ name: "Output", value: "```js\n" + evalled + "\n```" });
evalEmbed.setFooter(interaction.guild.name, interaction.guild.iconURL());
evalEmbed.setTimestamp();
} catch (err) {
evalEmbed.setTitle("Evaluation Failed");
evalEmbed.addFields({ name: "Output", value: "```js\n" + err + "\n```" });
evalEmbed.setFooter(interaction.guild.name, interaction.guild.iconURL());
evalEmbed.setTimestamp();
}
interaction.reply({ embeds: [evalEmbed] });
return bot.commandLog(`${msg.author} successfully used the EVAL command.`);
}
}
I've tried debugging for a while, and I am extremely confused. Thanks for any help you can provide!
So, I realized I used the wrong variable within my Command Handler, which broke the Slash Commands.
Oops!
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.