¿Hay alguna manera de detener esto? Si comprueba la base de datos en busca de palabras, por ejemplo (ESTÁN, HACIENDO) Si se ha enviado un mensaje como este: (cómo estás) activa 2x eliminar mensaje y 2x mi mensaje.
así es como lo tengo configurado:
Database12.find(guild, async(err, data) => { splittedMsgs.map((content) =>{ if(message.content.bot) return if (data.Words.includes(content.toLowerCase())){ //deletes the bad message message.delete() // reply a message when a bad word has been detected message.reply(replies[random]) .then(msg => { let time = "5s"; setTimeout(function () { // if (message.author.bot) return; //deletes the detected message msg.delete(); }, ms(time)); }) .catch(console.log("error")); }; }); });Intenté muchas veces, pero no encuentro una manera de detenerlo cuando se detectan 2 palabras al mismo tiempo en un mensaje.
Saludos
Podría considerar usar Array.some . De esa manera, dejará de recorrer la matriz, si un elemento dado se resuelve como verdadero:
Database12.find(guild, async (err, data) => { if (message.content.bot) return if (splittedMsgs.some((content) => data.Words.includes(content.toLowerCase()))) { //deletes the bad message message.delete() // reply a message when a bad word has been detected message.reply(replies[random]) .then(msg => { let time = "5s"; setTimeout(function () { // if (message.author.bot) return; //deletes the detected message msg.delete(); }, ms(time)); }) .catch(console.log("error")); } }); Además, siempre debe usar el método de matriz correcto. Usó Array.map , que normalmente se usa para crear una nueva matriz mientras cambia cada elemento de la matriz dada, consulte aquí . Si solo desea iterar sobre cada elemento (sin cambiarlo), debe usar Array.forEach en lugar de ver here .
Si está interesado, aquí hay un artículo con una breve explicación y ejemplos sobre algunos métodos de matriz.