WhatsApp bot die dienstschema PNGs verstuurt op dienstnummer
  • JavaScript 77.9%
  • Shell 22.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-11 20:10:42 +02:00
docs/superpowers feat: complete dienst-bot v1.0 - webhook receiver, PNG sender, PM2 ready 2026-05-11 19:00:05 +02:00
src feat: integrate rate limiter into message handler 2026-05-11 20:07:07 +02:00
.env feat: scaffold project with dependencies and env config 2026-05-11 18:49:11 +02:00
.env.example feat: add rate limiting config option 2026-05-11 20:10:42 +02:00
.gitignore feat: add README, .env.example, fix mention detection with spaces, add diensten to .gitignore 2026-05-11 19:38:11 +02:00
package-lock.json feat: scaffold project with dependencies and env config 2026-05-11 18:49:11 +02:00
package.json feat: scaffold project with dependencies and env config 2026-05-11 18:49:11 +02:00
README.md docs: add vibecoding credits to README 2026-05-11 19:57:12 +02:00

Dienst Bot

Dit project is gemaakt door middel van vibecoding met OpenCode 1.14.40 en Z.AI/GLM-5.1.

WhatsApp bot die dienstschema's (PNG) verstuurt op basis van een dienstnummer in een WhatsApp groep.

Hoe het werkt

  1. Iemand tagt @EdGpt in de toegestane groep met een 4-cijferig dienstnummer (bijv. @EdGpt 4002)
  2. De bot zoekt het dienstschema op in dienst-tijden.json
  3. De bijbehorende PNG-bestanden worden privé naar de afzender gestuurd

Vereisten

  • Node.js 18+
  • wwebjs-api Docker container (poort 3000)
  • WhatsApp sessie "EdGpt" actief in wwebjs-api
  • PM2 (optioneel, voor procesbeheer)

Installatie

git clone <repo-url>
cd dienst_echo_whatsappgroep
npm install

Configuratie

Kopieer .env.example naar .env en vul de waarden in:

# WhatsApp API
WHATSAPP_API_ENDPOINT=http://localhost:3000
WHATSAPP_SESSION=EdGpt

# Webhook
WEBHOOK_PORT=3002
ALLOWED_GROUP=120363407356808413@g.us
BOT_NAME=EdGpt

# Bestanden
DIENSTEN_JSON=./diensten/dienst-tijden.json
DIENSTEN_PNG=./diensten/png

# Admin
ADMIN_NUMBER=31620248011@c.us

wwebjs-api webhook config

In de .env van wwebjs-api:

BASE_WEBHOOK_URL=http://host.docker.internal:3002/webhook
ENABLE_LOCAL_CALLBACK_EXAMPLE=FALSE
ENABLE_WEBHOOK=TRUE

Belangrijk: gebruik docker compose up -d (niet docker restart) om .env wijzigingen door te voeren.

Data

De map diensten/ bevat:

  • dienst-tijden.json — array met dienstmetadata:
    [
      {
        "dienstnummer": "4002",
        "startTime": "09:30",
        "endTime": "10:30",
        "paginas": [
          { "bestandsnaam": "4002-001.png" },
          { "bestandsnaam": "4002-002.png" }
        ]
      }
    ]
    
  • png/ — PNG bestanden met dienstschema's (bijv. 4002-001.png)

Beide zijn uitgesloten van git via .gitignore.

Gebruik

Starten

npm start

Of met PM2:

npx pm2 start src/index.js --name dienst-bot
npx pm2 save

Stoppen

npx pm2 stop dienst-bot

Logs bekijken

npx pm2 logs dienst-bot

Projectstructuur

src/
  index.js           # Express webhook server
  messageHandler.js  # Berichtverwerking en filtering
  dienstService.js   # JSON lookup en PNG bestandspaden
  whatsappApi.js     # WhatsApp API client (bericht + afbeelding)

Foutafhandeling

  • Ongeldig dienstnummer: de bot stuurt een melding terug naar de afzender
  • Fout bij verzenden PNG: de admin krijgt een WhatsApp melding
  • Webhook fout: wordt gelogd in PM2 logs

Licentie

Privé project — niet voor distributie.