Discord.js Получить членство в гильдии по имени пользователя

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Я пытался получить имена пользователей всех участников на моем сервере discord
, однако он просто вернул 8-9 / 25 участников, включая 6 ботов

Вот мой код

 const list = client.guilds.cache.get(msg.guildId); 
list.members.cache.each(r => {
   console.log(r.user.username)
})
 

Кроме того, я также пробовал эти способы

 const list = client.guilds.cache.get(msg.guildId); 
   list.members.cache.array().forEach(r => {
      console.log(r.user.username)
})
 
 const user = client.users.cache.find(u => u.username == '//The Given username')
 
 const user = msg.guild.roles.cache.get('//The Main Role in my Server')
             .members.map(m => m.user.username == '//The given username')
 
 let user = client.users.cache.get('username', '//The given username');
 

Но иногда он просто возвращал мое и моего БОТА имя пользователя или undefined.

Я пытаюсь получить всех участников на сервере, и из этого я могу узнать, что у пользователя одно и то же имя пользователя с заданным именем пользователя, а не тегами или идентификаторами

Я включил намерения шлюза, но это не помогло

Пожалуйста, помогите с моим проектом, мне действительно нужны все ваши предложения

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

1. Итак, вы пытаетесь получить имена пользователей всех пользователей гильдии или конкретного пользователя по их имени пользователя?

Ответ №1:

Используется .fetch() для кэширования всех участников и их возврата. Убедитесь, что у вас есть GUILD_MEMBERS намерение:

 list.members.fetch().then(m => {
  let members = m.map(u => u.user.username)
  console.log(members) //array of all members
  //you can also use "m.each(u => console.log(u.user.username))" to log each one individually
})
 

Или используйте async-await

 const m = await list.members.fetch()
let members = m.map(u => u.user.username)
console.log(members)
 

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

1. после того, как я удалю .cache, это работает!! Большое спасибо