【问题标题】:How do I check what roles my bot has? [Discord.js]如何检查我的机器人具有哪些角色? [不和谐.js]
【发布时间】:2020-12-05 17:05:24
【问题描述】:

我正在尝试查找我的机器人是否具有特定的角色,以便它可以做其他事情。例如:

client.user.roles.cache.find(r => r.name === 'specific role');

我的错误:

TypeError: Cannot read property 'cache' of undefined

【问题讨论】:

  • 它对我不起作用...
  • 我收到TypeError: Cannot read property 'cache' of undefined

标签: discord.js


【解决方案1】:

让我们首先声明用户没有角色,因此您必须获取guildMember

获取公会成员很容易;
首先,您必须获取用户所在的公会。例如:

var guild = client.guilds.cache.get('guild-id');

其次,您必须在该公会中找到用户。例如:

var member = guild.members.cache.get('user-id');

然后您将能够继续前进并获取角色

member.roles.cache.find(r => r.name === 'role-name');

完整示例:

const Discord = require('discord.js'); //Define discord.js
const client = new Discord.Client(); //Define the client

client.on('message' message => { //Event listener
    //Do something here
    var guild = client.guilds.cache.get(message.guild.id);
    var member = guild.members.cache.get(client.user.id);

    member.roles.cache.find(r => r.name === 'role-name');
});

client.login('token'); //Login

【讨论】:

  • 我不会鼓励人们使用 var。您也不是在获取角色,而是从缓存中获取它。
  • @Noah 如果一个公会被缓存了,那么它的角色也是如此
  • @Lioness100 他们说了“获取”这个词。这不是抓​​取。
  • @Noah 看,我们还没有来到 Stack Overflow 开始争论。我已将答案发布为在缓存中查找角色,因为这对我有用。如果它不适合你,欢迎你告诉我,我可以调整我的帖子。
  • 哦,对不起@Noah 我没注意到哈哈
【解决方案2】:

所以也许我没有很好地解释我的问题,但这是我发现为我工作的东西message.guild.me.roles.cache.find(r=> r.name === 'a role') 感谢大家帮助我!!!

【讨论】:

    【解决方案3】:

    您需要将用户解析为 GuildMember,因为用户没有角色。

    为此,您需要一个 Guild 类,之后您可以使用guild.member() 方法将其转换为成员

    const guild = client.guilds.cache.get('id of the guild'),
    member = guild.member(client.user.id);
    member.roles.cache.find(r=> r.name === 'name')
    

    您可能会遇到的另一个问题是成员常量未定义,这可以通过使用 guild.members.fetch(id) 或在 Discord 开发者门户中启用特权成员意图来解决

    【讨论】:

    • 我建议改用<Guild>.me
    • idk 为什么我会遇到同样的问题client.guilds.get is not a function
    • client.guilds 的所有公会都保存在缓存中,因此要找到您可能需要使用的某个公会:client.guilds.cache.get('id');
    • 好吧,我做到了,我为自己感到骄傲
    猜你喜欢
    • 2018-04-02
    • 2021-04-23
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多