【问题标题】:Role seeking believes that said members have said role when they do not角色寻求认为,当他们没有说角色时,所述成员已经说角色
【发布时间】:2022-01-01 08:18:33
【问题描述】:
const { Discord, MessageEmbed } = require("discord.js");
module.exports = {
    name: "ban",
    description: "bans user from guild",
    execute(client, message, cmd, args, Discord) {
        const member = message.mentions.users.first();
        const user = message.mentions.members.first();
        let admin = message.author.username;
        let server = message.guild.name;
        const memberTarget = message.guild.members.cache.get(member.id);
        let reason = args.join(" ").slice(22);
        if (!reason) reason = "No reason provided";

        const embed = new MessageEmbed().setDescription("`Please remember to mention the user **(Members, UserID)**`").setColor("YELLOW");

        const embed1 = new MessageEmbed().setDescription("You dont have enough permissions to execute this command!").setColor("RED");

        const embed2 = new MessageEmbed().setDescription("`Sorry But this User is not Bannable`").setColor("RED");

        const embed4 = new MessageEmbed().setTitle(`You have been banned from ${server}!`).setThumbnail(`${message.guild.iconURL()}`).addField("Reason:", `${reason}`).setFooter(`you were banned by ${admin}`).setTimestamp().setColor("RED");

        const embed5 = new MessageEmbed().setDescription(`**${admin}**, You Cannot Ban Yourself`);

        if (user.id === message.author.id) {
            message.channel.send({ embeds: [embed5] });
        }
        if (
            message.member.roles.cache.some((role) => role.name === "Administrator") ||
            message.member.roles.cache.some((role) => role.name === "Admin") ||
            message.member.roles.cache.some((role) => role.name === "Moderator") ||
            message.member.roles.cache.some((role) => role.name === "Mod")
        ) {
            message.channel.send(`Sorry I cannot ban Admins/Mods`);
        } else {
            if (!message.mentions.users.first()) return message.channel.send({ embeds: [embed] });
            if (!message.member.permissions.has("KICK_MEMBERS")) return message.channel.send({ embeds: [embed1] });
            if (!user.kickable) return message.channel.send({ embeds: [embed2] });

            if (!!message.mentions.users.first() && message.member.permissions.has("KICK_MEMBERS")) {
                const embed3 = new MessageEmbed()
                    .setColor("BLACK")
                    .setThumbnail(message.mentions.users.first().displayAvatarURL())
                    .setDescription(`<@${memberTarget.user.id}> has been banned!`)
                    .addField("Reason", `${reason}`)
                    .setFooter(`Banned by ${admin}`)
                    .setTimestamp();

                user.send({ embeds: [embed4] });
                setTimeout(function () {
                    user.ban()
                        .catch((err) => console.log(err))
                        .then(() => {
                            message.channel.send({ embeds: [embed3] });
                            message.channel.bulkDelete(1);
                        }, 20000);
                });
            }
        }
    },
};

所以我正在寻找一种方法让我的机器人不禁止管理员或 Mod 角色,但是,我目前的设置方式相信每个成员都说过角色。

我正在寻找是否有更好的方法来寻找角色,或者我是否必须四处移动。

非常感谢您的帮助,因为我正在尽最大努力尽快修复此补丁。提前致谢!

【问题讨论】:

  • if (message.member.roles.cache.some(role =&gt; role.name === 'Administrator') || message.member.roles.cache.some(role =&gt; role.name === 'Admin') || message.member.roles.cache.some(role =&gt; role.name === 'Moderator') || message.member.roles.cache.some(role =&gt; role.name === 'Mod')) 不是检测一个人是否有角色的好方法...
  • 我之前的评论的意思是,您应该检测他们是否具有类似的 ADMINISTRATOR 权限或 MANAGE_MESSAGES 或可能 KICK_MEMBERS。

标签: javascript node.js discord discord.js


【解决方案1】:

您在两者之间缺少else

if(user.id === message.author.id){
  message.channel.send({ embeds: [embed5] })
}

 if (message.member

让这样的事情更明显的一种方法是自动格式化您的代码。

【讨论】:

    【解决方案2】:
    const { Discord, MessageEmbed } = require("discord.js")
    module.exports = {
        name: 'ban',
         description: "bans user from guild",
         execute(client, message, cmd, args, Discord){
        const member = message.mentions.users.first();
        const user = message.mentions.members.first();
        let admin = message.author.username;
        let server = message.guild.name;
    
        let reason = args.join(" ").slice(22);
        if(!reason) reason = "No reason provided";
    
        const embed = new MessageEmbed()
        .setDescription("`Please remember to mention the user **(Members, UserID)**`")
        .setColor("YELLOW")
    
        const embed1 = new MessageEmbed()
        .setDescription("You dont have enough permissions to execute this command!")
        .setColor("RED")
    
        const embed2 = new MessageEmbed()
        .setDescription("`Sorry But this User is not Bannable`")
        .setColor("RED")
    
    
        const embed4 = new MessageEmbed()
    
        .setTitle(`You have been banned from ${server}!`)
        .setThumbnail(`${message.guild.iconURL()}`)
        .addField('Reason:', `${reason}`)
        .setFooter(`you were banned by ${admin}`)
        .setTimestamp()
        .setColor('RED')
    
        const embed5 = new MessageEmbed()
    
        .setDescription(`**${admin}**, You Cannot Ban Yourself`)
    
    if(!message.member.permissions.has('KICK_MEMBERS')) return message.channel.send({ embeds: [embed1] })
    if(!message.mentions.users.first()) return message.channel.send({ embeds: [embed] })
    
        if(user.id === message.author.id){
          message.channel.send({ embeds: [embed5] })
        } else if (user.roles.cache.some(role => ['Administrator', 'Admin', 'Moderator', 'Mod'].includes(role.name))){
              message.channel.send(`Sorry I cannot ban Admins/Mods`)
        } else {
    
    
            if(!user.kickable) return message.channel.send({ embeds: [embed2] })
    
            if(!!message.mentions.users.first() && message.member.permissions.has('BAN_MEMBERS')) {
              const memberTarget = message.guild.members.cache.get(member.id)
              const embed3 = new MessageEmbed()
              .setColor("BLACK")
              .setThumbnail(message.mentions.users.first().displayAvatarURL())
              .setDescription(`<@${memberTarget.user.id}> has been banned!`)
              .addField('Reason', `${reason}` )
              .setFooter(`Banned by ${admin}`)
              .setTimestamp()
    
              user.send({ embeds: [embed4] })
                  setTimeout(function(){
                    user.ban().catch(err => console.log(err)).then(() => {
                        message.channel.send({ embeds: [embed3] })
                        message.channel.bulkDelete(1);
                      }, 20000);
                    })
            }
          }
        }
    }
    

    原来我想看看我是否拥有message.member 的角色,所以我从中删除了message,并将member 更改为user,并将角色转换为一个数组来清理代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2012-04-04
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多