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

388
Views
¿Cómo eliminar mensajes de texto en un canal de solo imagen?

Hice un bot de discordia llamado SÍ, y tengo un canal de texto solo para imágenes, y estoy tratando de hacer que si hay un mensaje de texto, el bot lo elimine y responda "No puedes enviar mensajes de texto". También hice una lista blanca para el bot porque quiero que pueda enviar mensajes de texto.

 client.on("message", async message => { var usernames = ["YES"] if (usernames.includes(message.author.username)) { if (message.attachments.size > 0) { message.delete(); client.channels.cache.get("841260660960395287").send(message.author.username + ", you cannot send text") } } })

Esto no funciona en absoluto y no muestra ningún error.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Su declaración if (message.attachments.size > 0) está comprobando si el tamaño de la colección de archivos adjuntos es mayor que 0. Por lo tanto, solo ejecutará el código que contiene, si el mensaje tiene al menos un archivo adjunto.

Puedes aplicar esto:

 if (message.attachments.size)

Si el mensaje no tiene archivos adjuntos , la colección "archivos adjuntos" debe estar vacía y, en este caso, desea eliminar este mensaje.¹

También

Debe await la función <message>.delete()> , ya que devuelve una promise :

 await message.delete(); // Further code

OR²

 message.delete() .then(msg => console.log(`Deleted message from ${msg.author.username}`)) .catch(error => console.log(error))

Bueno saber:

No tienes que usar todos los '+' si quieres usar variables dentro de una cadena. Una solución más simple y mucho más rápida sería reemplazar ' con ` y luego envolver su variable en ${} . En tu código se vería así:

 client.channels.cache.get("841260660960395287").send(`${message.author.username}, you cannot send text`)

Su código fijo ahora debería verse así:

 client.on('message', async message => { var usernames = ['YES']; if (usernames.includes(message.author.username)) { if (message.attachments.size) { await message.delete(); client.channels.cache.get('841260660960395287').send(`${message.author.username}, you cannot send text`); } } });

Referencias

  • ¹ Expresiones y operadores
  • ² .then()
over 4 years ago · Santiago Trujillo Report

0

El problema aquí es con la lógica de su declaración if. Comprueba si el mensaje tiene más de un archivo adjunto y luego lo elimina. Ese es el problema, por lo que al verificar si el tamaño de la colección es 0 ( === 0 ), su programa se ejecutará correctamente.

over 4 years ago · Santiago Trujillo 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!