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.jsmessage.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() 未向对象添加正确的值