Не удается связаться с участниками

#javascript #discord.js

#javascript #discord.js

Вопрос:

это мой код для отображения участников в роли. Но когда я вызываю эту команду для роли, в которой много участников, она возвращает только мое имя. Как я могу это исправить? 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(`n・`   role.members.map(m => m.user.username   "#"   m.user.discriminator).join("n・"))

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

Ответ №1:

Привет, ваша проблема заключается в том, что из-за недавних изменений шлюза Discord Api Guild кэш пуст, вам необходимо включить намерения, вот исправление для вас -

  • Перейдите на портал разработчиков Discord
  • Выберите свое приложение
  • Внутри bot раздела, если вы прокрутите немного вниз, вы увидите раздел с именем Privileged Gateway Intents
  • Включите SERVER MEMBERS INTENT и перезапустите бота, и вы обнаружите, что ваш кэш не ограничен небольшим количеством!

Если это все еще не работает, попробуйте выбрать всех членов гильдии - message.guild.members.fetch() подробнее о намерениях на Discord.js