# Multi-Channel-Erweiterung für Boardgame.network — Analyse & Implementierungsplan

> **Für:** Daniel Krause (brettspiel-news.de)  
> **Datum:** 18.06.2026  
> **Status:** Analyse & Priorisierung

---

## Ist-Zustand

Das aktuelle Intake-System (`app.py` auf Port 5002) unterstützt:

| Kanal | Status | Einträge in DB | Technik |
|---|---|---|---|
| **WhatsApp** | ✅ Live | 15 | Meta Cloud API Webhook `/whatsapp/webhook` |
| **Web-Formular** | ✅ Live | 7 | `/api/submit` (Multipart-Formular) |
| **Telegram** | ⚠️ 1 Test-Eintrag | 1 | Nicht im Chatbot implementiert — wird extern behandelt |

Der existierende Meta System User Token (permanent, expires: 0) hat bereits folgende Scopes:
- `instagram_basic` ✅
- `instagram_content_publish` ✅  
- `pages_read_engagement` ✅
- `pages_show_list` ✅
- `whatsapp_business_management` ✅
- `whatsapp_business_messaging` ✅

**Das bedeutet:** Instagram und Facebook Messenger könnten über die bestehende Meta-Infrastruktur integriert werden, ohne neue Berechtigungen!

---

## Kanal-Analyse (sortiert nach Geschwindigkeit der Umsetzbarkeit)

### 🔥 Kanal 1: Telegram (Bot API) — *schnellster Gewinn*

| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 3–4 Stunden |
| **API-Typ** | Offizielle REST API, sehr gut dokumentiert |
| **Integration** | Webhook-Pattern wie WhatsApp: Telegram POSTed Updates → unser Endpoint antwortet |
| **Message-Typen** | Text, Foto, Video, Audio, Voice, Standort, Dokumente |
| **Kosten** | Kostenlos |
| **DSGVO** | ⚠️ Telegram ist in Dubai ansässig, Server global verteilt. Datenschutzerklärung muss Telegram als Auftragsverarbeiter nennen. ABER: Nutzer wählen Telegram selbst → ihre Entscheidung. Keine Gesundheitsdaten o.Ä. → vertretbares Risiko. |

**Technische Umsetzung:**
- Bot via @BotFather erstellen → API-Token
- Neuer Endpoint: `POST /telegram/webhook` in `app.py`
- Webhook-URL setzen: `https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://chat.datenhimmel.work/telegram/webhook`
- Parser-Funktion: Telegram-Update → Submission-DB-Schema mappen
- Media-Download via `https://api.telegram.org/file/bot<TOKEN>/<file_path>`
- Anti-Spam: Gleiche GDPR-Lösch-Logik wie WhatsApp

**Status:** Ein Test-Eintrag existiert bereits in der DB → Telegram wurde schon mal angetestet. Jetzt sauber implementieren.

---

### 🔥 Kanal 2: Instagram Direct Messages — *Meta-API, fast geschenkt*

| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 4–6 Stunden |
| **API-Typ** | Meta Graph API (gleiche Infrastruktur wie WhatsApp!) |
| **Integration** | Instagram Professional Account an App koppeln → Webhook konfigurieren → Nachrichten landen im gleichen Webhook-Endpoint |
| **Message-Typen** | Text, Bilder, Videos, Story-Replies, Link-Attachments |
| **Kosten** | Kostenlos (Teil der Meta Graph API) |
| **DSGVO** | ⚠️ Meta = US-Konzern. ABER: Gleiche Rechtsgrundlage wie WhatsApp-Integration. Standardvertragsklauseln. Datenschutzerklärung ist bereits Meta-konform (WhatsApp-Teil). Instagram DM ist weniger invasiv als WhatsApp (keine Telefonnummer zwingend erforderlich). |

**Technische Umsetzung:**
1. Instagram Professional Account mit der Meta-App "Brettspiel-News.de" verbinden
2. Im Meta Developer Dashboard: Webhook-Produkt `instagram` hinzufügen
3. Webhook-Feld `messages` abonnieren → Test-Send von Instagram
4. Neuer Handler in `app.py` für Instagram-Events (gleicher Webhook-Endpoint, anderer `object`-Typ: `instagram`)
5. Message-Format-Mapper: Instagram-Nachricht → Submission-Schema
6. Media-Download via Instagram Graph API (Media-URLs sind kurzlebig — direkt downloaden!)

**PITFALL:** Instagram-Webhooks nutzen das GLEICHE Webhook-Endpoint-Format wie WhatsApp, aber mit `"object": "instagram"` statt `"object": "whatsapp_business_account"`. Kann also im selben `/whatsapp/webhook`-Endpoint behandelt werden — nur eine Fallunterscheidung nötig.

---

### 🔥 Kanal 3: Facebook Messenger — *größte Reichweite unter Brettspielern*

| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 6–8 Stunden |
| **API-Typ** | Meta Graph API (Send/Receive API) |
| **Integration** | Facebook Page an App koppeln → Webhook konfigurieren → Nachrichten verarbeiten |
| **Message-Typen** | Text, Bilder, Videos, Audio, Dateien, Quick Replies, Templates |
| **Kosten** | Kostenlos (24h-Standard-Messaging-Fenster, danach nur Message-Tags) |
| **DSGVO** | ⚠️ Wie Instagram: Meta-US. ABER: Facebook-Seiten-Admin hat geteilte Verantwortlichkeit mit Meta (Art. 26 DSGVO). Muss in Datenschutzerklärung explizit genannt werden. Page-Admin-Tools geben Einblick in Datenverarbeitung. |

**Technische Umsetzung:**
1. Facebook Page "Brettspiel News" mit der Meta-App verbinden (Page Access Token)
2. Meta Developer Dashboard: Webhook-Produkt `messenger` hinzufügen
3. Webhook-Felder `messages` und `messaging_postbacks` abonnieren
4. Page abonnieren (ohne Subscription kommen keine Events!)
5. Handler für `"object": "page"` im Webhook-Endpoint
6. Messenger-Send-API für Antworten (POST `/{page_id}/messages`)
7. Media-Handling: Messenger-Attachments → Download via URL (authorisiert mit Page Token)
8. 24h-Fenster beachten: Nach 24h nur noch per Message-Tag antworten

**PITFALL:** Messenger hat ein 24-Stunden-Fenster für freie Antworten. Danach nur noch per Message-Tag (z.B. `HUMAN_AGENT`, `POST_PURCHASE_UPDATE`). Unsere Auto-Replies müssen innerhalb von 24h erfolgen — was bei Echtzeit-Antworten gegeben ist.

---

### ⚠️ Kanal 4: Signal (via signal-cli) — *datenschutzfreundlich, aber aufwendig*

| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 12–16 Stunden + laufender Wartungsaufwand |
| **API-Typ** | Keine offizielle API. signal-cli (Open Source, Java) als REST-Wrapper |
| **Integration** | Signal-Telefonnummer registrieren → signal-cli als Daemon → REST-Endpoint exposed → Polling oder Webhook-ähnlich |
| **Message-Typen** | Text, Bilder, Videos, Dateien, Gruppen (eingeschränkt) |
| **Kosten** | Kostenlos (Signal selbst), aber: dedizierte Telefonnummer nötig (~5–10€/Monat) |
| **DSGVO** | 🟢 Bester Datenschutz aller Optionen: Signal ist E2E-verschlüsselt, non-profit, kein US-Datenzugriff. ABER: signal-cli ist ein inoffizieller Client — rechtliche Grauzone. Theoretisch DSGVO-freundlich, praktisch nicht auditierbar. |

**Technische Umsetzung:**
1. Dedizierte SIM-Karte / VoIP-Nummer für Signal registrieren
2. signal-cli installieren + als systemd-Daemon einrichten
3. REST-Mode aktivieren: `signal-cli daemon --http-listen 127.0.0.1:8080`
4. Polling-Loop oder lokalen Webhook via nginx auf die REST-API von signal-cli
5. Parser: Signal-Nachrichten-Format → Submission-Schema
6. Media: signal-cli lädt Attachments automatisch → lokaler Pfad referenzieren
7. Gruppen-Kommunikation: Signal-Gruppen sind verschlüsselt — nicht moderierbar vor Empfang

**PITFALLS:**
- signal-cli bricht bei größeren Updates von Signal regelmäßig → Wartungsaufwand
- Telefonnummer kann von Signal gebannt werden, wenn als Bot erkannt
- Kein offizieller Support — bei Problemen auf sich allein gestellt
- Gruppen-Nachrichten: Bot muss Gruppenmitglied sein (Einladung nötig)

**Fazit:** Nur umsetzen, wenn Datenschutz-Enthusiasten explizit Signal fordern. Strategisch wertvoll als DSGVO-Vorzeigekanal, aber operativ teuer.

---

### 🎮 Bonus-Kanal 5: Discord — *Gaming-Community, einfach integrierbar*

| Kriterium | Bewertung |
|---|---|
| **Aufwand** | 3–5 Stunden |
| **API-Typ** | Offizielle REST + Gateway (WebSocket) API |
| **Integration** | Discord Bot App → Webhook oder Gateway-Events → Handler |
| **Kosten** | Kostenlos |
| **DSGVO** | ⚠️ Discord = US-Unternehmen. Standardvertragsklauseln nötig. Aber: Gaming-Community ist Discord-affin — viele Brettspiel-Discords existieren bereits. |

---

## DSGVO-Zusammenfassung

| Kanal | US-Datenübermittlung | Einwilligung nötig? | Auftragsverarbeiter |
|---|---|---|---|
| WhatsApp | ✅ (Meta US) | Ja (Double Opt-In empfohlen) | Meta Platforms Inc. |
| Instagram | ✅ (Meta US) | Ja | Meta Platforms Inc. |
| Messenger | ✅ (Meta US) | Ja | Meta Platforms Inc. (geteilte Verantwortung) |
| Telegram | ⚠️ (Dubai, nicht US/EU) | Empfohlen | Telegram FZ-LLC |
| Signal | ❌ (E2E, non-profit) | Nein (Datenschutz per Design) | Keiner (direkte Kommunikation) |
| Discord | ✅ (US) | Empfohlen | Discord Inc. |

**Generelle DSGVO-Maßnahmen (für alle Kanäle):**
1. Datenschutzerklärung um jeden Kanal erweitern
2. Double Opt-In: `VERIFICATION_REQUIRED=1` in `.env` aktivieren
3. Löschlogik: `DELETE /submission/<id>` bereits implementiert — GDPR-Request manuell auslösbar
4. Datenminimierung: Wir speichern nur `sender_id`, `sender_name`, `content`, `media_path` — keine Metadaten (IP, Standort, Gerätedaten)
5. Server-Standort: Deutschland (netcup) — DSGVO-konformes Hosting

**Wichtig:** Für Meta-Kanäle (WhatsApp, Instagram, Messenger) sollte die Datenschutzerklärung einen expliziten Hinweis enthalten, dass Nachrichten über Meta-Server in die USA geleitet werden und der Nutzer dem durch Nutzung des jeweiligen Kanals zustimmt.

---

## Rangliste: Was zuerst?

```
┌───────┬─────────────────┬──────────┬──────────┬──────────┬──────────┐
│ Rang  │ Kanal           │ Aufwand  │ Nutzen   │ DSGVO    │ Prio     │
├───────┼─────────────────┼──────────┼──────────┼──────────┼──────────┤
│  1.   │ Telegram        │ 3–4 h    │ Hoch     │ Mittel   │ 🔥🔥🔥   │
│  2.   │ Instagram       │ 4–6 h    │ Mittel   │ Mittel   │ 🔥🔥     │
│  3.   │ Facebook Msgr   │ 6–8 h    │ Sehr hoch│ Mittel   │ 🔥🔥     │
│  4.   │ Discord         │ 3–5 h    │ Mittel   │ Mittel   │ 🔥       │
│  5.   │ Signal          │ 12–16 h  │ Niedrig  │ Grün    │ ⚡       │
└───────┴─────────────────┴──────────┴──────────┴──────────┴──────────┘
```

**Empfehlung:** Starte mit **Telegram + Instagram** parallel (beide zusammen ~8h), dann **Facebook Messenger** (~8h). Discord und Signal sind Optional.

---

## Implementierungs-Roadmap

### Phase 1: Telegram (1 Tag)
- [ ] Bot mit @BotFather erstellen, Token in `.env`
- [ ] Endpoint `POST /telegram/webhook` in `app.py`
- [ ] Parser: Telegram-Update → `submissions`-Schema
- [ ] Media-Download via Telegram File API
- [ ] Webhook-URL registrieren, Test-Nachricht senden
- [ ] Deployment + Tunnel-Verifikation

### Phase 2: Instagram (1 Tag)
- [ ] Instagram Professional Account mit Meta-App verbinden
- [ ] Webhook `instagram` im Meta Developer Dashboard konfigurieren
- [ ] Handler im WhatsApp-Webhook: `object == "instagram"` Fall
- [ ] Message-Mapper + Media-Download
- [ ] Test: Instagram DM an verknüpften Account senden
- [ ] Deployment + Verifikation

### Phase 3: Facebook Messenger (1–2 Tage)
- [ ] Facebook Page mit App verbinden, Page Access Token holen
- [ ] Webhook `messenger` konfigurieren + Page abonnieren
- [ ] Handler im Webhook für `object == "page"`
- [ ] Messenger Send API für Antworten
- [ ] Media-Handling (Attachments über Messenger Platform API)
- [ ] 24h-Fenster-Logik für Antworten
- [ ] Test + Deployment

### Phase 4 (Optional): Discord + Signal
- [ ] Discord: Bot App erstellen, Gateway verbinden, Commands
- [ ] Signal: signal-cli installieren, Daemon, REST-Integration

---

## Nächster Schritt

Soll ich direkt mit **Phase 1 (Telegram)** loslegen? Der Bot kann in ~3 Stunden live sein, und wir haben schon einen Test-Eintrag in der DB. Wenn du grünes Licht gibst, schreibe ich den Code, deploye und verifiziere. 🚀
