【发布时间】:2019-05-28 02:20:16
【问题描述】:
我需要检查一个用户是否有预定义的角色,如果它有这个角色,就删除它。如果没有,则发送一条消息说些什么。
let user = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
let muterole = message.guild.roles.find(x => x.name === "Muted");
if (user.roles.has(muterole)) user.removeRole(muterole);
if (!user.roles.has(muterole)) message.channel.send("This user does not have the muted role!");
如果user 拥有该角色,我希望它会删除该角色,如果他没有,则发送一条消息。
但是我目前的结果是,无论他是否拥有Muted 角色,它都会发送消息,如果他确实拥有它,它不会删除它。
我的最终目标是这个。我的mute 命令使用node ms 所以我可以静音指定的时间,所以我需要取消静音,但是如果用户取消静音,这不会停止计时器(我认为没有办法)所以我的想法是输入静音命令->“如果用户有mute,则删除角色,但如果用户没有mute角色,则返回”
【问题讨论】:
-
user.roles似乎是一个数组。我知道没有标准的arr.has方法,你的意思是使用Array.some -
有人告诉我它是
member.roles.has(mutedRole.id),但我不确定如何调整它以读取来自let user =的用户和来自let muterole =的角色 -
我认为你使用 id 是对的。见this question
标签: javascript node.js discord discord.js