【问题标题】:DiscordJS Check if command user has a roleDiscordJS 检查命令用户是否有角色
【发布时间】:2021-07-06 06:41:09
【问题描述】:

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

我正在尝试检查命令用户是否具有角色,如果有,他们将以不同的方式执行命令。我正在做以下事情

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

如果我可能会出错,我们将不胜感激。

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案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 的版本。

    【讨论】:

    • 非常感谢,我可能应该扮演这个角色。将来会做。更新了我现在可以使用的 discord.js。没有意识到不同的项目可以如此轻松地运行不同版本的 discord.js。谢谢。
    • 适用于需要更新 DJS 的人。更改 package.json 中的 discord 版本,然后运行 ​​npm install discord.js。您还可以使用 npm list discord.js 查看您安装的 DJS 版本
    猜你喜欢
    • 2018-06-10
    • 1970-01-01
    • 2018-07-09
    • 2019-04-04
    • 2021-02-24
    • 2019-04-30
    • 1970-01-01
    • 2010-12-22
    • 2019-06-16
    相关资源
    最近更新 更多