Выборка всех пользователей с сервера Discord

#discord #discord.js

#Discord #discord.js

Вопрос:

У меня проблема с выборкой данных всех пользователей на сервере. В настоящее время, когда я попробовал первый метод, я получил только 21 человек (модов, администраторов и ботов онлайн) вместо всех 546 человек на нем. Я нашел второй метод с .fetch() помощью, но он возвращает мне 0 пользователей, поэтому я думаю, что я использую его неправильно (но он не дает мне никаких ошибок, например, когда я пытался использовать await и forEach() после). Цель этого бота — ежедневно обновлять рейтинг для каждого пользователя, rankUpAll() работает просто отлично.

 const job = new CronJob('29 18 * * *', function () {
  const guild = client.guilds.cache.get(serverId);
  let Embed = new Discord.MessageEmbed()
    .setColor('#FFC900')
    .setFooter('~~~ qbeczek', 'https://i.imgur.com/xutibOg.png')
    .setTitle('Cześć!');
  let seenUser = 0;
  let listOfUsers;
  guild.members.cache.forEach(member => {
    seenUser  ;
    // if (member.id == myid) {
    //   rankUpAll(member, guild, Embed);
    // }
  });
  console.log(`Fetched: ${seenUser}`);
  seenUser = 0;
  const wait = new Promise(() => { listOfUsers = guild.members.fetch() });
  Promise.all([wait]).then((values) => {
    listOfUsers.forEach(member => {
      //console.log(member.displayName);
      seenUser  ;
      // if (member.id.match(myid)) {
      //   rankUpAll(member, guild, Embed);
      // }
    })
  });
  console.log(`Fetched: ${seenUser}`);
}, null, true, 'Poland');
job.start();
})
 

Ответ №1:

Вам необходимо включить намерение участников сервера: «Если ваш бот отслеживает участников сервера или загружает весь список участников, вам может понадобиться намерение участников сервера для получения событий участников и списка участников».

Вы можете прочитать некоторую информацию о намерениях здесь: https://discordjs.guide/popular-topics/intents.html

Комментарии:

1. Мне нужно переключаться только SERVER MEMBERS INTENT внутри портала разработчиков discord или мне нужно снова запустить и добавить бота на сервер?

2. Переключите НАМЕРЕНИЕ УЧАСТНИКА СЕРВЕРА внутри панели.

3. По-прежнему ничего не меняется, результаты первого зависят от онлайн-администраторов, а второй по-прежнему дает мне 0 онлайн