From fbdcef7bcaf11721e526c1252e29c84e32ef46d8 Mon Sep 17 00:00:00 2001 From: Minz Date: Sat, 17 Jan 2026 13:47:15 +0100 Subject: [PATCH] Add receipt day announcements --- timers/receiptTimer.js | 45 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 timers/receiptTimer.js diff --git a/timers/receiptTimer.js b/timers/receiptTimer.js new file mode 100644 index 0000000..ea2a1be --- /dev/null +++ b/timers/receiptTimer.js @@ -0,0 +1,45 @@ +module.exports = { + timeout: 1000, + immediate: false, + name: 'Receipt Day Announcements', + data: { + channelId: '1462060674766344370', + targetHour: 0, + targetMinute: 1 + }, + async tick(client, timer) { + try { + // 1. Send the message + const currentDate = new Date().toLocaleDateString(); + const channel = await client.channels.fetch(timer.data.channelId); + if (channel) await channel.send(`Current date is ${currentDate}`); + + } catch (error) { + console.error('[TIMER] Error:', error); + } finally { + // 2. Schedule the NEXT tick manually + this.scheduleNext(client, timer); + } + }, + + scheduleNext(client, timer) { + const now = new Date(); + const next = new Date(); + + next.setHours(timer.data.targetHour, timer.data.targetMinute, 0, 0); + + if (next <= now) { + next.setDate(next.getDate() + 1); + } + + const delay = next.getTime() - now.getTime(); + + if (timer.instance) clearTimeout(timer.instance); + + timer.instance = setTimeout(() => { + this.tick(client, timer); + }, delay); + + console.log(`[TIMER] Next message scheduled for: ${next.toLocaleString()}`); + } +}; \ No newline at end of file