- Add FEATURE_PLAN-telegram.md with 6-phase implementation roadmap - Add scripts/README.telegram.md with step-by-step setup guide - Add scripts/telegram-test.js standalone test script - Add scripts/.env.telegram.example template for credentials - Update .gitignore to protect Telegram credentials Phase 1 complete: Bot setup, privacy mode configuration, and successful test message delivery.
11 KiB
Telegram Bot Setup & Testing Guide
Übersicht
Diese Anleitung beschreibt Schritt-für-Schritt, wie du den Telegram Bot für den Image Uploader erstellst und testest.
Phase 1: Standalone-Test (ohne Backend-Integration)
Voraussetzungen
- ✅ Windows 11 mit installiertem Telegram Desktop
- ✅ Telegram Account
- ✅ Node.js >= 18.x installiert
- ✅ Zugriff auf dieses Git-Repository
1. Telegram Bot erstellen
1.1 BotFather öffnen
- Telegram Desktop öffnen
- In der Suche eingeben:
@BotFather - Chat mit BotFather öffnen (offizieller Bot mit blauem Haken ✓)
1.2 Neuen Bot erstellen
Commands im BotFather-Chat eingeben:
/newbot
BotFather fragt nach Namen:
Alright, a new bot. How are we going to call it?
Please choose a name for your bot.
Antworten mit:
Werkstatt Image Uploader Bot
BotFather fragt nach Username:
Good. Now let's choose a username for your bot.
It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
Antworten mit (muss auf bot enden):
werkstatt_uploader_bot
⚠️ Falls Username vergeben: Anderen Namen wählen (z.B. werkstatt_upload_bot, hobbyhimmel_uploader_bot)
1.3 Bot-Token speichern
BotFather antwortet mit:
Done! Congratulations on your new bot.
You will find it at t.me/werkstatt_uploader_bot.
You can now add a description, about section and profile picture for your bot.
Use this token to access the HTTP API:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz1234567890
Keep your token secure and store it safely, it can be used by anyone to control your bot.
Token kopieren (z.B. 123456789:ABCdefGHIjklMNOpqrsTUVwxyz1234567890)
➡️ Diesen Token brauchst du gleich für .env.telegram!
2. Test-Telegram-Gruppe erstellen
2.1 Neue Gruppe erstellen
- In Telegram: Neuer Chat → Neue Gruppe
- Gruppennamen eingeben:
Werkstatt Upload Bot Test - Weiter klicken
- (Optional) Weitere Mitglieder hinzufügen (oder nur dich selbst)
- Erstellen klicken
2.2 Bot zur Gruppe hinzufügen
- Test-Gruppe öffnen
- Auf Gruppennamen (oben) klicken → Mitglieder hinzufügen
- Suche nach:
@werkstatt_uploader_bot(dein Bot-Username) - Bot auswählen → Hinzufügen
Telegram zeigt:
werkstatt_uploader_bot wurde zur Gruppe hinzugefügt
2.3 Privacy Mode deaktivieren (WICHTIG!)
⚠️ Ohne diesen Schritt sieht der Bot keine Gruppennachrichten!
- BotFather öffnen
- Command eingeben:
/mybots - Deinen Bot auswählen:
@werkstatt_uploader_bot - Bot Settings klicken
- Group Privacy klicken
- Turn off klicken
BotFather bestätigt:
Privacy mode is disabled for <bot-name>.
All messages will now be sent to the bot.
2.4 Bot als Admin hinzufügen (optional, aber empfohlen)
- Gruppe öffnen → Gruppennamen klicken
- Administratoren → Administrator hinzufügen
@werkstatt_uploader_botauswählen- Berechtigungen:
- ✅ Nachrichten senden
- ❌ Alle anderen optional (nicht nötig)
- Speichern
3. Chat-ID ermitteln
Die Chat-ID wird benötigt, um Nachrichten an die richtige Gruppe zu senden.
Methode 1: Via Telegram API (empfohlen)
Schritt 1: Nachricht in Test-Gruppe senden
- Öffne die Test-Gruppe
- Sende eine beliebige Nachricht (z.B. "Test")
Schritt 2: Browser öffnen und folgende URL aufrufen:
https://api.telegram.org/bot<DEIN_BOT_TOKEN>/getUpdates
Ersetze <DEIN_BOT_TOKEN> mit deinem echten Token!
Beispiel:
https://api.telegram.org/bot123456789:ABCdefGHIjklMNOpqrsTUVwxyz/getUpdates
⚠️ Wenn du {"ok":true,"result":[]} siehst (leeres result-Array):
Das bedeutet, der Bot hat noch keine Nachrichten empfangen. Checkliste:
- ✅ Hast du den Bot zur Gruppe hinzugefügt? (Schritt 2.2)
- ✅ Hast du NACH dem Hinzufügen eine Nachricht gesendet? (Schritt 1)
- ✅ War die Nachricht in der richtigen Gruppe (nicht im Bot-Direct-Chat)?
Lösung - Mach jetzt folgendes:
- Telegram öffnen
- Test-Gruppe öffnen (nicht den Bot direkt!)
- Prüfe, ob der Bot als Mitglied angezeigt wird
- Sende eine neue Nachricht: "Test"
- Sofort zurück zum Browser → Seite neu laden (F5)
Schritt 3: Im JSON-Response nach chat suchen:
{
"ok": true,
"result": [
{
"update_id": 123456789,
"message": {
"message_id": 1,
"from": { ... },
"chat": {
"id": -1001234567890, // ← DAS IST DEINE CHAT-ID!
"title": "Werkstatt Upload Bot Test",
"type": "supergroup"
},
"text": "Test"
}
}
]
}
Chat-ID kopieren (z.B. -1001234567890)
⚠️ Wichtig: Gruppen-Chat-IDs sind negativ und beginnen meist mit -100!
Methode 2: Via curl (Linux/WSL)
curl "https://api.telegram.org/bot<DEIN_BOT_TOKEN>/getUpdates" | jq '.result[0].message.chat.id'
4. Environment-Datei erstellen
4.1 Template kopieren
cd scripts
cp .env.telegram.example .env.telegram
4.2 .env.telegram bearbeiten
Datei öffnen: scripts/.env.telegram
# Telegram Bot Configuration
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=-1001234567890
Deine echten Werte eintragen:
TELEGRAM_BOT_TOKEN→ Token von BotFather (Schritt 1.3)TELEGRAM_CHAT_ID→ Chat-ID aus Schritt 3 (negativ!)
Speichern und schließen.
5. Dependencies installieren
cd scripts
# package.json initialisieren (falls nicht vorhanden)
npm init -y
# Telegram Bot API installieren
npm install node-telegram-bot-api dotenv
Erwartete Ausgabe:
added 15 packages, and audited 16 packages in 2s
6. Test-Script ausführen
6.1 Script starten
node telegram-test.js
6.2 Erwartete Ausgabe (Erfolg)
🔧 Lade Telegram-Konfiguration...
✅ Konfiguration geladen!
🤖 Verbinde mit Telegram Bot...
✅ Telegram Bot erfolgreich verbunden!
Bot-Details:
Name: Werkstatt Image Uploader Bot
Username: @werkstatt_uploader_bot
ID: 1234567890
📤 Sende Test-Nachricht an Chat -1001234567890...
✅ Nachricht erfolgreich gesendet!
Message-ID: 42
6.3 Telegram-Gruppe prüfen
In der Test-Gruppe sollte jetzt erscheinen:
🤖 Telegram Bot Test
Dies ist eine Test-Nachricht vom Werkstatt Image Uploader Bot.
Status: ✅ Erfolgreich verbunden!
Zeitstempel: 2025-11-29 14:23:45
---
ℹ️ Dieser Bot sendet automatische Benachrichtigungen für den Image Uploader.
7. Troubleshooting
❌ Fehler: "Error: Unauthorized (401)"
Ursache: Bot-Token ist falsch oder ungültig
Lösung:
- BotFather öffnen
/tokeneingeben- Deinen Bot auswählen
- Neuen Token kopieren
.env.telegramaktualisieren- Script erneut starten
❌ Fehler: "Bad Request: chat not found"
Ursache: Chat-ID ist falsch
Lösung:
- Test-Gruppe öffnen
- Neue Nachricht senden
- Chat-ID erneut ermitteln (Schritt 3)
.env.telegramaktualisieren- Script erneut starten
❌ Fehler: "Error: ETELEGRAM: 403 Forbidden"
Ursache: Bot wurde aus der Gruppe entfernt oder kann nicht posten
Lösung:
- Test-Gruppe öffnen
- Prüfen, ob Bot noch Mitglied ist
- Falls nicht: Bot erneut hinzufügen (Schritt 2.2)
- Falls ja: Bot als Admin hinzufügen (Schritt 2.3)
- Script erneut starten
❌ Fehler: "Cannot find module 'node-telegram-bot-api'"
Ursache: Dependencies nicht installiert
Lösung:
cd scripts
npm install
node telegram-test.js
❌ Fehler: "TELEGRAM_BOT_TOKEN is not defined"
Ursache: .env.telegram fehlt oder nicht korrekt
Lösung:
- Prüfen, ob
.env.telegramexistiert:ls -la scripts/.env.telegram - Falls nicht: Template kopieren (Schritt 4.1)
- Werte eintragen (Schritt 4.2)
- Script erneut starten
8. Erweiterte Tests
Test 1: Formatierung mit Emojis
Script anpassen: telegram-test.js
const message = `
📸 Neuer Upload!
Uploader: Max Mustermann
Bilder: 12
Gruppe: 2024 - Schweißkurs November
Workshop: ✅ Ja
Social Media: 📘 Instagram, 🎵 TikTok
🔗 Zur Freigabe: https://internal.hobbyhimmel.de/moderation
`;
bot.sendMessage(chatId, message);
Ausführen:
node telegram-test.js
Telegram prüfen: Emojis sollten korrekt angezeigt werden
Test 2: HTML-Formatierung
Script anpassen:
const message = `
<b>🤖 Telegram Bot Test</b>
<i>HTML-Formatierung funktioniert!</i>
<code>Status: ✅ Erfolgreich</code>
<a href="https://hobbyhimmel.de">Link zur Website</a>
`;
bot.sendMessage(chatId, message, { parse_mode: 'HTML' });
Ausführen & prüfen: Fetter Text, kursiver Text, Code, Link
Test 3: Markdown-Formatierung
Script anpassen:
const message = `
*🤖 Telegram Bot Test*
_Markdown-Formatierung funktioniert!_
\`Status: ✅ Erfolgreich\`
[Link zur Website](https://hobbyhimmel.de)
`;
bot.sendMessage(chatId, message, { parse_mode: 'Markdown' });
9. Sicherheit
⚠️ Wichtig!
- ❌ NIEMALS
.env.telegramcommitten! - ❌ NIEMALS Bot-Token öffentlich teilen!
- ✅
.env.telegramist in.gitignoreeingetragen - ✅ Nur
.env.telegram.example(ohne echte Tokens) committen
Bot-Token kompromittiert?
Falls Token versehentlich exposed:
- BotFather öffnen
/revokeeingeben- Deinen Bot auswählen
- Neuen Token kopieren
.env.telegramaktualisieren- Alle Services neu starten
10. Nächste Schritte
✅ Phase 1 abgeschlossen?
Checklist:
- Bot erstellt
- Test-Gruppe erstellt
- Bot zur Gruppe hinzugefügt
- Chat-ID ermittelt
.env.telegramkonfiguriertnpm installerfolgreichnode telegram-test.jsläuft ohne Fehler- Test-Nachricht in Telegram empfangen
➡️ Weiter zu Phase 2
Backend-Integration:
TelegramNotificationService.jserstellen- Service in Docker Dev Environment integrieren
- ENV-Variablen in Backend übertragen
- Unit-Tests schreiben
Siehe: FeatureRequests/FEATURE_PLAN-telegram.md
Referenzen
Support
Bei Problemen:
- Troubleshooting-Sektion durchlesen (Schritt 7)
- Telegram Bot API Logs prüfen
- BotFather
/mybots→ Bot auswählen → API Token prüfen - Chat-ID erneut ermitteln
Erfolgreicher Test? 🎉
git add scripts/
git commit -m "feat: Add Telegram Bot standalone test (Phase 1)"