텔레그램 봇 웹훅 설정 및 테스트 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 초보 개발자 및 중급 개발자
- Telegram 봇 개발, 웹훅 배포, 로컬 서버 테스트에 관심 있는 인원
- Python, Flask 기반 백엔드 개발 지식을 기본으로 가정
핵심 요약
- 웹훅 사용 이유: 실시간성과 서버 부하 감소를 위해
Webhooks
를 사용 (예:Telegram
에서 직접 업데이트 전달) - 로컬 서버 공개 방법:
Pinggy
를 통해HTTPS
공개 URL 생성 (ssh -p 443 -R0:localhost:8000 qr@a.pinggy.io
) - 핵심 코드:
Flask
서버 기반 웹훅 핸들러 (@app.route('/webhook', methods=['POST'])
)
섹션별 세부 요약
1. Telegram 봇 생성
@BotFather
와 대화하여/newbot
명령으로 봇 생성- 봇 토큰(
123456789:ABCDefGhIJKlmNoPQRsTUVwxyZ
)을 안전하게 저장 - 봇 이름과 유저네임 설정 후 토큰 획득
2. Flask 기반 웹훅 서버 구현
Flask
라이브러리 사용 (pip install flask
)/webhook
경로에서 JSON 업데이트 수신 및 로깅 처리- 예:
update = request.get_json()
- 메시지 수신 시
chat_id
추출 및 로그 기록
3. Pinggy로 로컬 서버 공개
ssh -p 443 -R0:localhost:8000 qr@a.pinggy.io
명령 실행Pinggy
가 제공하는HTTPS
공개 URL 예시:https://example.pinggy.io
4. 웹훅 설정 및 테스트
Bot API
로 웹훅 URL 등록 (curl -X POST "https://api.telegram.org/bot
)/setWebhook?url=URL" - 봇에게 메시지 전송 후 Flask 서버 로그 확인
- 예:
INFO:root:Message from 123456789: Hello
5. 메시지 응답 기능 추가
requests
라이브러리 사용 (pip install requests
)send_message
함수 구현:url = f"https://api.telegram.org/bot{token}/sendMessage"
- 웹훅 핸들러에서 사용자 메시지 기반 응답 전송
결론
- 실무 팁:
Pinggy
를 통해 로컬 환경에서 웹훅 테스트 가능, 배포 전 안정성 검증 필수 - 핵심 요약:
Webhooks
는 실시간성과 확장성에 유리,Flask
+Pinggy
조합으로 빠른 개발 가능