简体   繁体   中英

Cannot read properties of undefined (reading 'get') discord.js

So I recently started developing a discord bot using discord.js , and when I'm trying to run this command, it is raising an error when I update the bot at the line where I execute the command ( client.commands.get('kick').execute(message, args); ).

The error is:

TypeError: Cannot read properties of undefined (reading 'get'
    at Client.<anonymous> (C:\Users\Shushan\Desktop\discordbot\main.js:18:25)
    at Client.emit (node:events:527:28) )

And here are my code files:

main.js

const Discord = require('discord.js');

const client = new Discord.Client();

const prefix = '?';

client.once('ready', () => {
    console.log("Shushbot is online!");
})

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

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if(command === 'kick') {
        client.commands.get('kick').execute(message, args);
    }
})

client.login('SECURITY TOKEN');

kick.js

module.exports = {
    name: 'kick',
    description: 'This Command Kicks People!',
    execute(message, args) {
        const member = message.mentions.users.first();
        if(member) {
            const memberTarget = message.guild.members.cache.get(member.id);
            memberTarget.kick();
            message.channel.send("This User Has Been Kicked From The Server.");
        } else {
            message.channel.send("This User Couldn't Be Kicked.");
        }
    }
}

I think you should check that : https://discordjs.guide/creating-your-bot/command-handling.html#reading-command-files

So far, your bot (client) don't know the commands method, and even if he knows, get dosent exists at all.

You have to write some code to create and set these commands, exemple from doc :


client.commands = new Collection();
const commandsPath = path.join(__dirname, 'commands');
const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const filePath = path.join(commandsPath, file);
    const command = require(filePath);
    // Set a new item in the Collection
    // With the key as the command name and the value as the exported module
    client.commands.set(command.data.name, command);
}

You can do it that way or an other, but at this time your object is empty.

Even your client.commands is undefined !

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM