我在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且该角色已删除。为什么?
答案 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
中的代码将运行。
这样比较干净,不是吗?