Telegram Bot Webhook 설정 및 테스트 가이드

텔레그램 봇 웹훅 설정 및 테스트 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 초보 개발자 및 중급 개발자
  • 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 조합으로 빠른 개발 가능