过滤来自特定角色或权限的反应

时间:2020-09-23 18:18:15

标签: discord discord.js

仅当做出反应的用户具有特定角色或权限时,我才想使命令起作用

我知道我应该使用过滤器,但是我不知道如何做 这是我使用的过滤器

  const approveFilter = (reaction, user) => reaction.emoji.name === '✅' ;

1 个答案:

答案 0 :(得分:1)

要检查用户是否具有角色,可以使用GuildMemberRoleManager.cache集合。要检查用户是否具有权限,可以使用GuildMember.hasPermission()方法。

这两者都需要一个GuildMember对象,尽管filter函数传递了一个User作为参数(请参阅this post来了解区别)。因此,第一步将是使用Guild.member()函数将User转换为GuildMember

幸运的是,我们可以从reaction参数访问公会对象!

const approveFilter = (reaction, user) =>
 reaction.emoji.name === '✅' && // check emoji name
 reaction.message.guild.member(user).roles.cache.has('Role ID') && // check if they have a role
 reaction.message.guild.member(user).hasPermission('Permission Flag'); // check if they have a permission