dienst_echo_whatsappgroep/src/index.js
Eddy de Vink e4d817ff80 refactor: switch to dedicated group, remove @mention requirement, add pinned message service
- Change ALLOWED_GROUP to Dienst opvragen EdGPT-EBS (120363407613652082@g.us)
- Remove isBotMentioned check (no @mention needed)
- Match only exact 4-digit messages (regex /^\s*(\d{4})\s*$/)
- Add pinnedMessageService.js: auto-repins welcome message when expired
- Move incrementDaily() to count all 4-digit messages, not just successful ones
- Update daily summary with emoji
- Update docs and .env.example
2026-05-26 09:20:49 +02:00

50 lines
No EOL
1.5 KiB
JavaScript

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' }))
app.post('/webhook', async (req, res) => {
try {
await handleWebhook(req.body)
res.json({ success: true })
} catch (err) {
console.error('Webhook processing error:', err.message)
res.status(500).json({ success: false, error: err.message })
}
})
app.get('/health', (req, res) => {
res.json({ status: 'ok' })
})
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')
})