Programming

📬 Python으로 텔레그램에 알림 보내는 방법 (봇 API 활용)

quantoasis 2025. 3. 27. 10:50
반응형

자동화 모니터링, 에러 감지, 백업 완료 알림까지! Python으로 텔레그램 봇을 활용해 실시간 메시지를 전송해보세요.


🧱 1. 텔레그램 봇 만들기

📌 1-1. @BotFather 실행

텔레그램 앱을 열고 검색창에 @BotFather 입력 → 채팅 시작

/start
/newbot
  • 봇 이름 입력 (ex: My Alert Bot)
  • 봇 사용자명 입력 (반드시 bot으로 끝나야 함. ex: my_alert_bot)

성공 시 아래와 같은 메시지와 함께 토큰(token)을 제공합니다.

Use this token to access the HTTP API:
123456789:ABCdefGHIjklMNOpqrSTUvwxYZ

✅ 이 토큰은 절대 외부에 유출되지 않도록 주의하세요!


🔍 2. Chat ID 확인하기

텔레그램 메시지를 보내려면 대상의 chat_id가 필요합니다.

✅ 방법 1: @userinfobot 사용

  1. @userinfobot 채널 검색
  2. /start 입력
  3. 다음과 같은 메시지가 나옵니다:
Your Chat ID: 987654321

이 값을 기억하세요. 개인 알림용 chat_id입니다.


🧪 3. Python 코드로 메시지 전송

📦 패키지 설치

pip install requests python-dotenv

🧾 .env 파일 구성 (보안 권장)

TELEGRAM_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
TELEGRAM_CHAT_ID=987654321

🧠 Python 스크립트

import os
import requests
from dotenv import load_dotenv

# 보안 처리: .env 파일에서 변수 불러오기
load_dotenv()
TOKEN = os.getenv("TELEGRAM_TOKEN")
CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")

def send_telegram_message(message: str):
    url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
    params = {
        'chat_id': CHAT_ID,
        'text': message
    }
    response = requests.get(url, params=params)

    if response.status_code == 200:
        print("✅ 메시지 전송 성공!")
    else:
        print(f"❌ 실패: {response.text}")

# 예시 호출
send_telegram_message("📢 백업 완료! 서버 상태 양호합니다.")

🛠 4. 실전 예제 모음

🎯 에러 발생 시 알림

try:
    result = do_critical_job()
except Exception as e:
    send_telegram_message(f"🚨 오류 발생: {e}")

📆 매일 아침 데이터 처리 완료 알림

send_telegram_message("✅ 일일 리포트 생성 완료 (07:30 AM)")

👥 5. 단체 채팅방에 메시지 보내기 (그룹 알림)

  1. 그룹방을 만든 후 봇을 초대합니다.
  2. 봇이 메시지를 보내기 위해 한 번은 사람이 그룹에 메시지를 보내야 합니다.
  3. 아래 주소로 group chat ID를 확인:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates

메시지를 한 번 보낸 후 이 주소를 접속하면, 응답 JSON에 "chat":{"id":-xxxxxxxx} 항목이 나옵니다.

  • chat.id 값이 마이너스(-) 로 시작하면 그룹 채팅방입니다.

🎨 6. 고급 기능 (옵션 활용)

✅ 메시지에 마크다운 적용

params = {
    'chat_id': CHAT_ID,
    'text': "*데이터 처리 완료!* _자세한 내용은 링크를 참고하세요_",
    'parse_mode': 'Markdown'
}

✅ 버튼이 있는 메시지 보내기

params = {
    'chat_id': CHAT_ID,
    'text': '📈 리포트를 확인하세요:',
    'reply_markup': {
        'inline_keyboard': [[
            {'text': '📊 리포트 보기', 'url': 'https://your-report-link.com'}
        ]]
    }
}

requests.post(url, json=params) 방식으로 전송해야 합니다.


🔐 보안 팁 요약

  • TOKEN, CHAT_ID는 코드에 하드코딩하지 말고 .env 또는 환경변수 사용
  • GitHub 업로드 시 .env는 반드시 .gitignore 처리
  • 봇은 쓰기 권한만 갖고 있어야 하며, 민감한 데이터는 보내지 않는 것이 원칙

🧩 확장 아이디어

  • apscheduler, schedule 과 함께 정기 알림
  • 텔레그램으로 데이터 시각화 이미지(PNG) 전송
  • 텔레그램을 통한 간단한 모니터링 대시보드 구현

✅ 마무리

텔레그램은 Python과의 궁합이 매우 좋아 실시간 알림, 서버 상태 보고, 에러 모니터링 등에 최고의 선택입니다.

코드도 간단하고 무료로 사용 가능하니, 작은 스크립트부터 실전 업무까지 바로 적용해보세요!


반응형