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.
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.¹
Debe await la función <message>.delete()> , ya que devuelve una promise :
await message.delete(); // Further codeOR²
message.delete() .then(msg => console.log(`Deleted message from ${msg.author.username}`)) .catch(error => console.log(error)) 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`); } } });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.