트랜스크립션 Telegram 봇
트랜스크립션 Telegram 봇
Supabase Edge Functions에서 Deno와 TypeScript를 사용해 90개 이상의 언어로 오디오 및 비디오 메시지를 트랜스크립션하는 Telegram 봇을 구축하세요.
사용 방법 가이드 · 음성 텍스트 변환 빠른 시작을 완료했으며 Telegram 봇 토큰과 Supabase 계정이 있다고 가정합니다.
소개
이 튜토리얼에서는 음성 텍스트 변환 API를 통해 TypeScript와 ElevenLabs Scribe 모델을 사용하여 90개 이상의 언어로 오디오 및 비디오 메시지를 텍스트로 변환하는 Telegram 봇을 만드는 방법을 알아봅니다.
요구 사항
- API 키가 있는 ElevenLabs 계정
- Supabase 계정(database.new에서 무료 계정 가입 가능)
- 컴퓨터에 설치된 Supabase CLI
- 컴퓨터에 설치된 Deno 런타임 및 선택 사항으로 선호하는 IDE 설정
- Telegram 계정
설정
Telegram 봇 등록
BotFather를 사용하여 새 Telegram 봇을 만드세요. /newbot 명령을 실행하고 안내에 따라 새 봇을 만듭니다. 완료하면 비밀 봇 토큰을 받게 됩니다. 다음 단계에서 사용할 수 있도록 안전하게 기록해 두세요.

로컬에서 Supabase 프로젝트 만들기
Supabase CLI를 설치한 후, 다음 명령을 실행하여 로컬에 새 Supabase 프로젝트를 만드세요.
변환 결과를 기록할 데이터베이스 테이블 만들기
다음으로, 변환 결과를 기록할 새 데이터베이스 테이블을 만드세요.
그러면 supabase/migrations 디렉터리에 새 마이그레이션 파일이 생성됩니다. 파일을 열고 다음 SQL을 추가하세요.
Telegram 웹훅 요청을 처리하는 Supabase Edge Function 만들기
다음으로, Telegram 웹훅 요청을 처리할 새 Edge Function을 만드세요.
VS Code 또는 Cursor를 사용한다면 CLI에서 “Generate VS Code settings for Deno? [y/N]“라고 물을 때 y를 선택하세요.
환경 변수 설정
supabase/functions 디렉터리에서 새 .env 파일을 만들고 다음 변수를 추가하세요.
종속성
프로젝트에서는 몇 가지 종속성을 사용합니다.
- Telegram 웹훅 요청을 처리하기 위한 오픈 소스 grammY Framework
- Supabase 데이터베이스와 상호작용하기 위한 @supabase/supabase-js 라이브러리
- 음성 텍스트 변환 API와 상호작용하기 위한 ElevenLabs JavaScript SDK
Supabase Edge Function은 Deno 런타임을 사용하므로 종속성을 설치할 필요 없이 npm: 접두사를 통해 가져올 수 있습니다.
Telegram 봇 코드 작성
새로 만든 scribe-bot/index.ts 파일에 다음 코드를 추가하세요.
코드 자세히 살펴보기
코드에서 주목할 만한 몇 가지 사항이 있습니다. 하나씩 살펴보겠습니다.
음성, 오디오 및 비디오 메시지 처리
grammY 프레임워크는 특정 메시지 유형을 필터링하는 편리한 방법을 제공합니다. 이 경우 봇은 음성, 오디오, 비디오 메시지를 수신합니다.
요청 컨텍스트를 사용하여 봇은 파일 메타데이터를 추출한 다음 Supabase Background Tasks의 EdgeRuntime.waitUntil을 사용해 백그라운드에서 변환을 실행합니다.
이렇게 하면 사용자에게 즉시 응답을 제공하면서 백그라운드에서 파일 변환을 처리할 수 있습니다.
ElevenLabs API로 변환
마지막으로 백그라운드 워커에서 봇은 ElevenLabs JavaScript SDK를 사용해 파일을 텍스트로 변환합니다. 변환이 완료되면 봇은 사용자에게 텍스트 변환 결과로 답장하고 supabase-js를 사용해 Supabase 데이터베이스에 로그 항목을 작성합니다.
Supabase에 배포
아직 Supabase 계정이 없다면 database.new에서 새 계정을 만들고 로컬 프로젝트를 Supabase 계정에 연결하세요.
데이터베이스 마이그레이션 적용
다음 명령을 실행하여 supabase/migrations 디렉터리의 데이터베이스 마이그레이션을 적용하세요.
Supabase 대시보드의 테이블 편집기로 이동하면 비어 있는 transcription_logs 테이블이 표시됩니다.

마지막으로 다음 명령을 실행하여 Edge Function을 배포하세요.
Supabase 대시보드의 Edge Functions 보기로 이동하면 scribe-bot 함수가 배포된 것을 확인할 수 있습니다. 나중에 필요하므로 함수 URL을 기록해 두세요. https://<project-ref>.functions.supabase.co/scribe-bot와 비슷한 형태입니다.

웹훅 설정
봇의 웹훅 URL을 https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot로 설정하세요(<_..._>를 해당 값으로 대체). 이를 위해 다음 URL에 GET 요청을 실행하면 됩니다(예: 브라우저에서).
FUNCTION_SECRET은 .env 파일에서 설정한 시크릿입니다.

함수 시크릿 설정
이제 모든 시크릿을 로컬에서 설정했으므로 다음 명령을 실행하여 Supabase 프로젝트에 시크릿을 설정할 수 있습니다.
봇 테스트
마지막으로 봇에 음성 메시지, 오디오 또는 비디오 파일을 전송하여 테스트할 수 있습니다.

답장으로 텍스트 변환 결과가 표시되면 Supabase 대시보드의 테이블 편집기로 돌아가세요. transcription_logs 테이블에 새 행이 표시됩니다.
