Estoy agregando una modificación automática para jurar, quiero que el bot busque cualquier palabra de la lista en config.json llamada "malas palabras" y la elimine, lo cual funciona, pero si el miembro agrega "" (espacio) o " _" o algo así, omite la verificación, así que agregué .replace(//s/g,'') que funciona para el espacio, pero para el tablero y otras cosas, quería usar una lista en config.json , pero parece que no puedo hacer que el bot se ejecute a través de la lista, no hay errores, entonces, ¿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("Watch your language!").then(m => m.delete({timeout: 10000})) break; } } } }config.json:
{ "badwords": ["test1", "test2", "test3", "test4", "test5"], "thingstoremove": ["-", "_", ".", ",", "`", "~", "@", "#"] }Gracias.
Use este simple de una sola línea para obtener la cadena completamente reemplazada
let newStr = thingstoremove.reduce((a, c) => a.replaceAll(c, ""), message.content)Y luego una simple verificación con esto:
if (badwords.some(b => newStr.includes(b))) { message.delete() message.reply("Watch your language!").then(m => m.delete({ timeout: 10000 })) }El problema es:
thingstoremove[8].replace , en lugar de un solo elemento.Por lo tanto, debe crear un conjunto de caracteres de la matriz en la expresión regular para capturar cualquiera de los caracteres y reemplazarlos:
const regex = new RegExp(`[${thingstoremove.join('')}]`, 'g') Y luego use la expresión regular en .replace :
if (message.content.toLowerCase().replace(regex, '').includes(badwords[i]))Código resultante:
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; const regex = new RegExp(`[${thingstoremove.join('')}]`, 'g') console.log(regex) for (var i = 0; i < badwords.length; i++) { if (message.content.toLowerCase().replace(regex, '').includes(badwords[i])) { message.delete() message.reply("Watch your language!").then(m => m.delete({timeout: 10000})) break; } } } }