Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

585
Views
discord.js v13 - Cannot use Interaction Options

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!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

So, I realized I used the wrong variable within my Command Handler, which broke the Slash Commands.

Oops!

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!