【问题标题】:Specific Role Commands for Discord BotDiscord Bot 的特定角色命令
【发布时间】:2020-02-11 14:54:00
【问题描述】:

我正在尝试为我的 Disc 机器人创建一个命令,并且我正在尝试使其与角色相关。

我查看了这个网站上的其他问题,但它们都是 Python 而不是 JS;在 discord.js 上,他们的示例与我想要做的完全不同。到目前为止一切都很好,只是当它到达这部分时(上面或下面没有任何东西)

if (message.member.roles.name == "Owner") {
    return message.reply("You can use this command!")
  }
  if (message.member.roles.name != "Owner") {
    return message.reply("Sorry, an error occurred.")
  }

我希望能够看到“你可以使用这个命令!

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    问题是message.member.roles 不会是单个项目,它将是用户拥有的角色的集合,因此您需要搜索角色以检查用户是否具有角色。

    您可以使用.find() 函数来查看用户是否具有角色。它接受一个传递r(作为角色)的函数(在本例中为 lambda 函数),并检查 r.name 是否等于您的角色(在本例中为所有者)

    if(message.member.roles.find(r => r.name === "Owner")){
      return message.reply("You can use this command!")
    } else {
      return message.reply("Sorry, an error occurred.")
    }
    

    【讨论】:

      【解决方案2】:

      另一种选择是,您可以通过他们的 ID 获取角色(因为他们可能不会定期更改),然后检查用户是否具有该角色。

      let ownerRole = message.guild.roles.get('123456789');
      let moderatorRole = message.guild.roles.get('123456789');
      
      if(msg.member.roles.has(ownerRole.id)) {
          // the user has the role
      } else {
          // the user doesn't have the role.
      }

      【讨论】:

        【解决方案3】:

        我认为你应该这样写。它可以防止许多错误,例如“message.member.roles.name is not a function”

        这是我的代码:

        client.on('message', message => {
                    const roleName = message.member.roles.cache.find(r => r.name === "Owner")
                    if (roleName) {
                        return message.reply("You can use this command.")
                    } else {
                        return message.reply("Sorry, an error occured.")
                    }
        

        【讨论】:

        • 仅对从浏览器运行的完整代码使用代码 sn-ps。否则,使用代码块。
        猜你喜欢
        • 2020-10-06
        • 2020-09-02
        • 1970-01-01
        • 2020-11-19
        • 2021-04-28
        • 2019-11-01
        • 2018-12-01
        • 2020-06-29
        • 1970-01-01
        相关资源
        最近更新 更多