【问题标题】:Checking predefined role and executing a command检查预定义角色并执行命令
【发布时间】: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


【解决方案1】:

这可能有助于检测成员是否具有角色

// assuming role.id is an actual ID of a valid role:
if(message.member.roles.has(role.id)) {
  console.log(`Yay, the author of the message has the role!`);
} else {
  console.log(`author does not have the role`);
}

【讨论】:

  • 我不确定这是否可行,我似乎无法让它发挥作用,你可以尝试调整它以适应这里吗? hastebin.com/ehinatabij.js 基本上,如果用户具有角色,则运行该角色,如果没有,则取消。因为如果有人手动取消静音,取消静音嵌入和尝试将在此刻运行。
猜你喜欢
  • 2019-04-04
  • 2021-04-03
  • 2018-07-09
  • 1970-01-01
  • 2019-03-11
  • 2018-11-03
  • 2013-05-24
  • 2021-07-06
  • 2016-11-15
相关资源
最近更新 更多