Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda