Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

170
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!