skip to Main Content

I’ve almost fixed my bot and now its giving this error :-

/Users/roopa/Desktop/projects/LLbot/src/handlers/commandHandler.js:27
    client.application.commands.set(commandsArray);
                       ^

TypeError: Cannot read properties of null (reading 'commands')
    at loadCommands (/Users/roopa/Desktop/projects/LLbot/src/handlers/commandHandler.js:27:24)
    at Object.<anonymous> (/Users/roopa/Desktop/projects/LLbot/src/bot.js:274:1)
    at Module._compile (node:internal/modules/cjs/loader:1255:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1309:10)
    at Module.load (node:internal/modules/cjs/loader:1113:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)
    at node:internal/main/run_main_module:23:47

Node.js v20.2.0

My commandHandler.js code :-

function loadCommands(client) {
    const fs = require('fs');
    const ascii = require('ascii-table');
    const table = new ascii().setHeading('Commands', 'Status');

    let commandsArray = [];

    const commandsFolder = fs.readdirSync('/Users/roopa/Desktop/projects/LLbot/src/Commands');
    
    for (const folder of commandsFolder) {
        const commandFiles = fs.readdirSync(`/Users/roopa/Desktop/projects/LLbot/src/Commands/${folder}`).filter((file) => file.endsWith('.js'));

        for (const file of commandFiles) {
            const commandFile = require(`/Users/roopa/Desktop/projects/LLbot/src/Commands/${folder}/${file}`);

            client.commands.set(commandFile.data.name, commandFile);
            commandsArray.push(commandFile.data.toJSON());
            table.addRow(file, '🟩');
            continue;
        }
    }

    client.application.commands.set(commandsArray);

    return console.log(table.toString(), 'nCommands Loaded')
}
module.exports = { loadCommands };

Is it giving me errors because my ‘commandsArray’ is empty? idk for sure tho.

aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb (ignore this , i didnt have much to explain so did this.)

2

Answers


  1. I might be wrong. But check 2 things.

    1. Is client defined? Does console logging client give you undefined? If its undefined recheck the method you use to transfer client to your function.

    2. Is client ready? If not try and fix it with this:

      client.on('ready', () => {
        await client.application.commands.set(commandsArray)
      });

    Also keep in mind that number 2 might also solve number 1

    Login or Signup to reply.
  2. You’re trying to set the property commands of an undefined property applications.

    Adding applications.commands under the form of an object should fix it:

    client.application = { commands: commandsArray };
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search