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

171
Visualizações
Buscando un mensaje sin conocer el canal exacto [discord.js]

Estoy tratando de obtener contenido de mensaje específico en el servidor por su ID, pero sin conocer el canal exacto. Este es el código que estoy usando:

 message.guild.channels.cache.filter(c => c.type === 'GUILD_TEXT').each((c) => { console.log(c.messages.cache.get("ID").content) })

pero lo único que obtengo al final es:

 TypeError: Cannot read properties of undefined (reading 'content')

¡Realmente agradecería si alguien me ayuda a encontrar una forma más óptima de hacerlo o arreglar el mío!

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

0

Esto es lo que encontré para trabajar...

 message.guild.channels.cache.filter(c => c.type === 'GUILD_TEXT').each(async c => { let getMsg = async () => { let msg = await c.messages.fetch(/* ID HERE */).catch(err => err) return msg } getMsg().then(msg => { if(msg.content !== undefined){ console.log(msg.content) message.reply(` Content: **${msg.content}**\n\n Author: **<@${msg.author.id}>**\n\n Channel: **<#${msg.channel.id}>** `) } }) })

Cómo funciona esto...

El problema...

Estabas tratando de analizar grandes cantidades de datos en un tiempo muy rápido, mucho más rápido de lo que te permite la api de discord. Así que hice una función asíncrona para devolver el mensaje a un ritmo que Discord te permite sin errores.

La función getMsg() ...

Dentro de la función getMsg() , awaited una fetch para todos los canales. la función .catch() al final es crucial; de lo contrario, finalizará su proceso con un código de error.

Llamando a la función...

Luego llamé a la función y esperé que terminara, luego verifiqué si el message.content El contenido que recibió no estaba undefined , porque por alguna extraña razón, si no lo hago, arrojará un error, creo que es porque está tratando de registrar todos los canales. return en el mensaje y no todos los canales pudieron recuperarlo, lo que provoca el error.

Extra...

También lo agregué para responderle con el contenido del mensaje, el autor y el canal, solo para darle una idea de a qué puede acceder con el mensaje devuelto, pero eso se puede quitar fácilmente si no lo desea.


no increíblemente optimizado pero hace lo que quieres :)

about 4 years ago · Juan Pablo Isaza Relatório

0

Maneje la posibilidad de .get() regrese indefinido, ya sea con un encadenamiento condicional u opcional.

 message.guild.channels.cache.filter(c => c.type === 'GUILD_TEXT').each((c) => { console.log(c.messages.cache.get("ID")?.content) // Or if (c.messages.cache.get("ID")) { console.log(c.messages.cache.get("ID").content); } })

Recomendaría un enfoque diferente. Para obtener un código más legible, use algunas variables, luego use el método find() .

 const textChannel = message.guild.channels.cache .filter(c => c.type === 'GUILD_TEXT') .find(c => c.messages.cache.has('ID')); if (!textChannel) return console.log("No result"); const msg = textChannel.messages.cache.get('ID'); console.log(msg.content);
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