Tutorials

Telegram Bot erstellen ohne Code: Automatisierung mit n8n und Make.com

Schritt-für-Schritt Anleitung zum Erstellen eines Telegram Bots mit n8n.

15 min Lesezeit

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:
KanalZustellrateKostenInteraktiv
E-Mail20-30% geöffnetKostenlosBegrenzt
SMS95%+0,05-0,10€/SMSNein
WhatsApp Business90%+Komplex, teuerJa
Telegram Bot90%+KostenlosJa
Use Cases:
  • Server-Monitoring Alerts
  • Bestellbenachrichtigungen
  • Team-Kommunikation
  • Kunden-Support Bot
  • Tägliche Reports
  • IoT-Benachrichtigungen

Schritt 1: Bot bei Telegram erstellen

BotFather kontaktieren

  • Öffnen Sie Telegram
  • Suchen Sie nach @BotFather
  • Starten Sie den Chat mit /start
  • Bot 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:

    BefehlFunktion
    /setdescriptionBot-Beschreibung
    /setabouttextInfo-Text
    /setuserpicProfilbild
    /setcommandsBefehle definieren

    Schritt 2: Chat-ID ermitteln

    Um Nachrichten zu senden, brauchen Sie die Chat-ID:

    Für Einzelpersonen

  • Schreiben Sie Ihrem Bot eine Nachricht
  • Rufen Sie auf: https://api.telegram.org/bot{TOKEN}/getUpdates
  • Suchen Sie "chat":{"id":123456789}
  • Für Gruppen

  • Fügen Sie den Bot zur Gruppe hinzu
  • Schreiben Sie etwas in die Gruppe
  • Rufen Sie getUpdates auf
  • Gruppen-IDs sind negativ: -987654321
  • Automatisch 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

  • Telegram Bot - Watch Updates (Trigger)
  • Router (nach Message-Typ)
  • Text Parser (Befehle extrahieren)
  • HTTP (Ihre API aufrufen)
  • Telegram Bot - Send Message
  • 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

    AktionLimit
    Nachrichten an User30/Sekunde
    Nachrichten in Gruppe20/Minute
    Bulk-Nachrichten30 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 Syntax
    

    const text =

    <em>Fett</em>

    _Kursiv_

    ~Durchgestrichen~

    \Code\

    \\\

    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

    KomponenteKosten
    Telegram Bot APIKostenlos
    n8n CloudAb 20€/Monat
    Make.comAb 9€/Monat
    Server (Self-Hosted)Ab 5€/Monat
    Gesamtkosten: 5-30€/Monat für einen voll funktionsfähigen Bot

    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

    Nächste Schritte

  • Bot erstellen bei BotFather
  • Ersten Workflow aufsetzen (z.B. einfacher Alert)
  • Interaktivität hinzufügen (Buttons, Befehle)
  • Skalieren (KI-Integration, mehr Use Cases)
  • Wir unterstützen Sie bei der Telegram-Automatisierung – von der Einrichtung bis zum produktiven Einsatz.

    Sie haben Fragen zur Automatisierung?

    Unsere Experten helfen Ihnen, die richtigen Entscheidungen für Ihr Unternehmen zu treffen.