본문 바로가기
프로젝트/SRT&KTX 매진표 예매

SRT&KTX 기차표 매크로 예매 - (12) 예매시 텔레그램 알림 보내기(python-telegram-bot)

by 매크로메이커 2024. 1. 17.

지금까지 만든 예매 프로그램의 최대 단점은 예매가 되더라도 제한된 시간 내에 결제를 해야만 한다는 점이다.

 

매진표 예매를 돌리고 하루종일 쳐다볼 수도 없는 노릇이고, 이럴때 알림 서비스가 필요하다.

 

카카오톡이나 문자가 제일 좋지만 돈이 들어가는 관계로, 무료로 사용가능한 텔레그램과 이메일로만 구현하고자 한다.

 

이번 글에서 텔레그램 기능을 만들고, 다음 글에서 이메일 기능을 만들어보자.

 

python에서 텔레그램 메세지를 보내기 위해서 python-telegram-bot을 설치한다.

pip install python-telegram-bot

 

텔레그램 메세지를 보내려면, bot을 만들어서 token을 발행받고 개인의 chatId가 필요하다.

 

이건 다른 블로그에서 많이 소개하고 있으니, 아래 블로그를 참고해서 만들자.

 

[Python] Telegram bot 만들고 메세지 전송하기

텔레그램 봇 만들기

velog.io

 

아래와 같이 코드를 작성하고 token과 chatid를 입력해서 테스트해보자.

import telegram, asyncio

class Telegram:
    def __init__(self, token, chatid):
        self.bot = telegram.Bot(token=token)
        self.chatid = chatid

    def send_message(self, msg):
        asyncio.run(self.bot.sendMessage(chat_id=self.chatid, text=msg))


telegram_token = ""
telegram_chatid = ""
tele = Telegram(telegram_token, telegram_chatid)

tele.send_message("test")

 

메세지가 잘 도착하는 것을 확인할 수 있다:)

 

우린 pyqt와 연동해야하므로, 예외처리와 콜백함수까지 연결해서 아래와 같이 완성할 수 있다.

import telegram, asyncio

class Telegram:
    def __init__(self, token, chatid, error_callback, try_callback):
        self.error_callback = error_callback
        self.try_callback = try_callback

        self.bot = telegram.Bot(token=token)
        self.chatid = chatid

    def send_message(self, msg):
        try:
            asyncio.run(self.bot.sendMessage(chat_id=self.chatid, text=msg))
            self.try_callback(msg)
            return True
        except Exception as e:
            self.error_callback('텔레그램 발송 실패', f"텔레그램 메세지 {msg} 발송에 실패했습니다 - \n{e}")
            return False

 

 

[참고 사이트]

 

[Python] Telegram bot 만들고 메세지 전송하기

텔레그램 봇 만들기

velog.io