Telegram-bot för transkribering
Bygg en Telegram-bot som transkriberar ljud- och videomeddelanden på över 90 språk med TypeScript och Deno i Supabase Edge Functions.
Guide · Förutsätter att du har slutfört Speech to Text- snabbstarten och har en Telegram-bottoken samt ett Supabase-konto.
Introduktion
I den här handledningen lär du dig hur du bygger en Telegram-bot som transkriberar ljud- och videomeddelanden på över 90 språk med TypeScript och ElevenLabs Scribe-modellen via speech-to-text-API:et.
Krav
- Ett ElevenLabs-konto med en API-nyckel.
- Ett Supabase-konto (du kan registrera ett kostnadsfritt konto via database.new).
- Supabase CLI installerat på din dator.
- Deno runtime installerat på din dator och valfritt konfigurerat i din favorit-IDE.
- Ett Telegram-konto.
Konfiguration
Registrera en Telegram-bot
Använd BotFather för att skapa en ny Telegram-bot. Kör kommandot /newbot och följ instruktionerna för att skapa en ny bot. I slutet får du din hemliga bottoken. Spara den säkert till nästa steg.

Skapa ett Supabase-projekt lokalt
När du har installerat Supabase CLI kör du följande kommando för att skapa ett nytt Supabase-projekt lokalt:
Skapa en databastabell för att logga transkriberingsresultaten
Skapa sedan en ny databastabell för att logga transkriberingsresultaten:
Detta skapar en ny migreringsfil i katalogen supabase/migrations. Öppna filen och lägg till följande SQL:
Skapa en Supabase Edge Function för att hantera Telegram-webhookbegäranden
Skapa sedan en ny Edge Function för att hantera Telegram-webhookbegäranden:
Om du använder VS Code eller Cursor väljer du y när CLI:t frågar “Generate VS Code settings for Deno? [y/N]”!
Konfigurera miljövariablerna
Skapa en ny .env-fil i katalogen supabase/functions och lägg till följande variabler:
Beroenden
Projektet använder ett par beroenden:
- Det öppna ramverket grammY Framework för att hantera Telegram-webhookbegäranden.
- Biblioteket @supabase/supabase-js för att interagera med Supabase-databasen.
- ElevenLabs JavaScript SDK för att interagera med speech-to-text-API:et.
Eftersom Supabase Edge Function använder Deno runtime behöver du inte installera beroendena. Du kan i stället importera dem via prefixet npm:.
Koda Telegram-boten
Lägg till följande kod i den nyligen skapade filen scribe-bot/index.ts:
Kodgenomgång
Det finns ett par saker i koden som är värda att notera. Vi går igenom den steg för steg.
Hantera inkommande begäranden
Använd hanteraren Deno.serve för att hantera den inkommande begäran. Hanteraren kontrollerar om begäran har rätt hemlighet och skickar sedan begäran till funktionen handleUpdate.
Hantera röst-, ljud- och videomeddelanden
Ramverket grammY erbjuder ett smidigt sätt att filtrera efter specifika meddelandetyper. I det här fallet lyssnar boten efter röst-, ljud- och videomeddelanden.
Med hjälp av begärandekontexten hämtar boten filmetadata och använder sedan Supabase Background Tasks EdgeRuntime.waitUntil för att köra transkriberingen i bakgrunden.
På så sätt kan du ge användaren ett omedelbart svar och hantera transkriberingen av filen i bakgrunden.
Transkribering med ElevenLabs API
Slutligen använder boten i bakgrundsarbetaren ElevenLabs JavaScript SDK för att transkribera filen. När transkriberingen är klar svarar boten användaren med transkriptet och skriver en loggpost till Supabase-databasen med supabase-js.
Distribuera till Supabase
Om du inte redan har gjort det, skapa ett nytt Supabase-konto på database.new och länka det lokala projektet till ditt Supabase-konto:
Tillämpa databasmigreringarna
Kör följande kommando för att tillämpa databasmigreringarna från katalogen supabase/migrations:
Gå till tabellredigeraren i din Supabase-instrumentpanel. Där bör du se en tom transcription_logs-tabell.

Kör slutligen följande kommando för att distribuera Edge Function:
Gå till vyn Edge Functions i din Supabase-instrumentpanel. Där bör du se att funktionen scribe-bot har distribuerats. Anteckna funktions-URL:en eftersom du behöver den senare. Den bör se ut ungefär så här: https://<project-ref>.functions.supabase.co/scribe-bot.

Konfigurera webhooken
Ange din bots webhook-URL till https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (ersätt <...> med respektive värden). Det gör du genom att helt enkelt köra en GET-begäran till följande URL (till exempel i din webbläsare):
Observera att FUNCTION_SECRET är hemligheten som du angav i din .env-fil.

Ange funktionshemligheterna
Nu när du har angett alla hemligheter lokalt kan du köra följande kommando för att ange hemligheterna i ditt Supabase-projekt:
Testa boten
Nu kan du testa boten genom att skicka ett röstmeddelande, en ljudfil eller en videofil till den.

När du ser transkriptet som ett svar går du tillbaka till tabellredigeraren i Supabase-instrumentpanelen. Där bör du se en ny rad i din transcription_logs-tabell.
