Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

385
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda