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
This commit is contained in:
parent
5b83076b33
commit
e4d817ff80
5 changed files with 96 additions and 35 deletions
41
README.md
41
README.md
|
|
@ -1,16 +1,17 @@
|
|||
# Dienst Bot
|
||||
|
||||
> Dit project is gemaakt door middel van vibecoding met [OpenCode 1.14.40](https://opencode.ai) en Z.AI/GLM-5.1.
|
||||
> Dit project is gemaakt door middel van vibecoding met [OpenCode 1.14.40](https://opencode.ai).
|
||||
|
||||
> De feature ratelimiting is gemaakt door middel van vibecoding met [OpenCode 1.14.40](https://opencode.ai) en Deepseek v4 Pro
|
||||
|
||||
WhatsApp bot die dienstschema's (PNG) verstuurt op basis van een dienstnummer in een WhatsApp groep, en dagelijks een samenvatting stuurt.
|
||||
WhatsApp bot die dienstschema's (PNG) privé verstuurt op basis van een 4-cijferig dienstnummer, gepost in een speciale WhatsApp groep.
|
||||
|
||||
## Hoe het werkt
|
||||
|
||||
1. Iemand tagt **@EdGpt** in de toegestane groep met een 4-cijferig dienstnummer (bijv. `@EdGpt 4002`)
|
||||
1. Iemand stuurt een **4-cijferig dienstnummer** in de groep (bijv. `4002`)
|
||||
2. De bot zoekt het dienstschema op in `dienst-tijden.json`
|
||||
3. De bijbehorende PNG-bestanden worden privé naar de afzender gestuurd
|
||||
3. De bijbehorende PNG-bestanden worden **privé** naar de afzender gestuurd
|
||||
4. Via een **vastgezet welkomstbericht** in de groep staat uitleg over het gebruik
|
||||
|
||||
De bot gebruikt een **speciale groep** (Dienst opvragen EdGPT-EBS) waarin **elk bericht dat uit exact 4 cijfers bestaat** wordt verwerkt. Geen @mention nodig.
|
||||
|
||||
## Vereisten
|
||||
|
||||
|
|
@ -38,8 +39,7 @@ WHATSAPP_SESSION=EdGpt
|
|||
|
||||
# Webhook
|
||||
WEBHOOK_PORT=3002
|
||||
ALLOWED_GROUP=120363407356808413@g.us
|
||||
BOT_NAME=EdGpt
|
||||
ALLOWED_GROUP=120363407613652082@g.us
|
||||
|
||||
# Bestanden
|
||||
DIENSTEN_JSON=./diensten/dienst-tijden.json
|
||||
|
|
@ -114,14 +114,23 @@ npx pm2 logs dienst-bot
|
|||
|
||||
```
|
||||
src/
|
||||
index.js # Express webhook server + cron job
|
||||
messageHandler.js # Berichtverwerking en filtering
|
||||
rateLimiter.js # Spam protectie (max 5 per dag)
|
||||
dailyStats.js # Dagelijkse aanvraag-teller
|
||||
dienstService.js # JSON lookup en PNG bestandspaden
|
||||
whatsappApi.js # WhatsApp API client (bericht + afbeelding)
|
||||
index.js # Express webhook server + cron job
|
||||
messageHandler.js # Berichtverwerking en filtering
|
||||
rateLimiter.js # Spam protectie (max 5 per dag)
|
||||
dailyStats.js # Dagelijkse aanvraag-teller
|
||||
dienstService.js # JSON lookup en PNG bestandspaden
|
||||
whatsappApi.js # WhatsApp API client (bericht + afbeelding)
|
||||
pinnedMessageService.js # Vastgezet welkomstbericht beheer
|
||||
```
|
||||
|
||||
## Welkomstbericht
|
||||
|
||||
De groep heeft een **vastgezet welkomstbericht** dat automatisch door EdGpt wordt herplaatst als het is verlopen (30 dagen). De tekst luidt:
|
||||
|
||||
> *Welkom in Dienst opvragen EdGpt-EBS. Stuur hier je 4 cijferige dienstnummer en EdGpt zal het prive naar je toe sturen, alleen 4 cijfers meer niet.*
|
||||
|
||||
Bij elke interactie met de groep controleert de bot of het pinned bericht nog bestaat en plaatst het opnieuw indien nodig.
|
||||
|
||||
## Foutafhandeling
|
||||
|
||||
- **Ongeldig dienstnummer**: de bot stuurt een melding terug naar de afzender
|
||||
|
|
@ -134,10 +143,10 @@ Elke gebruiker kan maximaal `MAX_REQUESTS_PER_DAY` (standaard 5) diensten per da
|
|||
|
||||
## Dagelijkse samenvatting
|
||||
|
||||
Elke dag om **10:00** stuurt de bot een WhatsApp-bericht naar `ADMIN_NUMBER` met het totaal aantal dienstaanvragen van de vorige dag (00:00 t/m 23:59).
|
||||
Elke dag om **10:00** stuurt de bot een WhatsApp-bericht naar `ADMIN_NUMBER` met het totaal aantal **alle** 4-cijferige berichten van de vorige dag (00:00 t/m 23:59).
|
||||
|
||||
```
|
||||
Aantal dienstaanvragen gisteren: N
|
||||
📊 Aantal dienstaanvragen gisteren: N
|
||||
```
|
||||
|
||||
De teller wordt bijgehouden in memory door `dailyStats.js` en gereset na verzending van de samenvatting. De scheduling gebruikt `node-cron` (`0 10 * * *`).
|
||||
|
|
|
|||
Loading…
Reference in a new issue