Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

210
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!