I cant get access to the client in my command file discord.js

Advertisements

My reaction role file:


module.exports = {
  name: "rr",
  desc: "make a reaction role --> <",
  async run(message, client) {
    const jsEmoji = "🍏";
    const pythonEmoji = "🍍";

    let embedMessage = await message.channel.send("react for a role");
    embedMessage.react(jsEmoji);
    embedMessage.react(pythonEmoji);

    client.on("messageReactionAdd", (user, reaction) => {
      console.log("he reacted");
    });
  },
};

my bot file:

const intents = new Discord.Intents(32767);

I initialized my client here

const client = new Discord.Client({ intents: intents });

const fs = require("fs");
const commandFolders = fs.readdirSync("./Commands");
client.commands = new Discord.Collection();

commandFolders.forEach((folder) => {
  const commandFiles = fs
    .readdirSync(`./Commands/${folder}`)
    .filter((file) => file.endsWith(".js"));
  commandFiles.forEach((file) => {
    const command = require(`./Commands/${folder}/${file}`);
    client.commands.set(command.name, command);
  });
});

client.on("messageCreate", (message) => {
  if (message.author.bot || !message.content.startsWith(config.prefix)) return;

  const [command, ...args] = message.content
    .substring(config.prefix.length)
    .split(/\s+/);

I tried getting access to the client here and passing it into the run function but that didnt work.

  client.commands.forEach((cmd) =>
    command === cmd.name
      ? client.commands.get(cmd.name).run(message, args, client)
      : null
  );
});

client.login(config.token);

My Error:

    client.on("messageReactionAdd", (user, reaction) => {
           ^
TypeError: client.on is not a function

Is there another way to get access to my client?

>Solution :

your arguments are wrong on command file.

You should use async run(client, message, args)

Here’s a full code for you:

module.exports = {
  name: "rr",
  desc: "make a reaction role --> <",
  async run(client, message, args) {
    const jsEmoji = "🍏";
    const pythonEmoji = "🍍";

    let embedMessage = await message.channel.send("react for a role");
    embedMessage.react(jsEmoji);
    embedMessage.react(pythonEmoji);

    client.on("messageReactionAdd", (user, reaction) => {
      console.log("he reacted");
    });
  },
};

Leave a Reply Cancel reply