Discord.JS:TypeError:无法读取未定义的属性“角色”

时间:2020-08-25 17:53:45

标签: javascript discord discord.js

这是代码。

case 'updatesrole' :
    msg.react("✔️")
    msg.reply("✔️ Added updates role!, to remove, do !removeupdatesrole")
    let role = msg.guild.roles.cache.find(r => r.name === "Updates");

    var member1 = msg.author
    member1.roles.add(role)

case 'removeupdatesrole' :
    member1.roles.remove(role)
    }
})

我收到此错误。

TypeError:无法读取未定义的属性“角色”

1 个答案:

答案 0 :(得分:0)

case语句是单独的代码块

如果我正确地阅读了代码(格式有点奇怪),则可以使用switch语句并在其中一种情况下定义一个变量。如果触发了不同的情况(在这种情况下(哈哈)为“ removeupdatesrole”),则永远不会创建该变量,并且会引发错误。为了使用该变量,您需要在这种情况下创建它:

case 'removeupdatesrole' :
  var member1 = msg.member
  member1.roles.remove(role)
}

或者如果有多种情况使用它,请在整个switch语句之前创建它。

或者,您可以将代码简化为:

case 'removeupdatesrole' :
  msg.member.roles.remove(role)
}

并且完全不必处理变量。

P.S:解决此问题后,您必须对角色变量执行相同的操作。还要在“ removeupdatesrole”案例语句中声明它。

编辑:正如Lioness100在评论中指出的那样,应该使用msg.member而不是msg.author来使用户在公会的上下文中使用,而不是在整个Disord上。我已经相应地更新了代码片段。