Discord bot commands not working

Hello, I have downloaded a discord bot from github and when I start it, it start perfectly but no commands work, can someone help me?

const Discord = require(“discord.js”);
const { Client, GatewayIntentBits } = require(‘discord.js’);

const client = new Discord.Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
]
})

// Here we load the config.json file that contains our token and our prefix values.
const config = require(“./config.json”);
// config.token contains the bot’s token
// config.prefix contains the message prefix.
const activities_list = [ // You can make more
“Playing”, // You can change this section
“Example 1: Example 1”,
“Example 2: Example 2”,
“Example 3: Example 3”
]; // creates an arraylist containing phrases you want your bot to switch through.

client.on(‘ready’, () => {
setInterval(() => {
const index = Math.floor(Math.random() * (activities_list.length - 1) + 1); // generates a random number between 1 and the length of the activities array list (in this case 5).
client.user.setActivity(activities_list[index], {type: ‘WATCHING’ }, {status: ‘Idle’ }); // sets bot’s activities to one of the phrases in the arraylist.
}, 2500); // Runs this every 2.5 seconds.
});

client.on(“ready”, () => {
// This event will run if the bot starts, and logs in, successfully.
console.log(Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.);
// Example of changing the bot’s playing game to something useful. client.user is what the
// docs refer to as the “ClientUser”.
client.user.setActivity(Serving ${client.guilds.size} servers); // You can change this section
});

client.on(“guildCreate”, guild => {
// This event triggers when the bot joins a guild.
console.log(New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!);
client.user.setActivity(Serving ${client.guilds.size} servers);
});

client.on(“guildDelete”, guild => {
// this event triggers when the bot is removed from a guild.
console.log(I have been removed from: ${guild.name} (id: ${guild.id}));
client.user.setActivity(Serving ${client.guilds.size} servers);
});

client.on(“message”, async message => {
// This event will run on every single message received, from any channel or DM.

// It’s good practice to ignore other bots. This also makes your bot ignore itself
// and not get into a spam loop (we call that “botception”).
if(message.author.bot) return;

// Also good practice to ignore any message that does not start with our prefix,
// which is set in the configuration file.
if(message.content.indexOf(config.prefix) !== 0) return;

// Here we separate our “command” name, and our “arguments” for the command.
// e.g. if we have the message “+say Is this the real life?” , we’ll get the following:
// command = say
// args = [“Is”, “this”, “the”, “real”, “life?”]
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();

// Let’s go with a few common example commands! Feel free to delete or change those.

if(command === “ping”) {
// Calculates ping between sending a message and editing it, giving a nice round-trip latency.
// The second ping is an average latency between the bot and the websocket server (one-way, not round-trip)
const m = await message.channel.send(“Ping?”);
m.edit(>>> **Server Ping**:\n***Latency*** is __${m.createdTimestamp - message.createdTimestamp}ms__\nAPI ***Latency*** is __${Math.round(client.ping)}ms__);
}

if(command === “say”) {
// makes the bot say something and delete the message. As an example, it’s open to anyone to use.
// To get the “message” itself we join the args back into a string with spaces:
if(!message.member.roles.some(r=>[“OWNER”, “CO-OWNER”, “ADMIN”].includes(r.name)) ) // change & add your server roles
return message.reply(“Sorry, you don’t have permissions to use this. Contact the Admin”);
const sayMessage = args.join(" ");
// Then we delete the command message (sneaky, right?). The catch just ignores the error with a cute smiley thing.
message.delete().catch(O_o=>{});
// And we get the bot to say the thing:
message.channel.send(sayMessage);
}

if(command === “kick”) {
// This command must be limited to mods and admins. In this example we just hardcode the role names.
// Please read on Array.some() to understand this bit:
// Array.prototype.some() - JavaScript | MDN?
if(!message.member.roles.some(r=>[“OWNER”, “PROTECTOR”].includes(r.name)) )
return message.reply(“Sorry, you don’t have permissions to use this. Contact the Admin”);

// Let's first check if we have a member and if we can kick them!
// message.mentions.members is a collection of people that have been mentioned, as GuildMembers.
// We can also support getting the member by ID, which would be args[0]
let member = message.mentions.members.first() || message.guild.members.get(args[0]);
if(!member)
  return message.reply("Please mention a valid member of this server");
if(!member.kickable) 
  return message.reply("I cannot kick this user! Do they have a higher role? Do I have kick permissions?");

// slice(1) removes the first part, which here should be the user mention or ID
// join(' ') takes all the various parts to make it a single string.
let reason = args.slice(1).join(' ');
if(!reason) reason = "No reason provided";

// Now, time for a swift kick in the nuts!
await member.kick(reason)
  .catch(error => message.reply(`Sorry ${message.author} I couldn't kick because of : ${error}`));
message.reply(`${member.user.tag} has been kicked by ${message.author.tag} because: ${reason}`);

}

if(command === “ban”) {
// Most of this command is identical to kick, except that here we’ll only let admins do it.
// In the real world mods could ban too, but this is just an example, right? :wink:
if(!message.member.roles.some(r=>[“OWNER”, “PROTECTOR”].includes(r.name)) )
return message.reply(“Sorry, you don’t have permissions to use this. Contact the Admin”);

let member = message.mentions.members.first();
if(!member)
  return message.reply("Please mention a valid member of this server");
if(!member.bannable) 
  return message.reply("I cannot ban this user! Do they have a higher role? Do I have ban permissions?");

let reason = args.slice(1).join(' ');
if(!reason) reason = "No reason provided";

await member.ban(reason)
  .catch(error => message.reply(`Sorry ${message.author} I couldn't ban because of : ${error}`));
message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${reason}`);

}

if(command === “purge”) {
// This command removes all messages from all users in the channel, up to 100.
if(!message.member.roles.some(r=>[“OWNER”].includes(r.name)) )
return message.reply(“Sorry, you don’t have permissions to use this! Contact the Admin”);

// get the delete count, as an actual number.
const deleteCount = parseInt(args[0], 10);

// Ooooh nice, combined conditions. <3
if(!deleteCount || deleteCount < 2 || deleteCount > 100)
  return message.reply("Please provide a number between 2 and 100 for the number of messages to delete");

// So we get our messages, and delete them. Simple enough, right?
const fetched = await message.channel.fetchMessages({limit: deleteCount});
message.channel.bulkDelete(fetched)
  .catch(error => message.reply(`Couldn't delete messages because of: ${error}`));

}
});

client.login(config.token);

Hi! Can you please explain what is the error that you get? What are you trying? What’s the project name?

There’s no error, the bort start up perfectly and I am trying to run $ping to see the ping of the bot, but the command doesn’t work, in fact, no command works. Ban,kick etc doesn’t work, the bot doesn’t say anything about errors and there’s no errors in the terminal

I heard that Discord stopped letting bots have access to messages by default. What was the date on the code you started with?

I’d try @-mentioning the bot, they might be more lenient about messages that mention the bot.

Add GatewayIntentBits.MessageContent to your intents.

const client = new Discord.Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
    ]
})

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.