Bot Telegram de transcription
Créez un bot Telegram qui transcrit des messages audio et vidéo dans plus de 90 langues avec TypeScript et Deno dans les Supabase Edge Functions.
Guide pratique · Suppose que vous avez suivi le démarrage rapide de Speech to Text et que vous disposez d’un jeton de bot Telegram ainsi que d’un compte Supabase.
Introduction
Dans ce tutoriel, vous apprendrez à créer un bot Telegram qui transcrit des messages audio et vidéo dans plus de 90 langues avec TypeScript et le modèle Scribe d’ElevenLabs via l’API Speech to Text.
Prérequis
- Un compte ElevenLabs avec une clé API.
- Un compte Supabase (vous pouvez créer un compte gratuit via database.new).
- La CLI Supabase installée sur votre machine.
- Le runtime Deno installé sur votre machine et, si vous le souhaitez, configuré dans votre IDE préféré.
- Un compte Telegram.
Configuration
Enregistrer un bot Telegram
Utilisez BotFather pour créer un bot Telegram. Exécutez la commande /newbot et suivez les instructions pour créer votre bot. À la fin, vous recevrez le jeton secret de votre bot. Notez-le en lieu sûr pour l’étape suivante.

Créer un projet Supabase localement
Après avoir installé la CLI Supabase, exécutez la commande suivante pour créer un projet Supabase localement :
Créer une table de base de données pour enregistrer les résultats de transcription
Créez ensuite une table de base de données pour enregistrer les résultats de transcription :
Cette commande crée un fichier de migration dans le répertoire supabase/migrations. Ouvrez ce fichier et ajoutez le SQL suivant :
Créer une Supabase Edge Function pour traiter les requêtes webhook de Telegram
Créez ensuite une Edge Function pour traiter les requêtes webhook de Telegram :
Si vous utilisez VS Code ou Cursor, sélectionnez y lorsque la CLI affiche « Generate VS Code settings for Deno? [y/N] ».
Configurer les variables d’environnement
Dans le répertoire supabase/functions, créez un fichier .env et ajoutez les variables suivantes :
Dépendances
Le projet utilise plusieurs dépendances :
- Le framework open source grammY pour traiter les requêtes webhook de Telegram.
- La bibliothèque @supabase/supabase-js pour interagir avec la base de données Supabase.
- Le SDK JavaScript d’ElevenLabs pour interagir avec l’API Speech to Text.
Comme les Supabase Edge Functions utilisent le runtime Deno, vous n’avez pas besoin d’installer les dépendances. Vous pouvez les importer via le préfixe npm:.
Coder le bot Telegram
Dans le fichier scribe-bot/index.ts que vous venez de créer, ajoutez le code suivant :
Analyse approfondie du code
Quelques éléments du code méritent d’être soulignés. Examinons-les étape par étape.
Traiter la requête entrante
Pour traiter la requête entrante, utilisez le gestionnaire Deno.serve. Il vérifie que la requête contient le bon secret, puis la transmet à la fonction handleUpdate.
Traiter les messages vocaux, audio et vidéo
Le framework grammY offre un moyen pratique de filtrer des types de messages spécifiques. Dans ce cas, le bot écoute les messages vocaux, audio et vidéo.
À l’aide du contexte de la requête, le bot extrait les métadonnées du fichier, puis utilise EdgeRuntime.waitUntil de Supabase Background Tasks pour exécuter la transcription en arrière-plan.
Vous pouvez ainsi répondre immédiatement à l’utilisateur tout en traitant la transcription du fichier en arrière-plan.
Transcription avec l’API ElevenLabs
Enfin, dans le worker en arrière-plan, le bot utilise le SDK JavaScript d’ElevenLabs pour transcrire le fichier. Une fois la transcription terminée, il répond à l’utilisateur avec la transcription et écrit une entrée de journal dans la base de données Supabase avec supabase-js.
Déployer sur Supabase
Si ce n’est pas déjà fait, créez un compte Supabase sur database.new, puis associez le projet local à votre compte Supabase :
Appliquer les migrations de la base de données
Exécutez la commande suivante pour appliquer les migrations de base de données du répertoire supabase/migrations :
Accédez à l’éditeur de tables dans votre Dashboard Supabase. Vous devriez voir une table transcription_logs vide.

Enfin, exécutez la commande suivante pour déployer l’Edge Function :
Accédez à la vue Edge Functions dans votre Dashboard Supabase. Vous devriez voir la fonction scribe-bot déployée. Notez l’URL de la fonction, car vous en aurez besoin plus tard. Elle doit ressembler à https://<project-ref>.functions.supabase.co/scribe-bot.

Configurer le webhook
Définissez l’URL du webhook de votre bot sur https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (remplacez <...> par les valeurs correspondantes). Pour ce faire, exécutez simplement une requête GET vers l’URL suivante, par exemple dans votre navigateur :
Notez que FUNCTION_SECRET correspond au secret que vous avez défini dans votre fichier .env.

Définir les secrets de la fonction
Maintenant que tous vos secrets sont configurés localement, vous pouvez exécuter la commande suivante pour les définir dans votre projet Supabase :
Tester le bot
Vous pouvez enfin tester le bot en lui envoyant un message vocal ou un fichier audio ou vidéo.

Une fois la transcription reçue en réponse, revenez à l’éditeur de tables de votre Dashboard Supabase. Vous devriez voir une nouvelle ligne dans votre table transcription_logs.
