TypeError:无法读取未定义的 guild.roles 的属性“获取”

Posted

技术标签:

【中文标题】TypeError:无法读取未定义的 guild.roles 的属性“获取”【英文标题】:TypeError: Cannot read property 'get' of undefined guild.roles 【发布时间】:2021-01-05 15:18:13 【问题描述】:

我想制作一个非常简单的机器人,如果成员发送 'ping' ,那么机器人将发送具有该角色的人数。但是,它给了我那里的错误。

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

client.on('message', async(msg) => 
  if (msg.content === 'ping') 
    let guild = await msg.guild.members.fetch();
    let roleID = '755766619229388800';
    let memberCount = guild.roles.get(roleID).members.size;
    msg.channel.send(memberCount + " members have this role!");
    console.log(memberCount)
    msg.reply('Pong!');
  
);

请告诉我要更改什么并向我解释为什么要进行更改。

【问题讨论】:

这能回答你的问题吗? How can I migrate my code to Discord.js v12 from v11? 【参考方案1】:

在最新版本的 Discord.js 中,您不能再直接在角色之外使用 get()。另外,我不明白您为什么要获取成员并将其分配为公会?您可以通过msg.guild 访问公会。考虑到这一点,您需要改用msg.guild.roles.cache.get(roleId).members.size

查看Updating from v11 to v12页面查看版本之间的差异

【讨论】:

以上是关于TypeError:无法读取未定义的 guild.roles 的属性“获取”的主要内容,如果未能解决你的问题,请参考以下文章

(Discord.js)TypeError:无法读取未定义的属性“添加”

类型错误:无法读取未定义的属性“获取”。 (制作音乐机器人)

无法读取未定义 discord.js 的属性“公会”

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

TypeError:无法读取未定义的属性(读取“名称”)

TypeError:无法读取未定义的属性(读取“问题”)