Sgt Alex
Sgt Alex

Reputation: 1

My ban command isn't doing anything discord.js

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

Answers (1)

Zsolt Meszaros
Zsolt Meszaros

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));
    }
  }
};

enter image description here

Upvotes: 1

Related Questions