我的取消静音命令discord.js v11.5出现问题

时间:2020-05-04 08:08:44

标签: javascript discord discord.js

我在discord.js的11.5版本中执行的取消静音命令存在问题:

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

    module.exports.run = (client, message, args) => {
        if (!message.guild.members.get(message.author.id).hasPermission("MANAGE_ROLES")) {
            return message.channel.send(":x: | Vous n'avez pas la permission");
        };

        let user = message.mentions.users.first();

        if (!user) {
            return message.channel.send(":x: | Aucune mention n'a été faite");
        };

        if (!message.guild.members.get(user.id).roles.has(message.guild.roles.get("680045212374270010"))) {
            return message.channel.send(":x: | L'utilisateur n'est pas mute")
        }

        let embed = new Discord.RichEmbed()
            .setAuthor(message.author.tag, message.author.displayAvatarURL)
            .setThumbnail(user.displayAvatarURL)
            .setTitle("**Unmute**")
            .addField("Modérateur", message.author.username, true)
            .addField("User", user.tag, true)
            .setTimestamp()
            .setFooter(client.user.username, client.user.displayAvatarURL);

        message.channel.send(embed);
        message.guild.members.get(user.id).removeRole(message.guild.roles.get("680045212374270010"));

    };

    module.exports.help = {
        name: "unmute"
    };

这项工作有效,但是,我提到的用户具有Muted角色,它发送给用户的角色没有Muted且该角色已删除。为什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

let member = message.mentions.members.first();

if(!member.roles.find(role => role.id === "680045212374270010")) {
     //do something
}

您将在message.mentions.members.first()的第一个提及中获得该成员。 然后,您将在成员的角色集合中找到该角色,并检查它是否为null。如果为null,则//do something中的代码将运行。 这样比较干净,不是吗?