파이썬으로 텔레그램 메시지 자동 발송하기

파이썬으로 텔레그램 메시지 자동 발송하기 (완성 코드 공개)

파이썬으로 텔레그램 메시지를 자동으로 발송하는 모습


"주식 데이터 수집 완료되면 알림 받고 싶다", "파이썬 스크립트가 오류 없이 잘 실행됐는지 확인하고 싶다", "매일 아침 날씨·환율 요약을 자동으로 받고 싶다"…

텔레그램 봇(Bot)을 활용하면 파이썬 코드 몇 줄만으로 이 모든 것이 가능합니다. 이전 게시글에서 소개한 카카오톡 자동 발송보다 API 설정이 훨씬 간단하고, 메시지뿐 아니라 이미지·파일·표 형식 메시지까지 무료로 발송할 수 있습니다. 텔레그램 앱만 설치되어 있으면 바로 시작할 수 있습니다.


1단계: 텔레그램 봇 만들기 (최초 1회만)

텔레그램 봇은 텔레그램 앱 안에서 직접 만들 수 있습니다. 아래 순서대로 진행하세요.

  1. 텔레그램 앱에서 검색창에 @BotFather를 검색합니다.
  2. BotFather 채팅창에서 /newbot을 입력합니다.
  3. 봇 이름 입력(예: "업무자동화 알림") → 봇 사용자명 입력(영문, 반드시 bot으로 끝나야 함, 예: mywork_alert_bot)
  4. 생성 완료 메시지와 함께 HTTP API 토큰이 발급됩니다. 이 값을 복사해 둡니다.
💡 Chat ID 확인 방법: 토큰 발급 후 텔레그램에서 방금 만든 봇을 검색해 /start를 입력합니다. 그 다음 브라우저 주소창에 아래 URL을 입력하면 JSON 응답에서 "chat" → "id" 값을 확인할 수 있습니다. 이것이 코드에서 사용할 Chat ID입니다.

https://api.telegram.org/bot여기에_토큰입력/getUpdates

2단계: 준비물 설치

터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install requests

텔레그램 봇 API는 HTTP 요청 방식으로 동작하기 때문에 requests 라이브러리만 있으면 됩니다. 이미 설치되어 있다면 넘어가도 됩니다.


3단계: 완성 코드

아래 코드를 그대로 복사해서 메모장에 붙여넣고, telegram_msg.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import requests
from pathlib import Path

# ① 설정
BOT_TOKEN = "여기에_봇_토큰_입력"    # ← 1단계에서 발급받은 토큰
CHAT_ID   = "여기에_Chat_ID_입력"    # ← 1단계에서 확인한 Chat ID

BASE_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"

# ② 텍스트 메시지 발송 함수
def send_message(text, parse_mode="HTML"):
    url  = f"{BASE_URL}/sendMessage"
    data = {
        "chat_id":    CHAT_ID,
        "text":       text,
        "parse_mode": parse_mode,   # HTML 또는 Markdown 서식 지원
    }
    res = requests.post(url, data=data)
    if res.status_code == 200:
        print(f"  ✔ 메시지 발송 완료")
    else:
        print(f"  ✘ 발송 실패: {res.status_code} / {res.text}")

# ③ 이미지 파일 발송 함수
def send_photo(image_path, caption=""):
    url  = f"{BASE_URL}/sendPhoto"
    with open(image_path, "rb") as img:
        res = requests.post(url, data={"chat_id": CHAT_ID, "caption": caption},
                            files={"photo": img})
    if res.status_code == 200:
        print(f"  ✔ 이미지 발송 완료: {Path(image_path).name}")
    else:
        print(f"  ✘ 발송 실패: {res.status_code} / {res.text}")

# ④ 파일 발송 함수
def send_document(file_path, caption=""):
    url  = f"{BASE_URL}/sendDocument"
    with open(file_path, "rb") as f:
        res = requests.post(url, data={"chat_id": CHAT_ID, "caption": caption},
                            files={"document": f})
    if res.status_code == 200:
        print(f"  ✔ 파일 발송 완료: {Path(file_path).name}")
    else:
        print(f"  ✘ 발송 실패: {res.status_code} / {res.text}")

# ⑤ 실행: 원하는 발송 함수 호출
# 텍스트 메시지 (HTML 서식 지원)
send_message("""📊 오늘의 업무 자동화 완료 알림

✅ 주식·환율 데이터 수집 완료
✅ 엑셀 보고서 차트 저장 완료
✅ 거래처 이메일 발송 완료

⏰ 완료 시각: 오후 3시 42분""")

# 이미지 발송 (차트 이미지 등)
# send_photo(r"C:\Users\내이름\Desktop\매출차트.png", caption="5월 매출 차트")

# 파일 발송 (엑셀, PDF 등)
# send_document(r"C:\Users\내이름\Desktop\보고서.xlsx", caption="5월 업무 보고서")

print("\n✅ 완료! 텔레그램으로 메시지를 발송했습니다.")

4단계: 실행 방법

  1. 코드 ① 설정의 BOT_TOKENCHAT_ID에 각각 발급받은 값을 입력합니다.
  2. 코드 ⑤ 실행의 send_message() 안 내용을 원하는 메시지로 수정합니다.
  3. 이미지나 파일도 함께 보내고 싶다면 해당 줄의 #을 삭제하고 파일 경로를 입력합니다.
  4. 터미널에서 아래 명령어로 실행합니다:
python telegram_msg.py

정상 실행 시 터미널에 이렇게 출력됩니다:

  ✔ 메시지 발송 완료

✅ 완료! 텔레그램으로 메시지를 발송했습니다.

텔레그램 앱을 열면 만들어둔 봇 채팅방에 메시지가 도착해 있습니다. 굵은 글씨(<b>), 기울임(<i>), 코드 형식(<code>) 같은 HTML 서식도 그대로 렌더링됩니다.


5단계: 자주 발생하는 오류와 해결법

오류 1: 401 Unauthorized

봇 토큰이 잘못 입력된 경우입니다. BotFather에서 발급받은 토큰을 다시 확인하세요. 토큰 앞뒤에 공백이 없는지도 확인합니다.

오류 2: 400 Bad Request — chat not found

Chat ID가 잘못 입력된 경우입니다. 봇에게 /start 메시지를 보낸 후 getUpdates URL을 다시 호출해 Chat ID를 재확인하세요. /start를 보내지 않으면 Chat ID가 생성되지 않습니다.

오류 3: 메시지는 가는데 서식(굵기, 색상)이 적용 안 됨

parse_mode가 제대로 설정되어 있는지 확인하세요. HTML 서식을 사용하려면 parse_mode="HTML"이 반드시 포함되어야 합니다. 마크다운 방식을 선호하면 parse_mode="Markdown"으로 변경하고 *굵은글씨*, `코드` 형식으로 작성합니다.


응용: 파이썬 스크립트 오류 발생 시 자동 알림 받기

장시간 실행되는 자동화 스크립트에 텔레그램 알림을 추가하면, 오류가 발생했을 때 즉시 알림을 받을 수 있습니다. 기존 스크립트의 try/except 구문에 아래처럼 추가하면 됩니다.

from telegram_msg import send_message
import traceback

try:
    # 기존 자동화 코드
    pass

except Exception as e:
    error_msg = f"""🚨 스크립트 오류 발생!

❌ 오류 내용: {str(e)}
📄 상세:
{traceback.format_exc()[:500]}"""
    send_message(error_msg)
    raise
💡 이전 게시글과 결합하면: 주식·환율 자동 수집 편의 스크립트 마지막에 이 코드를 붙이면 매일 장 마감 후 수집 결과와 차트 이미지를 텔레그램으로 자동 수신할 수 있습니다. 차트 자동 저장 편과 결합하면 차트 이미지 파일을 텔레그램으로 바로 발송하는 것도 가능합니다.

핵심 요약

  • 준비물: 텔레그램 앱 + BotFather에서 봇 생성 + pip install requests
  • 설정: BOT_TOKEN과 CHAT_ID 입력 후 메시지 내용 수정
  • 실행: 터미널에서 python telegram_msg.py 입력
  • 결과: 텍스트·이미지·파일 발송 모두 지원, HTML 서식 그대로 렌더링

이 코드를 응용하면 특정 조건(주가 급등락, 스크립트 오류)이 충족될 때만 알림을 발송하는 조건부 알림 시스템도 만들 수 있습니다.

이 블로그의 인기 게시물

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁