DiscordJS 检查命令用户是否有角色

时间:2021-04-10 17:08:04

标签: javascript discord discord.js

我以前设法做到了这一点,但是现在在创建新命令时不起作用,尽管它可以与另一个一起工作。

我正在尝试检查命令用户是否具有角色,然后他们会以不同的方式执行命令。我正在做以下

if (message.member.roles.cache.filter(role => role.name == "Castaways").size == 1) {

console.log("Works")

}

我设法找到了有助于改变错误的东西。我做了 npm update,现在定义了 message.member。我可以看到 message.member.roles 但是,它现在说明 message.member.roles.cache 未定义。

TypeError: Cannot read property 'filter' of undefined

对我可能出错的地方提供一些帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您有 ID,请使用 RoleManager#has()(推荐)

if (message.member.roles.cache.has('role-id-here')) {
   // Member has that role!
}

或者 RoleManager#some() 如果您想通过名称查找角色。

if (message.member.roles.cache.some(r => r.name === 'Castaways')) {
   // Member has that role!
}

View the official documentation for Permissions

确保您的 DJS 版本至少为 v12,因为这是引入 .cache 的版本。