仅当做出反应的用户具有特定角色或权限时,我才想使命令起作用
我知道我应该使用过滤器,但是我不知道如何做 这是我使用的过滤器
const approveFilter = (reaction, user) => reaction.emoji.name === '✅' ;
答案 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