无法联系到成员

2022-01-10 00:00:00 javascript discord.js

这是我在角色中显示成员的代码.但是当我为一个有很多成员的角色调用这个命令时,它只返回我的名字.我该如何解决?V12

this is my code for displaying members in a role. But when i call this command for a role that has a lot of members in, it only returns my name. How i can fix it? V12

let role;

if(message.mentions.roles.first() || message.guild.roles.cache.get(args[0])) {
    role    = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]);
    if(!role)
        return message.reply("I can't find this role!");
} else {
    let choosenRole = args.slice(0).join(" ");
    if(!choosenRole)
        return message.reply("Please type a role name to check.");

    role = message.guild.roles.cache.find(r => r.name === choosenRole);
    if(!role)
        return message.reply("I can't find this role!");

}

    let inrole = new Discord.MessageEmbed()
    .setColor("#09ba87")
    .setAuthor(`${role.name}(${role.members.size})`)
    .setDescription(`
・` + role.members.map(m => m.user.username + "#" + m.user.discriminator).join("
・"))

    let m = await message.channel.send(inrole);

推荐答案

您好,您的问题是由于 Discord Api 最近网关更改导致 Guild 缓存为空,您需要启用这里的意图是为您解决问题 -

Hey there your issue is because of recent gateway changes of the Discord Api that the Guild cache is empty , you need to enable the intents here is a fix for you -

  • 前往 Discord 开发者门户
  • 选择您的应用程序
  • 如果您向下滚动一点,在 bot 部分内,您将看到一个名为 Privileged Gateway Intents
  • 的部分
  • 启用SERVER MEMBERS INTENT并重启bot,你会发现你的缓存不限于小数!
  • Head over to Discord Developers Portal
  • Choose your application
  • Inside the bot section if you scroll a little bit down , you will see a section named Privileged Gateway Intents
  • Enable the SERVER MEMBERS INTENT and restart the bot and you will find your cache is not limited to small number!

如果这仍然无效,请尝试获取所有公会成员 - message.guild.members.fetch()在 Discord.js

If this still dosent work try fetching all guild members - message.guild.members.fetch() Learn more about intents at Discord.js

相关文章