Bot do Telegram para transcrição
Bot do Telegram para transcrição
Crie um bot do Telegram que transcreve mensagens de áudio e vídeo em mais de 90 idiomas usando TypeScript com Deno nas Supabase Edge Functions.
Guia prático · Pressupõe que você concluiu o guia de início rápido do Speech to Text e tem um token de bot do Telegram e uma conta no Supabase.
Introdução
Neste tutorial, você aprenderá a criar um bot do Telegram que transcreve mensagens de áudio e vídeo em mais de 90 idiomas usando TypeScript e o modelo ElevenLabs Scribe pela API de Speech to Text.
Requisitos
- Uma conta ElevenLabs com uma chave de API.
- Uma conta no Supabase (você pode criar uma conta gratuita pelo database.new).
- A CLI do Supabase instalada na sua máquina.
- O runtime Deno instalado na sua máquina e, opcionalmente, configurado na sua IDE favorita.
- Uma conta no Telegram.
Configuração
Registre um bot do Telegram
Use o BotFather para criar um novo bot do Telegram. Execute o comando /newbot e siga as instruções para criar um novo bot. Ao final, você receberá o token secreto do seu bot. Anote-o com segurança para a próxima etapa.

Crie um projeto Supabase localmente
Depois de instalar a CLI do Supabase, execute o comando a seguir para criar um novo projeto Supabase localmente:
Crie uma tabela de banco de dados para registrar os resultados das transcrições
Em seguida, crie uma nova tabela de banco de dados para registrar os resultados das transcrições:
Isso criará um novo arquivo de migração no diretório supabase/migrations. Abra o arquivo e adicione o seguinte SQL:
Crie uma Supabase Edge Function para processar solicitações de webhook do Telegram
Em seguida, crie uma nova Edge Function para processar solicitações de webhook do Telegram:
Se você usa o VS Code ou o Cursor, selecione y quando a CLI perguntar “Generate VS Code settings for Deno? [y/N]”!
Configure as variáveis de ambiente
No diretório supabase/functions, crie um novo arquivo .env e adicione as seguintes variáveis:
Dependências
O projeto usa algumas dependências:
- O framework grammY de código aberto para processar as solicitações de webhook do Telegram.
- A biblioteca @supabase/supabase-js para interagir com o banco de dados do Supabase.
- O SDK JavaScript da ElevenLabs para interagir com a API de Speech to Text.
Como a Supabase Edge Function usa o runtime Deno, você não precisa instalar as dependências. Em vez disso, pode importá-las com o prefixo npm:.
Programe o bot do Telegram
No arquivo scribe-bot/index.ts que você acabou de criar, adicione o código a seguir:
Análise detalhada do código
Há alguns pontos importantes sobre o código. Vamos analisá-lo passo a passo.
Processamento da solicitação recebida
Para processar a solicitação recebida, use o manipulador Deno.serve. O manipulador verifica se a solicitação contém o segredo correto e então a passa para a função handleUpdate.
Processamento de mensagens de voz, áudio e vídeo
O framework grammY oferece uma forma prática de filtrar tipos específicos de mensagem. Neste caso, o bot escuta mensagens de voz, áudio e vídeo.
Usando o contexto da solicitação, o bot extrai os metadados do arquivo e usa EdgeRuntime.waitUntil das tarefas em segundo plano do Supabase para executar a transcrição em segundo plano.
Assim, você pode dar uma resposta imediata ao usuário e processar a transcrição do arquivo em segundo plano.
Transcrição com a API da ElevenLabs
Por fim, no worker em segundo plano, o bot usa o SDK JavaScript da ElevenLabs para transcrever o arquivo. Quando a transcrição é concluída, o bot responde ao usuário com a transcrição e grava uma entrada de log no banco de dados do Supabase usando supabase-js.
Faça o deploy no Supabase
Se ainda não tiver feito isso, crie uma nova conta no Supabase em database.new e vincule o projeto local à sua conta do Supabase:
Aplique as migrações do banco de dados
Execute o comando a seguir para aplicar as migrações do banco de dados do diretório supabase/migrations:
Acesse o editor de tabelas no painel do Supabase e você verá uma tabela transcription_logs vazia.

Por fim, execute o comando a seguir para fazer o deploy da Edge Function:
Acesse a visualização de Edge Functions no painel do Supabase e você verá a função scribe-bot implantada. Anote a URL da função, pois precisará dela mais tarde. Ela deve ser parecida com https://<project-ref>.functions.supabase.co/scribe-bot.

Configure o webhook
Defina a URL do webhook do seu bot como https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (substituindo <...> pelos respectivos valores). Para isso, basta executar uma solicitação GET para a seguinte URL (no seu navegador, por exemplo):
Observe que FUNCTION_SECRET é o segredo que você definiu no arquivo .env.

Defina os segredos da função
Agora que todos os seus segredos estão configurados localmente, você pode executar o comando a seguir para defini-los no seu projeto Supabase:
Teste o bot
Por fim, você pode testar o bot enviando uma mensagem de voz, um arquivo de áudio ou vídeo.

Depois que a transcrição aparecer como resposta, volte ao editor de tabelas no painel do Supabase e você verá uma nova linha na tabela transcription_logs.
