보고서 완성되면 내 스마트폰으로 톡! 파이썬 슬랙 & 텔레그램 알림 봇 만들기

 

19편에서 윈도우 작업 스케줄러를 세팅하며 우리는 '무인 자동화'의 꿈을 이루었습니다. 새벽 6시에 컴퓨터가 혼자 깨어나 엑셀 보고서를 척척 만들어내죠. 그런데 문득 출근길 지하철에서 불안감이 엄습합니다. "오늘 아침에 코드가 에러 없이 잘 돌아갔을까? 어제 엑셀 파일을 열어두고 퇴근해서 PermissionError가 난 건 아니겠지?"

컴퓨터 앞에 앉아 직접 확인하기 전까지는 결과를 알 수 없다면 완벽한 마음의 평화를 얻기 어렵습니다. 18편에서 배운 이메일을 써도 되지만, 단순히 "보고서 생성 완료"라는 짧은 상태 메시지를 받기에는 이메일은 너무 무겁고 확인하기도 번거롭죠. 그래서 실무에서는 슬랙(Slack), 잔디(Jandi), 텔레그램(Telegram) 같은 '업무용 메신저'를 활용해 파이썬이 스마트폰으로 즉각적인 알림(Push)을 쏘게 만듭니다.


1. 텔레그램(Telegram) 봇으로 나만의 알림 비서 만들기

가장 쉽고 강력한 개인용 알림 수단은 텔레그램입니다. 텔레그램 앱에서 'BotFather'라는 공식 계정을 검색해 대화를 걸고 /newbot 명령어를 입력하면, 나만의 봇(Bot)이 생기며 아주 긴 영문/숫자 조합의 '토큰(Token)'을 발급해 줍니다. 그리고 내 계정의 고유 번호인 'Chat ID'만 알면 준비는 끝납니다.

파이썬 코드에서 텔레그램으로 메시지를 쏘는 방법은 놀라울 정도로 간단합니다. 17편 웹 크롤링에서 썼던 requests 라이브러리를 다시 꺼내옵니다.

import requests

def send_telegram_message(text):
    # BotFather에게 받은 토큰과 내 챗봇 아이디 입력
    bot_token = '여기에_토큰을_입력하세요'
    chat_id = '여기에_Chat_ID를_입력하세요'
    
    # 텔레그램 서버로 메시지를 쏘는 URL
    url = f'https://api.telegram.org/bot{bot_token}/sendMessage'
    
    # 전송할 데이터 세팅
    data = {'chat_id': chat_id, 'text': text}
    
    # 웹 브라우저 대신 requests로 전송 버튼(POST) 누르기
    response = requests.post(url, data=data)
    
    if response.status_code == 200:
        print("텔레그램 알림 전송 성공!")
    else:
        print("전송 실패. 토큰과 ID를 확인하세요.")

# 함수 실행해보기
send_telegram_message("✅ [자동화 봇] 팀장님, 일일 실적 보고서 생성이 완료되었습니다!")

이 함수를 여러분의 엑셀 자동화 코드 맨 마지막 줄에 끼워 넣기만 하면, 엑셀 파일이 저장되자마자 내 주머니 속 스마트폰이 "징~" 하고 울리며 성공 메시지를 띄워줍니다.


2. 슬랙(Slack)으로 팀원 전체에게 완료 알림 쏘기

개인 알림은 텔레그램이 좋지만, 회사에서 공식적으로 슬랙(Slack)을 쓴다면 특정 채널(예: #데이터보고서_채널)에 파이썬이 알아서 완료 메시지를 올리게 할 수도 있습니다. 이를 위해서는 슬랙 워크스페이스 설정에서 'Incoming Webhooks(수신 웹훅)'이라는 앱을 추가해야 합니다.

웹훅을 추가하면 https://hooks.slack.com/services/T000... 형태의 고유한 URL 주소를 줍니다. 파이썬은 그 주소로 편지를 던지기만 하면 됩니다.

import requests
import json

def send_slack_message(text):
    # 슬랙에서 발급받은 웹훅 URL 입력
    webhook_url = '여기에_웹훅_URL을_입력하세요'
    
    # 슬랙이 알아들을 수 있는 포맷(JSON)으로 메시지 포장
    payload = {'text': text}
    
    # requests로 전송하기
    response = requests.post(
        webhook_url, 
        data=json.dumps(payload), 
        headers={'Content-Type': 'application/json'}
    )
    
    if response.status_code == 200:
        print("슬랙 알림 전송 성공!")

# 함수 실행해보기
send_slack_message("📈 [데이터 봇] 전사 주간 매출 피벗 테이블 업데이트가 완료되었습니다. 공유 폴더를 확인해 주세요!")


에러가 났을 때만 알림을 받으려면? (try-except 활용)

성공했을 때 알림을 받는 것도 좋지만, 진짜 중요한 것은 '중간에 에러가 나서 코드가 멈췄을 때' 즉시 구조 요청을 보내는 것입니다. 파이썬의 try-except 문법을 쓰면 이 완벽한 모니터링 시스템을 구축할 수 있습니다.

try:
    # 1. 엑셀 불러오기 및 피벗 작업 (여기에 기존 코드 입력)
    # ... (데이터 처리 중) ...
    
    # 2. 무사히 끝나면 성공 알림
    send_telegram_message("✅ 보고서 생성 완료!")

except Exception as e:
    # 3. 만약 에러가 발생하면 멈추지 말고 에러 내용 알림 쏘기!
    send_telegram_message(f"🚨 [긴급] 코드 실행 중 에러가 발생했습니다: {e}")

이제 여러분은 24시간 잠들지 않고 내 코드를 감시해 주는 든든한 경비원까지 고용했습니다. 코드가 멈춰서 팀장님께 혼날 일은 영원히 사라졌습니다!


▶ 핵심 요약

  • 이메일보다 즉각적인 모니터링을 원한다면 requests 모듈을 활용하여 텔레그램 봇이나 슬랙 웹훅으로 자동 알림을 쏠 수 있습니다.
  • 텔레그램은 BotFather에게 받은 '토큰'과 내 'Chat ID'를 사용하여 간단한 POST 요청으로 메시지를 전송합니다.
  • 파이썬의 try-except 문법과 알림 봇을 결합하면, 자동화 코드가 작동 중단되었을 때 즉시 스마트폰으로 에러 메시지를 전송하는 완벽한 감시 시스템을 구축할 수 있습니다.

엑셀 파일로 주고받는 것도 귀찮다면, 아예 클라우드에서 다 같이 작업하는 것이 답이겠죠? 다음 24편에서는 '엑셀을 넘어 구글 스프레드시트(Google Sheets)에 파이썬으로 실시간 데이터를 꽂아 넣는 API 연동법'에 대해 다루어보겠습니다.


여러분의 회사에서는 업무용 메신저로 어떤 것을 가장 많이 사용하시나요? 슬랙? 팀즈(Teams)? 잔디? 카카오톡? 댓글로 여러분의 사내 메신저 문화를 공유해 주세요!


댓글

이 블로그의 인기 게시물

엑셀로는 안 열리는 200만 행 대용량 데이터, 파이썬으로 1초 만에 요약하기

수식이 걸린 엑셀 데이터, 파이썬으로 불렀더니 NaN이 뜨는 이유와 해결법

"파일을 찾을 수 없습니다" - 경로 오류(Path error)가 발생하는 이유와 대처법