【问题标题】:Using emotes to give roles Discord.js使用表情来赋予角色 Discord.js
【发布时间】:2018-06-10 13:31:16
【问题描述】:

在我的不和谐服务器中,作为一种验证方法,我希望我的机器人让所有用户对消息做出反应,然后获得验证角色,并删除旧角色。我当前的代码没有授予或删除角色,但没有错误。

client.on("messageReactionAdd", function(users) {
users.addRole(users.guild.roles.find("name", setup.verify));
users.removeRole(users.guild.roles.find("name", setup.default));
});

【问题讨论】:

  • setup.verifysetup.default的值是多少?
  • 默认和认证复古,这两者都使用命令工作

标签: discord.js


【解决方案1】:

当前代码有问题。 messageReactionAdd 事件返回一个 User 对象,该对象不包含您尝试访问的属性 .guildsusers.guilds.r-

也许您应该将User 对象的id 插入message.guild.members.get("id here"),而不是这个。然后将返回的Member 对象与您当前的代码一起使用。应该可以!

参考资料:

Guild Member , Message Reaction Event, User Object

【讨论】:

    【解决方案2】:

    这样的东西会起作用吗? 我不确定它是否会我没有测试过。如果他们反应的消息包含单词“role1”,这应该添加角色,如果他们对不同的消息做出反应,它将删除角色。我不知道这是否是你想要的,但理论上这应该可行。

     client.on("MessageReactionAdd", function(users) {
    if (message.content === "role1") {
      users.addRole(users.guild.roles.find("name", setup.verify))
    } else if (!message.content === "role1") {
      user.removeRole(users.guild.role.find("name", setup.default))
    }
    });
    

    【讨论】:

      【解决方案3】:

      是角色的名称; setup.verify & setup.default?
      如果没有,那就是它不起作用的原因。

      试试:

      client.on("messageReactionAdd", function(users) {
      users.addRole(users.guild.roles.find("id", ROLEIDHERE));
      users.removeRole(users.guild.roles.find("id", ROLEIDHERE));
      });
      

      ROLEIDHERE 在哪里放置role id 来查找角色 id,只需标记角色,然后在您点击发送之前将 \ 放在标记之前,它将提供 id

      【讨论】:

        猜你喜欢
        • 2020-10-07
        • 2021-11-18
        • 1970-01-01
        • 2021-06-06
        • 2020-07-21
        • 2021-04-09
        • 1970-01-01
        • 2017-08-22
        • 2018-10-11
        相关资源
        最近更新 更多