Telegram-Bot für Transkriptionen
Telegram-Bot für Transkriptionen
Erstellen Sie einen Telegram-Bot, der Audio- und Videonachrichten in über 90 Sprachen mit TypeScript, Deno und Supabase Edge Functions transkribiert.
Anleitung · Setzt voraus, dass Sie den Speech to Text Schnellstart abgeschlossen haben und über ein Telegram-Bot-Token sowie ein Supabase-Konto verfügen.
Einführung
In diesem Tutorial lernen Sie, wie Sie einen Telegram-Bot erstellen, der Audio- und Videonachrichten in über 90 Sprachen mit TypeScript und dem ElevenLabs-Scribe-Modell über die Speech-to-Text-API transkribiert.
Voraussetzungen
- Ein ElevenLabs-Konto mit einem API-Schlüssel.
- Ein Supabase-Konto (Sie können sich über database.new kostenlos registrieren).
- Die auf Ihrem Gerät installierte Supabase CLI.
- Die auf Ihrem Gerät installierte Deno-Runtime und optional die Einrichtung in Ihrer bevorzugten IDE.
- Ein Telegram-Konto.
Einrichtung
Einen Telegram-Bot registrieren
Erstellen Sie mit dem BotFather einen neuen Telegram-Bot. Führen Sie den Befehl /newbot aus und folgen Sie den Anweisungen, um einen neuen Bot zu erstellen. Am Ende erhalten Sie Ihr geheimes Bot-Token. Notieren Sie es sicher für den nächsten Schritt.

Ein Supabase-Projekt lokal erstellen
Führen Sie nach der Installation der Supabase CLI den folgenden Befehl aus, um lokal ein neues Supabase-Projekt zu erstellen:
Eine Datenbanktabelle für Transkriptionsergebnisse erstellen
Erstellen Sie als Nächstes eine neue Datenbanktabelle, um die Transkriptionsergebnisse zu protokollieren:
Dadurch wird im Verzeichnis supabase/migrations eine neue Migrationsdatei erstellt. Öffnen Sie die Datei und fügen Sie das folgende SQL hinzu:
Eine Supabase Edge Function für Telegram-Webhook-Anfragen erstellen
Erstellen Sie als Nächstes eine neue Edge Function, die Telegram-Webhook-Anfragen verarbeitet:
Wenn Sie VS Code oder Cursor verwenden, wählen Sie y, wenn die CLI „Generate VS Code settings for Deno? [y/N]“ abfragt.
Umgebungsvariablen einrichten
Erstellen Sie im Verzeichnis supabase/functions eine neue .env-Datei und fügen Sie die folgenden Variablen hinzu:
Abhängigkeiten
Das Projekt verwendet einige Abhängigkeiten:
- Das Open-Source-grammY-Framework zur Verarbeitung der Telegram-Webhook-Anfragen.
- Die Bibliothek @supabase/supabase-js für die Interaktion mit der Supabase-Datenbank.
- Das ElevenLabs-JavaScript SDK für die Interaktion mit der Speech-to-Text-API.
Da Supabase Edge Function die Deno-Runtime verwendet, müssen Sie die Abhängigkeiten nicht installieren. Sie können sie über das Präfix npm: importieren.
Telegram-Bot programmieren
Fügen Sie in Ihrer neu erstellten Datei scribe-bot/index.ts den folgenden Code hinzu:
Code im Detail
Im Code gibt es einige wichtige Punkte. Sehen wir sie uns Schritt für Schritt an.
Eingehende Anfrage verarbeiten
Verwenden Sie zur Verarbeitung der eingehenden Anfrage den Handler Deno.serve. Der Handler prüft, ob die Anfrage das richtige Secret enthält, und übergibt die Anfrage dann an die Funktion handleUpdate.
Sprach-, Audio- und Videonachrichten verarbeiten
Das grammY-Framework bietet eine praktische Möglichkeit, nach bestimmten Nachrichtentypen zu filtern. In diesem Fall lauscht der Bot auf Sprach-, Audio- und Videonachrichten.
Über den Anfragekontext extrahiert der Bot die Dateimetadaten und verwendet dann Supabase Background Tasks EdgeRuntime.waitUntil, um die Transkription im Hintergrund auszuführen.
So können Sie dem Nutzer sofort antworten und die Transkription der Datei im Hintergrund verarbeiten.
Transkription mit der ElevenLabs-API
Schließlich verwendet der Bot im Hintergrund-Worker das ElevenLabs JavaScript SDK, um die Datei zu transkribieren. Sobald die Transkription abgeschlossen ist, antwortet der Bot dem Nutzer mit dem Transkript und schreibt mit supabase-js einen Protokolleintrag in die Supabase-Datenbank.
In Supabase bereitstellen
Falls noch nicht geschehen, erstellen Sie unter database.new ein neues Supabase-Konto und verknüpfen Sie das lokale Projekt mit Ihrem Supabase-Konto:
Datenbankmigrationen anwenden
Führen Sie den folgenden Befehl aus, um die Datenbankmigrationen aus dem Verzeichnis supabase/migrations anzuwenden:
Öffnen Sie im Supabase-Dashboard den Tabelleneditor. Dort sollte eine leere Tabelle transcription_logs angezeigt werden.

Führen Sie abschließend den folgenden Befehl aus, um die Edge Function bereitzustellen:
Öffnen Sie im Supabase-Dashboard die Edge-Functions-Ansicht. Dort sollte die bereitgestellte Funktion scribe-bot angezeigt werden. Notieren Sie sich die Funktions-URL, da Sie sie später benötigen. Sie sollte etwa so aussehen: https://<project-ref>.functions.supabase.co/scribe-bot.

Webhook einrichten
Setzen Sie die Webhook-URL Ihres Bots auf https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (ersetzen Sie <...> durch die jeweiligen Werte). Senden Sie dazu einfach eine GET-Anfrage an die folgende URL, beispielsweise in Ihrem Browser:
Beachten Sie, dass FUNCTION_SECRET dem Secret entspricht, das Sie in Ihrer .env-Datei festgelegt haben.

Funktions-Secrets festlegen
Nachdem Sie alle Secrets lokal festgelegt haben, können Sie mit dem folgenden Befehl die Secrets in Ihrem Supabase-Projekt setzen:
Bot testen
Testen Sie den Bot abschließend, indem Sie ihm eine Sprach-, Audio- oder Videonachricht senden.

Nachdem Sie das Transkript als Antwort sehen, wechseln Sie zurück zum Tabelleneditor im Supabase-Dashboard. Dort sollte eine neue Zeile in Ihrer Tabelle transcription_logs angezeigt werden.
