diff --git a/package-lock.json b/package-lock.json index 8698c05..aa4225f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "dependencies": { "axios": "^1.6.0", "dotenv": "^16.4.0", - "express": "^4.18.0" + "express": "^4.18.0", + "node-cron": "^4.2.1" } }, "node_modules/accepts": { @@ -658,6 +659,15 @@ "node": ">= 0.6" } }, + "node_modules/node-cron": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.2.1.tgz", + "integrity": "sha512-lgimEHPE/QDgFlywTd8yTR61ptugX3Qer29efeyWw2rv259HtGBNn1vZVmp8lB9uo9wC0t/AT4iGqXxia+CJFg==", + "license": "ISC", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", diff --git a/package.json b/package.json index 1e07eb6..f99a483 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "dependencies": { "axios": "^1.6.0", "dotenv": "^16.4.0", - "express": "^4.18.0" + "express": "^4.18.0", + "node-cron": "^4.2.1" } } diff --git a/src/index.js b/src/index.js index 8a9c0c7..a8d9901 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,10 @@ require('dotenv').config() +const cron = require('node-cron') const express = require('express') const { handleWebhook } = require('./messageHandler') const { loadDiensten } = require('./dienstService') +const { resetDay, getYesterdayTotal } = require('./dailyStats') +const { sendTextMessage } = require('./whatsappApi') const app = express() app.use(express.json({ limit: '10mb' })) @@ -24,8 +27,24 @@ const PORT = process.env.WEBHOOK_PORT || 3002 loadDiensten() +cron.schedule('0 10 * * *', () => { + const adminNumber = process.env.ADMIN_NUMBER + if (!adminNumber) { + console.error('ADMIN_NUMBER not configured, skipping daily summary') + return + } + + resetDay() + const total = getYesterdayTotal() + + sendTextMessage(adminNumber, `Aantal dienstaanvragen gisteren: ${total}`) + .then(() => console.log(`Daily summary sent: ${total} requests`)) + .catch(err => console.error('Failed to send daily summary:', err.message)) +}) + app.listen(PORT, () => { console.log(`dienst-bot listening on port ${PORT}`) console.log(`Allowed group: ${process.env.ALLOWED_GROUP}`) console.log(`Bot name: ${process.env.BOT_NAME}`) -}) + console.log('Daily summary cron job scheduled for 10:00') +}) \ No newline at end of file