Telegram Bot erstellen ohne Code: Automatisierung mit n8n und Make.com
Schritt-für-Schritt Anleitung zum Erstellen eines Telegram Bots mit n8n.
Telegram Bots sind mächtige Werkzeuge für Business-Automatisierung: Kundenbenachrichtigungen, Team-Alerts, Bestellstatus-Updates oder sogar komplette Chatbots. Das Beste: Sie brauchen keine Programmierkenntnisse. In diesem Guide zeigen wir, wie Sie einen funktionierenden Telegram Bot in 30 Minuten erstellen.
Warum Telegram Bots?
Vorteile gegenüber anderen Kanälen:| Kanal | Zustellrate | Kosten | Interaktiv |
|---|---|---|---|
| 20-30% geöffnet | Kostenlos | Begrenzt | |
| SMS | 95%+ | 0,05-0,10€/SMS | Nein |
| WhatsApp Business | 90%+ | Komplex, teuer | Ja |
| Telegram Bot | 90%+ | Kostenlos | Ja |
- Server-Monitoring Alerts
- Bestellbenachrichtigungen
- Team-Kommunikation
- Kunden-Support Bot
- Tägliche Reports
- IoT-Benachrichtigungen
Schritt 1: Bot bei Telegram erstellen
BotFather kontaktieren
/startBot erstellen
Sie: /newbot
BotFather: Alright, a new bot. How are we going to call it?
Sie: Mein Business Bot
BotFather: Good. Now let's choose a username for your bot...
Sie: mein_business_bot
BotFather: Done! Congratulations on your new bot...
Use this token to access the HTTP API:
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
Wichtig: Den API Token sicher speichern – er ist wie ein Passwort! Mehr zum Thema APIs erfahren Sie in unserem Artikel API-Integration einfach erklärt.
Bot konfigurieren
Weitere BotFather-Befehle:
| Befehl | Funktion |
|---|---|
/setdescription | Bot-Beschreibung |
/setabouttext | Info-Text |
/setuserpic | Profilbild |
/setcommands | Befehle definieren |
Schritt 2: Chat-ID ermitteln
Um Nachrichten zu senden, brauchen Sie die Chat-ID:
Für Einzelpersonen
https://api.telegram.org/bot{TOKEN}/getUpdates"chat":{"id":123456789}Für Gruppen
getUpdates auf-987654321Automatisch mit n8n
// Node: Telegram Trigger
// Wartet auf Nachrichten und extrahiert Chat-ID
const chatId = $json.message.chat.id;
const username = $json.message.from.username;
const text = $json.message.text;
// Chat-ID speichern für spätere Nutzung
Schritt 3: Ersten Workflow erstellen
Use Case: Server-Alert Bot
Benachrichtigung bei Server-Problemen:
Uptime Monitor (Server down)
↓
Telegram: Alert senden
"⚠️ Server XYZ ist nicht erreichbar!"
↓
Warten auf Antwort
↓
Bei "OK": Alarm bestätigt markieren
n8n Workflow
Node 1: HTTP Request (Webhook von Uptime-Monitor)// Webhook empfängt Alert
{
"server": "webserver-01",
"status": "down",
"timestamp": "2024-01-15T10:30:00Z"
}
Node 2: Telegram - Send Message
// Telegram Node konfigurieren
{
"chatId": "-987654321", // Gruppen-ID
"text": "⚠️ <em>Server Alert</em>\n\nServer: {{ $json.server }}\nStatus: {{ $json.status }}\nZeit: {{ $json.timestamp }}\n\nAntworten Sie mit /ack zum Bestätigen.",
"parseMode": "Markdown"
}
Schritt 4: Interaktiven Bot bauen
Befehle definieren
Bei BotFather:
/setcommands
status - Aktueller System-Status
help - Hilfe anzeigen
subscribe - Benachrichtigungen aktivieren
unsubscribe - Benachrichtigungen deaktivieren
Auf Befehle reagieren
Telegram Trigger (neue Nachricht)
↓
Switch (nach Befehl)
↓
/status → System-Status senden
/help → Hilfetext senden
/subscribe → User registrieren
/unsubscribe → User entfernen
n8n: Command Handler
// Node: Switch
// Routing basierend auf Befehl
const text = $json.message.text;
if (text === '/status') return { route: 'status' };
if (text === '/help') return { route: 'help' };
if (text.startsWith('/subscribe')) return { route: 'subscribe' };
if (text.startsWith('/unsubscribe')) return { route: 'unsubscribe' };
return { route: 'unknown' };
Status-Befehl implementieren
// Node: HTTP Request → Ihre API;// Node: Format Response
const status = {
webserver: $json.webserver.status,
database: $json.database.status,
queue: $json.queue.jobs_pending
};
const message =
📊 <em>System Status</em>
🌐 Webserver: ${status.webserver === 'ok' ? '✅' : '❌'}
🗄️ Datenbank: ${status.database === 'ok' ? '✅' : '❌'}
📬 Queue: ${status.queue} Jobs wartend
_Aktualisiert: ${new Date().toLocaleString('de-DE')}_
return { message };
Schritt 5: Inline Keyboards
Interaktive Buttons für bessere UX:
Button-Nachricht senden
// Node: Telegram - Send Message
{
"chatId": "{{ $json.chatId }}",
"text": "Welche Aktion möchten Sie ausführen?",
"replyMarkup": {
"inline_keyboard": [
[
{ "text": "✅ Bestätigen", "callback_data": "confirm" },
{ "text": "❌ Abbrechen", "callback_data": "cancel" }
],
[
{ "text": "📊 Status", "callback_data": "status" }
]
]
}
}
Auf Button-Klicks reagieren
// Node: Telegram Trigger
// callback_query enthält Button-Daten
if ($json.callback_query) {
const action = $json.callback_query.data;
const chatId = $json.callback_query.message.chat.id;
const messageId = $json.callback_query.message.message_id;
// Button-Klick bestätigen (entfernt Ladeanimation)
await answerCallbackQuery($json.callback_query.id);
// Original-Nachricht updaten
await editMessage(chatId, messageId, "Aktion ausgeführt: " + action);
}
Praxisbeispiele
1. E-Commerce Bestellbot
Shopify (Neue Bestellung)
↓
Telegram an Kunden:
"Danke für Ihre Bestellung #1234!
📦 Produkte:
- Produkt A (2x)
- Produkt B (1x)
💰 Gesamt: 149,00€
Wir informieren Sie über den Versand."
2. Team-Standup Bot
Schedule (Mo-Fr 9:00)
↓
Telegram an Team-Gruppe:
"☀️ Guten Morgen! Zeit für den Daily Standup.
Bitte antwortet mit:
1. Was habe ich gestern gemacht?
2. Was mache ich heute?
3. Gibt es Blocker?"
↓
Antworten sammeln (30 Min)
↓
Zusammenfassung in Notion speichern
3. Lead-Notification Bot
Website Formular (neuer Lead)
↓
Telegram an Sales-Team:
"🔔 Neuer Lead!
👤 Max Mustermann
📧 max@example.com
🏢 Firma GmbH
💬 'Interesse an Enterprise Plan'
[Zum CRM] [Anrufen]"
4. Monitoring & Alerts
Verschiedene Quellen:
- Server Down → ⚠️ Alert
- Hohe CPU → 🔥 Warning
- Backup fertig → ✅ Info
- Fehler in Logs → 🐛 Bug Report
↓
Telegram mit Severity-Emoji
Make.com: Telegram Bot Szenario
Module
Beispiel-Szenario: FAQ Bot
Telegram Watch Updates
↓
Router:
├─ /faq → FAQ-Menü senden (Inline Keyboard)
├─ callback "faq_*" → FAQ-Antwort senden
└─ Freitext → KI-Suche in FAQ-Datenbank
Fortgeschritten: KI-Chatbot
Mit OpenAI/Claude verbinden
// Node: OpenAI;// Konversation mit Kontext
const systemPrompt =
Du bist ein freundlicher Support-Bot für Firma XYZ.
Du beantwortest Fragen zu unseren Produkten und Services.
Bei komplexen Anfragen verweise auf den menschlichen Support.
const messages = [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: $json.message.text }
];
// Konversationshistorie einbeziehen
const history = await getConversationHistory($json.message.chat.id);
messages.splice(1, 0, ...history);
Konversation speichern
// Node: Redis/Database
// Kontext für 24h speichern
await saveMessage({
chatId: $json.message.chat.id,
role: 'user',
content: $json.message.text,
timestamp: Date.now()
});
await saveMessage({
chatId: $json.message.chat.id,
role: 'assistant',
content: aiResponse,
timestamp: Date.now()
});
Best Practices
1. Rate Limits beachten
| Aktion | Limit |
|---|---|
| Nachrichten an User | 30/Sekunde |
| Nachrichten in Gruppe | 20/Minute |
| Bulk-Nachrichten | 30 User/Sekunde |
// Delay einbauen bei Bulk
for (const user of users) {
await sendMessage(user.chatId, message);
await sleep(100); // 100ms Pause
}
2. Fehlerbehandlung
// Telegram API Fehler abfangen
try {
await sendMessage(chatId, text);
} catch (error) {
if (error.code === 403) {
// User hat Bot blockiert
await removeSubscriber(chatId);
} else if (error.code === 429) {
// Rate Limit - warten und retry
await sleep(error.parameters.retry_after * 1000);
await sendMessage(chatId, text);
}
}
3. Nachrichten formatieren
// Markdown V2 SyntaxCode\const text =
<em>Fett</em>
_Kursiv_
~Durchgestrichen~
\
\\
\Code Block
\
Link\\;
// Sonderzeichen escapen
const escaped = text.replace(/[_*[\]()~`>#+=|{}.!-]/g, '\\$&');
4. Medien senden
// Bild senden
{
"method": "sendPhoto",
"chatId": "123456",
"photo": "https://example.com/image.jpg",
"caption": "Beschreibung"
}
// Dokument senden
{
"method": "sendDocument",
"chatId": "123456",
"document": "{{ $binary.data }}",
"filename": "report.pdf"
}
Sicherheit
Token schützen
- Nie im Code committen
- Umgebungsvariablen nutzen
- Bei Leak: Token bei BotFather revoken
Zugriff beschränken
// Nur bestimmte User erlauben
const allowedUsers = [123456, 789012];
if (!allowedUsers.includes($json.message.from.id)) {
await sendMessage(chatId, "Zugriff verweigert.");
return;
}
Webhook absichern
Mehr zum Thema Webhooks finden Sie in unserem Guide Webhook erstellen: Schritt-für-Schritt-Anleitung.
// Secret Token prüfen
const secretToken = $headers['x-telegram-bot-api-secret-token'];
if (secretToken !== process.env.TELEGRAM_SECRET) {
return { status: 403 };
}
Kosten
| Komponente | Kosten |
|---|---|
| Telegram Bot API | Kostenlos |
| n8n Cloud | Ab 20€/Monat |
| Make.com | Ab 9€/Monat |
| Server (Self-Hosted) | Ab 5€/Monat |
Fazit
Telegram Bots sind eine kostengünstige und effektive Lösung für Business-Automatisierung:
- Kostenlose API
- Hohe Zustellraten
- Interaktive Features
- Einfache Integration mit n8n/Make.com
Weiterführende Artikel
- Slack Bot erstellen: Automatisierung ohne Code
- n8n Tutorial für Anfänger: Erste Schritte
- Webhook erstellen: Schritt-für-Schritt-Anleitung
Nächste Schritte
Wir unterstützen Sie bei der Telegram-Automatisierung – von der Einrichtung bis zum produktiven Einsatz.