我以前已经成功地做到了这一点,但现在在制作新命令时它不起作用,尽管它可以与其他命令一起工作。
我正在尝试检查命令用户是否有角色,如果有,他们会以不同的方式执行命令
if (message.member.roles.cache.filter(role => role.name == "Castaways").size == 1) {
console.log("Works")
}
我设法找到了有助于改变错误的东西。我做了npm更新,现在message.member已经定义。我可以看到message.member.oles,但是,它现在声明message.member.oles.che是未定义的。
TypeError: Cannot read property 'filter' of undefined
对于我可能出错的地方,我们将不胜感激。
如果您有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!
}
查看权限的官方文档
请确保您的DJS版本至少是v12,因为这是引入.cache
的版本。