我正在构建一个 Discord 机器人,我想要一个if
仅当消息作者在公会中具有管理员角色时才会执行该语句。
我尝试过拥有特定于角色的权限,但这意味着机器人所在的所有服务器上都必须有完全相同的名称角色。
如何检查消息作者是否具有管理员角色? (该角色具有管理员权限。)
由于管理器的实施,必须修改以下一些代码才能在最新主要 Discord.js 版本(本次编辑时为 v12)中使用。
这里确实需要解决三个不同的问题。它们都是相关的,但每个都有不同的直接答案。
如何检查消息是否作者具有管理员角色?
所以,把这一切结合在一起:
if (message.member.roles.has'roleIDHere')) console.log('User is an admin.');
or
if (message.member.roles.find(role => role.name === 'Admin')) console.log('User is an admin.');
如何检查消息作者是否角色具有管理员权限?
- 同样,我们需要使用 GuildMember
Message#member
.
- 再说一遍,我们需要使用
GuildMember#roles
收藏。
- 而且...似曾相识...您可以使用以下命令搜索集合
Collection#find()
.
- 这次你应该专门检查一下Role#hasPermission()在谓词函数中。
例如:
if (message.member.roles.find(role => role.hasPermission('Administrator'))) console.log('User is an admin.');
您也可以将此概念应用于任何特定角色。
针对这种情况的最佳方法...
如何检查消息是否作者拥有管理员权限?
- 我们继续使用
Message#member
访问公会成员。
- 不过,您可以检查all通过立即获得会员的权限GuildMember#hasPermission() method.
考虑这个简短的例子:
if (message.member.hasPermission('ADMINISTRATOR')) console.log('User is an admin.');
快点吧?
确保检查您的客户收到的消息是not在尝试检查用户是否是管理员之前先发送 DM。Message#member
当消息不是在公会中发送时,它是未定义的,并且尝试使用它的属性将引发错误。
使用此条件,如果消息是 DM,则该条件将停止:
if (!message.guild) return;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)