我以前设法做到了这一点,但是现在在创建新命令时不起作用,尽管它可以与另一个一起工作。
我正在尝试检查命令用户是否具有角色,然后他们会以不同的方式执行命令。我正在做以下
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
对我可能出错的地方提供一些帮助将不胜感激。
答案 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
的版本。