【问题标题】:Discord.js kick / ban command top rolesDiscord.js 踢/禁止命令顶级角色
【发布时间】:2021-06-20 04:32:18
【问题描述】:

所以,有封禁权限的成员不能封禁,这很好。但是那些有封禁权限的人可以封禁比他们更高角色的人,这意味着如果管理员有封禁权限,他可以封禁管理员。我想要它,这样即使你有禁止权限,你也不能禁止比你角色更高的成员。

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

module.exports = {
    name : 'kick',
    description : 'Kick',
    async execute(message, args) {
        console.log("Works");
        if (!message.member.hasPermission("KICK_MEMBERS")) return message.channel.send("You do not have permissions to use this command");
    
        const member = message.mentions.members.first();
        let reason = args.slice(1).join(" ");
        if (!reason) reason = "No specified reason.";
    
        const kickEmbed = new Discord.MessageEmbed()
        .setTitle(`${member.user.tag} was kicked from ${message.guild.name}`)
        .setDescription(`Reason: ${reason}`)
        .setColor("#FF0000")
        .setTimestamp()
        .setFooter(message.author.tag, message.author.displayAvatarURL())
        .setAuthor(member.user.tag, member.user.displayAvatarURL({dynamic : true}))
        .setThumbnail(member.guild.iconURL({ dynamic: true }))
        
        if (!args[0]) return message.channel.send(`You need to specify the user that is going to be kicked`);
        if (!member) return message.channel.send(`The member you mentioned is not in the server`);
    
    try {
        await member.send(kickEmbed);
    } 
    catch(err){
        console.log(`I was unable to message the member`);
    }

    try {
        member.kick(reason);
        await message.channel.send(kickEmbed);
    }
    catch(err){
        console.log(err);
        message.channel.send("I was unable to kick the member you mentioned");
    }
    }
}

【问题讨论】:

标签: javascript discord.js


【解决方案1】:

您可以使用<message>.member.roles.position.highest 来确定成员角色的位置并应用适当的修复

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

module.exports = {
    name : 'kick',
    description : 'Kick',
    async execute(message, args) {
        console.log("Works");
        if (!message.member.hasPermission("KICK_MEMBERS")) return message.channel.send("You do not have permissions to use this command");
    
        const member = message.mentions.members.first();
        let reason = args.slice(1).join(" ");
        if (!reason) reason = "No specified reason.";
    
        const kickEmbed = new Discord.MessageEmbed()
        .setTitle(`${member.user.tag} was kicked from ${message.guild.name}`)
        .setDescription(`Reason: ${reason}`)
        .setColor("#FF0000")
        .setTimestamp()
        .setFooter(message.author.tag, message.author.displayAvatarURL())
        .setAuthor(member.user.tag, member.user.displayAvatarURL({dynamic : true}))
        .setThumbnail(member.guild.iconURL({ dynamic: true }))
        
        if (!args[0]) return message.channel.send(`You need to specify the user that is going to be kicked`);
        if (!member) return message.channel.send(`The member you mentioned is not in the server`);
    
    // the fix for your issue

    if (member.roles.highest.position >= message.member.roles.highest.position) return message.reply('Yikes the person you tried to kick has higher or equal roles than you!')
    
    try {
        await member.send(kickEmbed);
    } 
    catch(err){
        console.log(`I was unable to message the member`);
    }

    try {
        member.kick(reason);
        await message.channel.send(kickEmbed);
    }
    catch(err){
        console.log(err);
        message.channel.send("I was unable to kick the member you mentioned");
    }
    }
}

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 2020-10-20
    • 1970-01-01
    • 2021-06-01
    • 2021-10-06
    • 2020-09-11
    • 2021-08-22
    • 2021-11-13
    • 2021-07-27
    相关资源
    最近更新 更多