【问题标题】:Instead of Role ID, Role Name Discord.js不是角色 ID,而是角色名称 Discord.js
【发布时间】:2021-11-02 22:07:39
【问题描述】:

我想统计两个不同 Discords 中具有特定角色的成员。我试图让它使用角色名称而不是角色 ID。不幸的是,它不能正常工作。

else if(parts[0] == 't!Verified') {
    let role = message.guild.roles.cache.find(role => role.name == "Verified");
    let membersWithRole = message.guild.roles.cache.get(role.name);
    message.channel.send(`There are ${membersWithRole.members.size} Verified Members on this Discord`)```

发生的错误代码是:

TypeError: Cannot read property 'members' of undefined

【问题讨论】:

    标签: discord.js names


    【解决方案1】:

    你可以使用

    message.guild.roles.cache.find( r => { r.name == "role_name"});
    

    对于您问题的第二部分,您可能无法在每个公会中找到具有相同 ID 的角色,因此您可以使用 try/catch

    try {
    message.guild.roles.cache.find( r => { r.name == "role_name"});
    } catch(e) {
    // Suppress the error else console.log(e) if don't want to suppress 
    }
    

    【讨论】:

    • 是的,我知道我无法在每个公会中找到相同的 ID,但我的问题是我的机器人在找不到特定 ID 而我不想要的时候崩溃。你对此有什么想法吗?
    • 我确实在我的回答中包含了这一点,try/catch 可以解决这个问题
    • 对不起,我昨天因为那个抓东西而迷路了。我尝试使用您的代码将角色 ID 更改为名称。现在我的问题是我无法正确使用代码的其余部分。我对其进行了一些更改,但现在我遇到了最后一部分不起作用的问题。我现在的新代码是:else if(parts[0] == 't!verified') { let role = message.guild.roles.cache.find(role => role.name === "Verified"); let membersWithRole = message.guild.roles.cache.get(role.name); message.channel.send(There are ${membersWithRole.size} 已验证成员在此服务器上)
    • 你能把你遇到的错误发给我吗
    • 我的错误代码是:message.channel.send(There are ${membersWithRole.size} Verified Members on this Server) TypeError: Cannot read property 'size' of undefined
    猜你喜欢
    • 2016-09-09
    • 2012-10-08
    • 1970-01-01
    • 2021-04-06
    • 2021-02-24
    • 2021-06-15
    • 2021-04-16
    • 1970-01-01
    • 2019-06-30
    相关资源
    最近更新 更多