Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Discord.js检查消息作者是否具有管理员角色?_Javascript_Discord_Discord.js - Fatal编程技术网

Javascript 如何使用Discord.js检查消息作者是否具有管理员角色?

Javascript 如何使用Discord.js检查消息作者是否具有管理员角色?,javascript,discord,discord.js,Javascript,Discord,Discord.js,我正在构建一个Discord机器人,我想要一个if语句,只有当消息作者在公会中具有管理员角色时,该语句才会继续 我尝试过拥有特定于角色的权限,但这意味着机器人所在的所有服务器上都必须有完全相同的名称角色 如何检查邮件作者是否具有管理员角色?(角色具有管理员权限。)在GuildMember对象上,您有一个可用的函数。 因此,您只需执行member.haspmission('ADMINISTRATOR') 如果您对所有其他可解析权限的字符串感兴趣,您可以在中找到它们。由于管理器的实现,必须修改以下部

我正在构建一个Discord机器人,我想要一个
if
语句,只有当消息作者在公会中具有管理员角色时,该语句才会继续

我尝试过拥有特定于角色的权限,但这意味着机器人所在的所有服务器上都必须有完全相同的名称角色


如何检查邮件作者是否具有管理员角色?(角色具有管理员权限。)

在GuildMember对象上,您有一个可用的函数。 因此,您只需执行
member.haspmission('ADMINISTRATOR')

如果您对所有其他可解析权限的字符串感兴趣,您可以在中找到它们。

由于管理器的实现,必须修改以下部分代码才能在最新的major Discord.js版本(本次编辑时为v12)中使用

这里有三个不同的问题需要解决。它们都是相关的,但每个都有不同的直接答案


如何检查邮件作者是否具有管理员角色

  • 发送消息的对象通过属性访问,而不是返回。请记住,成员具有角色和权限,而不是用户

  • 可以使用检索成员角色的列表

  • 您可以通过两种主要方式搜索角色:

  • 身份证:
  • 财产:
所以,把这一切联系起来:

if(message.member.roles.has'roleIDHere'))console.log('用户是管理员');

if(message.member.roles.find(role=>role.name==='Admin'))console.log('用户是管理员');

如何检查邮件作者的角色是否具有管理员权限

  • 同样,我们需要使用
    Message#member
    中的GuildMember
  • 同样,我们需要使用
    GuildMember#roles
    集合
  • 而且。。。似曾相识。。。您可以使用
    集合#find()
    搜索集合
  • 这一次,您应该特别检入谓词函数
例如:

if(message.member.roles.find(role=>role.haspmission('Administrator'))console.log('User is admin');
您也可以将此概念应用于任何特定角色


这种情况下的最佳方法…

如何检查邮件作者是否具有管理员权限

  • 我们继续使用
    Message#member
    访问协会成员
  • 但是,您可以通过该方法一次检查成员的所有权限
考虑一下这个简短的例子:

if(message.member.hasPermission('ADMINISTRATOR'))console.log('User is admin');
快点,对吗


在尝试检查用户是否为管理员之前,请确保您的客户端收到的消息不是DM<代码>消息#成员在消息未在公会中发送时未定义,尝试使用其属性将抛出错误

使用此条件,如果消息为DM,则此条件将停止:

如果(!message.guild)返回;

这些答案似乎过时了:


用法:
msg.member.roles.cache.has(roleID)
if(message.content.startsWith('!kick')&&member.haspmission('ADMINISTRATOR'){
是我所做的,但我得到了引用错误:没有定义成员。您可能应该发布更多代码来查看此上下文。以及如何获取/接收实际的成员对象。client.on(“message”,(message)=>{if(message.content=
${prefix}avatar
&&member.hasPermission('ADMINISTRATOR')){message.reply(message.author.avatarURL);}}});这是代码。不过,我得到的错误与以前相同。在此上下文中,您需要
message.member.hasPermission(“管理员”)