Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

309
Visualizações
Caché de actualización de Discord.js para extraer todos los miembros que tienen rol

Actualmente tiene problemas para extraer a todos los miembros que tienen un rol determinado. Actualmente puedo obtener una lista de nombres, pero solo aquellos que están almacenados en caché actualmente. Si dejo mi bot funcionando durante unas horas, extraerá más, pero nunca extraerá a todos los miembros que tienen ese rol. He leído algunas cosas diferentes sobre el uso del comando .fetch() pero aún no tengo dados.

 const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_VOICE_STATES, Intents.FLAGS.GUILD_MEMBERS ] }); msg.channel.send('exporting all members with delcared role'); msg.guild.roles.fetch('guildId');//cache roles i think? let role = msg.guild.roles.cache.find(r => r.name === 'Sysadmins'); msg.guild.members.fetch('roleId');//cache members i think? let list = msg.guild.roles.cache.get(roleID).members.map(m => m.nickname) console.log(role); console.log(list);

La consola.log(); devuelve mi apodo como se esperaba, pero solo el mío y sé que hay al menos otros 10 con este rol.

Otras preguntas similares que ya he intentado:

Pregunta similar #1

Pregunta similar #2

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

@DanLop, su respuesta junto con @MrMythical y algunas otras preguntas de desbordamiento de pila me ayudaron a resolver esta. Pude usar las funciones asíncronas correctamente para extraer todos los datos que necesito a continuación, es lo que terminé.

Solución:

 client.on('messageCreate', async msg => { //TODO here }); let list = client.guilds.cache.get(tempGuildId); try { await list.members.fetch(); let role1 = list.roles.cache.get(roleId).members.map(m => m.displayName); console.log(role1); } catch (err) { console.error(err); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Es cercano, pero mucho más simple, con 3 líneas.

 await msg.guild.members.fetch() // fetch all members and cache them const role = msg.guild.roles.cache.get("id") // get role from cache by ID (roles are always cached) const list = role.members.map(m => m.nickname) // map members by nickname
about 4 years ago · Juan Pablo Isaza Relatório

0

Dado que le está dando al método fetch() un argumento String, solo se buscará el usuario que coincida con ese String, más como un get() . Además, el método fetch() devuelve una Promesa, lo que significa que se debe esperar al método para recibir los datos.

Tu método fetch() debería verse así:

 await msg.guild.members.fetch();

De esta manera, le dice a Node.js que debe esperar hasta que reciba los datos prometidos antes de continuar.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda