Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

224
Vistas
Discord.JS Palabras/filtros prohibidos personalizables

Estoy tratando de hacer un filtro de palabras prohibidas de discordia que sea personalizable por servidor, similar a como lo hacen MEE6, Dyno, etc.

Actualmente tengo el servidor y las palabras especificadas guardadas en una base de datos. Lo que tengo actualmente para filtrar estas palabras es hacer una búsqueda en la base de datos en cada uno de los mensajes enviados y estoy seguro de que no es una buena idea.

código de ejemplo:

 client.on("messageCreate", async message => { sql.query(`SELECT * FROM words WHERE serverid = ${serverID}`, (err, res) => { let words = res[0] for (let i in words) { if(message.content.includes(words[i])) return message.delete() } }) })

Pensé que este método sería increíblemente lento e ineficiente cuando se envían miles de mensajes simultáneamente, me pregunto si hay una mejor manera de hacerlo almacenando las palabras en un caché/mapa o algo así, gracias.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ejecutaría esa consulta solo cuando se inicie el bot y la almacenaría dentro de un objeto en el objeto del cliente para poder acceder fácilmente sin tener que depender del objeto global.

 client.wordFilters = {} // for every server id sql.query(`SELECT * FROM words WHERE serverid = ${serverID}`, (err, res) => { client.wordFilters[serverID] = [...res] // assuming res is an array of banned words // or you need to turn it into an array first // or just use it as an object, use it as how you see fit })

luego, cada vez que se agregue una nueva palabra prohibida, no olvide enviarla también a la matriz dentro client.wordFilters[serverID]

 client.on("messageCreate", async message => { // assuming the res object above is an array for (let i = 0; i < client.wordFilters[serverID]; i++){ let word = client.wordFilters[serverID][i] if(message.content.includes(word)) return message.delete() } })
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda