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

391
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 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