Reputation: 1
My ban command isn't working can anybody help me? This is my first discord bot with discord.js. If anyone could tell me my mistake on why it is not doing anything and not replying when I do (a!ban @user
) the a!
is my prefix for the bot.
This is the whole command:
const Discord = require("discord.js");
const { MessageEmbed } = require("discord.js");
const { Color } = require("../../config.js");
module.exports = {
name: "ban",
aliases: [],
description: "Ban A Member!",
usage: "Ban <Mention Member>",
run: async (client, message, args) => {
//Start
if (!message.member.hasPermission("BAN_MEMBERS"))
return message.channel.send(
`You Don't Have Permission To Use This Command!`
);
let Member = message.mentions.users.first();
if (!Member)
return message.channel.send(
`Please Mention A Member That You Want To Ban!`
);
if (!message.guild.members.cache.get(Member.id))
return message.channel.send(`Please Mention A Valid Member!`);
if (Member.id === message.author.id)
return message.channel.send(`You Can't Ban Your Self!`);
if (Member.id === client.user.id)
return message.channel.send(`Please Don't Ban Me ;-;`);
if (Member.id === message.guild.owner.user.id)
return message.channel.send(`You Can't Ban Owner Of Server xD!`);
let Reason = args.slice(1).join(" ");
let User = message.guild.member(Member);
if (!User.bannable) return message.channel.send(`I Can't Ban That Member, Maybe They Are Higher Than My Role`);
try {
console.log(`Member Is Going To Get Ban!`);
setTimeout(function() {
User.ban({ reason: `${Reason || "No Reason Provided!"}` });
}, 2000);
let embed = new Discord.MessageEmbed()
.setColor(Color)
.setTitle(`Member Banned!`)
.addField(`Moderator`, `${message.author.tag} (${message.author.id}`)
.addField(`Banned Member`, `${Member.tag} (${Member.id})`)
.addField(`Reason`, `${Reason || "No Reason Provided!"}`)
.setFooter(`Requested by ${message.author.username}`);
if (User && Member.bot === false)
Member.send(
`You Have Been Banned From **${message.guild.name}** For ${Reason ||
"No Reason Provided!"}`
);
message.channel.send(embed);
console.log(
`User: ${Member.tag} (${Member.id}) Just Got Banned From ${
message.guild.name
} For ${Reason || "No Reason Provided!"}`
);
} catch (error) {
return message.channel
.send(
`I Can't Ban That Member Maybe Member Has Higher Role Than Me & My Role Is Lower Than Member!`
)
.then(() => console.log(error));
}
//End
}
};
Upvotes: 0
Views: 252
Reputation: 23161
You should not mix users and members. You can't ban a user, you can only ban members. As you want to ban a member, instead of mentions.users
you could use mentions.members
.
I've rewritten your code and it seems to be working:
module.exports = {
name: "ban",
aliases: [],
description: "Ban A Member!",
usage: "Ban <Mention Member>",
run: async (client, message, args) => {
if (!message.member.hasPermission('BAN_MEMBERS'))
return message.channel.send(
`You Don't Have Permission To Use This Command!`,
);
let member = message.mentions.members.first();
if (!member)
return message.channel.send(
`Please Mention A Member That You Want To Ban!`,
);
if (member.id === message.author.id)
return message.channel.send(`You Can't Ban Your Self!`);
if (member.id === client.user.id)
return message.channel.send(`Please Don't Ban Me ;-;`);
if (member.id === message.guild.owner.user.id)
return message.channel.send(`You Can't Ban Owner Of Server xD!`);
let reason = args.slice(1).join(' ') || 'No Reason Provided!';
if (!member.bannable)
return message.channel.send(
`I Can't Ban That Member, Maybe They Are Higher Than My Role`,
);
try {
console.log(`Member Is Going To Get Ban!`);
setTimeout(function () {
member.ban({ reason });
}, 2000);
let embed = new Discord.MessageEmbed()
.setColor(Color)
.setTitle(`Member Banned!`)
.addField(`Moderator`, `${message.author.tag} (${message.author.id}`)
.addField(`Banned Member`, `${member.user.tag} (${member.id})`)
.addField(`Reason`, reason)
.setFooter(`Requested by ${message.author.username}`);
if (member && !member.bot)
member.send(
`You Have Been Banned From **${message.guild.name}** For ${reason}`,
);
message.channel.send(embed);
console.log(
`User: ${member.tag} (${member.id}) Just Got Banned From ${message.guild.name} For ${reason}`,
);
} catch (error) {
return message.channel
.send(
`I Can't Ban That Member Maybe Member Has Higher Role Than Me & My Role Is Lower Than Member!`,
)
.then(() => console.log(error));
}
}
};
Upvotes: 1