결론부터
- 1TDLib 은 통신·암호화·저장·업데이트를 맡는 공식 클라이언트 라이브러리.
- 2JSON 으로 보내고 받기 — @extra 로 요청과 답을 맞춘다.
- 3로그인은 상태대로 값만 넣고, 데이터 폴더는 계정처럼 지킨다.
TDLib 은 '텔레그램 앱의 속'
TDLib(Telegram Database Library)은 텔레그램이 직접 만들어 공개한 클라이언트 라이브러리입니다. 텔레그램 앱이 화면 뒤에서 하는 일 — 서버와의 통신, 암호화, 기기 안 저장, 업데이트 순서 맞추기 — 을 통째로 맡아 줍니다. 내 앱은 화면과 기능만 만들면 됩니다. 오픈 소스이고, 윈도우·맥·리눅스·안드로이드·iOS·웹어셈블리 등에서 돌아갑니다.
| TDLib 이 대신 하는 일 | 직접 MTProto 를 다루면 |
|---|---|
| 암호화·인증 키·데이터 센터 연결 | 직접 구현(MTProto 한눈에) |
| 업데이트 순번·빈칸 메우기 | 직접 구현(업데이트 처리) |
| 피어·파일 참조·대화 목록 저장 | 직접 저장소 설계(피어·파일 참조) |
| 레이어 맞추기 | 새 레이어마다 직접 따라가기 |
쓰는 방식 — 보내고 받기
TDLib 은 모든 일이 비동기입니다. 요청을 보내 두고, 답과 업데이트를 하나의 통로로 받아 처리합니다.
- JSON 방식: 요청을 JSON 문자열로 보내고(send) 결과·업데이트를 JSON 으로 받습니다(receive). C 함수를 부를 수 있는 언어라면 어디서든 씁니다. 요청에
@extra값을 붙여 두면 어느 요청의 답인지 맞출 수 있습니다. - 언어별 연결: 자바·C# 연결은 공식으로 함께 있고, 다른 언어는 공식 예제 모음에서 고릅니다.
- 업데이트를 기억해 쓴다: 사용자·대화 정보는 업데이트로 계속 들어옵니다. 앱은 받은 순서대로 반영해 자기 쪽 목록을 유지합니다.
로그인은 상태로 진행된다
TDLib 은 지금 무엇이 필요한지를 '로그인 상태' 업데이트로 알려 줍니다. 상태에 맞는 값을 넣으면 다음 상태로 넘어갑니다.
- 설정 기다림 →
setTdlibParameters: api_id·api_hash(발급), 데이터 저장 폴더, 시험 서버 사용 여부 등 - 전화번호 기다림 → 번호 넣기
- 코드 기다림 → 받은 코드 넣기(새 번호면 가입 정보)
- 비밀번호 기다림 → 2단계 인증 비밀번호(SRP 계산은 TDLib 이 한다)
- 준비 끝 → 이제 대화 목록·메시지 요청
직접 구현할 때의 메서드 순서는 로그인 흐름과 같고, TDLib 은 이를 상태 하나하나로 감싼 것입니다.
이럴 때 TDLib
| 상황 | 권하는 길 |
|---|---|
| 나만의 텔레그램 앱·데스크톱 도구 | TDLib |
| 내 계정의 대화 백업·정리 도구 | TDLib(약관 범위 안 — 이용 약관) |
| 알림·응대·그룹 관리 | TDLib 말고 봇 API(API 4가지) |
설치·빌드는 TDLib 빌드와 첫 연결에서 이어집니다.
자주 묻는 질문
TDLib 은 무엇인가요?
텔레그램이 만들어 공개한 오픈 소스 클라이언트 라이브러리입니다. 통신·암호화·기기 안 저장·업데이트 정리를 대신 해 텔레그램 앱을 만들 때 씁니다.
TDLib 은 어떤 언어에서 쓰나요?
C 함수를 부를 수 있는 언어라면 JSON 방식으로 쓸 수 있고, 자바·C# 연결은 공식으로 함께 있습니다.
TDLib 에도 api_id 가 필요한가요?
네. setTdlibParameters 에 my.telegram.org 에서 받은 api_id·api_hash 를 넣습니다.
봇을 만들 때도 TDLib 을 쓰나요?
알림·응대·그룹 관리 봇이라면 더 간단한 봇 API 가 맞습니다.
참고한 공식 문서
한눈에 정리
- 1맡는 일
통신 · 암호화 · 저장.
- 2쓰는 법
send · receive · @extra.
- 3로그인
상태별로 값 넣기.
최종 수정 2026-10-06