0
votes

I made a Discord.js Ban Command with reason and stuff however i overcome an error whenever i try to use it. Here is my code :

const { MessageEmbed } = require('discord.js');
module.exports = {
    name: 'ban',
    description: 'Ban a user from the server by using mentioning them!',
  guildOnly: true,
    aliases: ['ban', 'banbanban'],
    usage: `-ban <USER_MENTION> <OPTIONAL_REASON>`,
    cooldown: 5,
    async execute(message, args, client) {

const daidinevermantion = new MessageEmbed()
        daidinevermantion.setTitle('Incorrect arguments provided!')
        daidinevermantion.setDescription('Please Mention a user to ban ;-;. Make sure it a mention. The bot may not be able to ban users not in the server')
        daidinevermantion.addField('Usage','``;ban <USER_MENTION> <OPTIONAL REASON>``')
        daidinevermantion.addField('Example Usage', ';ban <@760773438775492610> Good Bot')
        if(!message.member.hasPermission("BAN_MEMBERS")) return message.channel.send('You can\'t use that!')
        if(!message.guild.me.hasPermission("BAN_MEMBERS")) return message.channel.send('I don\'t have the right permissions.')

        const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
        
        if(!args[0]) return message.channel.send(daidinevermantion);

        if(!member) return message.channel.send('Can\'t seem to find this user. Sorry \'bout that :/. Make sure you are mentioning the user and the user is in the server!');
        if(!member.bannable) return message.channel.send('This user can\'t be banned. It is either because they are a mod/admin, or their highest role is higher than mine');

        if(member.id === message.author.id) return message.channel.send('Bruh, you can\'t ban yourself!');

        let reason = args.slice(1).join(" ");

        if(!reason) reason = 'Unspecified';

        member.ban({ days: 7, reason: reason }).catch(err => { 
          message.channel.send('Something went wrong')
            console.log(err)
        })

        const banembed = new Discord.MessageEmbed()
        .setTitle('Member Banned')
        .setThumbnail(member.user.displayAvatarURL())
        .addField('User Banned', member)
        .addField('Banned by', message.author)
        .addField('Reason', reason)
        .setFooter('Banned On:', client.user.displayAvatarURL())
        .setTimestamp()

        message.channel.send(banembed);

    }
}

Here whenever i send this command I this message in return "This user can't be banned. It is either because they are a mod/admin, or their highest role is higher than mine" regardless of whatever the case is whether its position is higher or lower. I'm a bit new to Discord.js please help me out thanks a lot!

1
Make sure your bot have the required permissions to ban a userbinoy638
Member#bannable is based on if the Client itself is able to ban the member, not you. Compare the bot's role to the member you're trying to ban.Elitezen
Can you clarify this sentence: "I made a Discord.js Ban Command with reason and stuff however i overcome an error whenever i try to use it."? Should it be "I made a Discord.js Ban Command with a reason and other required parameters. However, I get an error whenever I try to use it."?Graham Asher

1 Answers

0
votes

You are getting that message because member.bannable is always false, and the reason for that is your bot doesn't have the required permissions to ban a user. Use this permission calculator and reinvite the bot to the server with required permissions i.e "Ban Members" or "Administrator".