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

218
Visualizações
no se puede comparar la marca de tiempo del mensaje con x cantidad de días

Hola, estoy tratando de eliminar mensajes que tienen 7 días. Estoy usando cron para programar cuándo debería suceder esto. Aquí, en mi código, intento obtener mensajes de un canal llamado log_channel y luego comparo las marcas de tiempo de los mensajes con const days = moment().add(7, 'd'); Sin embargo, estoy atascado en la declaración if (msgs - days) ya que esto no parece devolver nada.

Aquí está mi código de referencia:

 const cron = require('node-cron'); const moment = require('moment'); module.exports = new Event("ready", client => { try{ const log_channel = client.channels.cache.find(c => c.name == "log") cron.schedule("0 18 22 * * *", function(){ console.log("Attempting to purge log messages..."); const days = moment().add(7, 'd'); // use moment the set how many days to compare timestamps with // log_channel.messages.fetch({ limit: 100 }).then(messages => { const msgs = Date.now(messages.createdTimestamp) if (msgs < days){ log_channel.bulkDelete(100) console.log("messages deleted") } }) })
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En primer lugar, noté que su función no era una función asíncrona. Necesitamos usar una función asíncrona porque usaremos un comportamiento asíncrono basado en promesas en su código. log_channel.messages.fetch debe await log_channel.messages.fetch De acuerdo con los documentos Message#fetch() El método fetch() en este caso simplemente devuelve un objeto de mensaje asíncrono. Promesa.

La siguiente parte es que te perdiste ForEach() , forEach() ejecuta la función callbackFn una vez para cada elemento de la matriz.

Finalmente, también está comparando la marca de tiempo (un copo de nieve) con un objeto de momento que no funcionará y la razón por la que if no es verdadero. Si desea recibir mensajes 7 días antes, puede hacer algo como este moment.utc(msg.createdTimestamp).add( -7, 'd') esto devolverá todas las marcas de tiempo 7 días antes de los últimos 100 mensajes. Tenga en cuenta que Discord API lo limita a 14 días, así que téngalo en cuenta.

 cron.schedule("* 18 22 * * *", async function(){ console.log("Attempting to purge mod log messages..."); await log_channel.messages.fetch({ limit: 100 }) .then(messages => { messages.forEach(msg => { const timestamp = moment.utc(msg.createdTimestamp).add( -7, 'd'); if (timestamp) { log_channel.bulkDelete(5); } else { return; } })
about 4 years ago · Juan Pablo Isaza 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