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

217
Vistas
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 Respuestas
Responde la pregunta

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 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