Creé un sistema de lista negra de palabras que funciona decentemente, elimino todos los espacios del contenido del mensaje, luego uso expresiones regulares para buscar palabras en la lista negra y, si hay una coincidencia, elimino el mensaje.
const msgContent = message.content.replace(/\s/g, ''); let foundBlacklist = false; for (const word of data.Words) { const regex = new RegExp(`${word}`, 'gi'); if (regex.test(msgContent)) { foundBlacklist = true; } } if(foundBlacklist) message.delete().catch(err => console.log(`There was an error trying to delete that message: ${err}`)) El problema es que es muy fácil usar Markdown para omitir esto, si bad es una palabra en la lista negra, simplemente hacer b*a*d para ponerla en cursiva, haría que el contenido del mensaje fuera b*a*d y la expresión regular no t partido Por supuesto, esto se aplica al subrayado, al tachado... etc., donde b__ad__ o **b**ad , etc. tampoco coincidirán.
¿Cómo se podría prevenir esto?