Discord.js API 中的权限?

Posted

技术标签:

【中文标题】Discord.js API 中的权限?【英文标题】:Permissions in Discord.js API? 【发布时间】:2017-06-22 20:17:31 【问题描述】:

我正在使用 discord.js/node 编写一个 Discord 机器人(我还很新)。 我试图设置一个权限系统,您需要一个特定的角色来使 if 语句返回 true 并允许用户使用命令或其他东西。我试过了(这只是其中的一部分):

if(message.author.roles.includes('role_id') 
   COMMANDS
   

但它只是给我控制台中的错误(显然)

如果你们中的任何人知道如何正确以有效的方式设置权限系统,那将不胜感激!

【问题讨论】:

Discord.js message.author 对象不包含成员 roles。见:discord.js.org/#/docs/main/stable/class/User 是的,我再次查看了文档并尝试使用.member(它代表具有roles 属性的GuildMember 类)而不是.author。但是还是不行。 Roles 看起来像一个集合,所以你需要使用他们的.exists() 方法。我认为默认情况下它不是一个数组,但不要引用我的话。 discord.js.org/#/docs/main/stable/class/… 我做了if(message.member.roles.exists(role_id)),但它崩溃了,给了我一个错误。文档说在检查项目 ID 时使用.has() 而不是.exists(),并且.has() 有效。 【参考方案1】:

用户上有一个hasRole方法:http://discordjs.readthedocs.io/en/8.2.0/docs_user.html

有角色(角色)

client.memberHasRole(member, role)的快捷键

查看client.memberHasRole

链接到这个:http://discordjs.readthedocs.io/en/8.2.0/docs_client.html#memberhasrole-member-role

memberHasRole(成员,角色)

如果用户有角色则返回

【讨论】:

这只是权限,但我正在寻找用户是否具有角色。除非有办法使用if 语句来检查hasPermission 的角色 这不起作用,它只会让我的机器人因错误而崩溃。不过谢谢。编辑:想出如何通过权限/角色来做到这一点。【参考方案2】:

您是否尝试过这样做?

 if (!message.member.roles.some(r=>["role_name"].includes(r.name)) ) 
    return;

这将阻止所有用户使用该特定命令,除非他们具有指定的角色。

【讨论】:

【参考方案3】:

使用if 条件来实现这一点:if(message.member.roles.has([role_id])) 其中 [role_id] 是一个字符串(否则它总是返回 false)

【讨论】:

以上是关于Discord.js API 中的权限?的主要内容,如果未能解决你的问题,请参考以下文章

我的 Heroku Discord 机器人离线 - discord.js

Discord.js 机器人的代码响应错误“TypeError:”

Node.js + Discord.js:无法读取未定义的属性“类”

**已解决** discord.js guildMemberAdd() 未向对象添加正确的值

Express RESTful API 中的 Discord.js

Discord.js 权限覆盖创建频道不会更改权限?