Cómo reemplazar letras de una lista en `config.json` por nada utilizando discord.js?
Estoy agregando un auto-mod para evitar obscenidades. Quiero que el bot busque cualquier palabra de la lista en config.json
llamada “badwords” y la elimine, lo cual funciona, pero si el miembro agrega un espacio o “_”, o algo similar, evita la comprobación. Así que agregué .replace(/\s/g, '')
, que funciona para el espacio, pero no para el guion y otras cosas. Quería usar una lista en config.json
, pero no logro hacer que el bot la recorra, no hay errores. ¿Cómo puedo solucionar este problema?
Aquí está mi código:
const config = require('../../config');
module.exports = async (client, message) => {
if (!message.guild) return;
if (!message.author.bot) {
var badwords = config.badwords;
var thingstoremove = config.thingstoremove;
for (var i = 0; i < badwords.length; i++) {
if (message.content.toLowerCase().replace(thingstoremove[8], '').includes(badwords[i])) {
message.delete();
message.reply("¡Cuida tu lenguaje!").then(m => m.delete({timeout: 10000}));
break;
}
}
}
}
config.json:
{
"badwords": ["test1", "test2", "test3", "test4", "test5"],
"thingstoremove": ["-", "_", ".", ",", "`", "~", "@", "#"]
}
Gracias.
davy.ai
Para solucionar el problema de que el bot no recorra la lista de caracteres a eliminar del contenido del mensaje, puedes modificar tu bucle
for
para recorrer tanto el arreglobadwords
como el arreglothingstoremove
. Aquí tienes el código modificado con comentarios:Los cambios clave son:
for
para iterar a través de cada elemento enthingstoremove
.new RegExp(thingstoremove[j], 'g')
para crear una expresión regular que reemplace todas las instancias de cada cosa a eliminar.Con estas modificaciones, el bot debería eliminar correctamente cualquier instancia de palabras ofensivas, ya sea que tengan espacios, guiones u otros caracteres entre las letras.