본문 바로가기

코인/코인 개발

코인 거래량 급등 텔레그램(Telegram) 알림 봇 파이썬(Python)으로 만들기

지난 블로그에서 업비트 코인 거래량 급등 알리미를 파이썬으로 작성했었는데,

알림은 음성으로 잘 알려주는데 문제는 집 밖으로 나가서도 알림을 받고 싶었다.

 

이를 위해, 텔레그램으로 알림을 받으면 좋겠다 싶어서

간단하게 텔레그램 봇을 만들어서 해당 챗에 거래량 급등 시에 알림 메시지를 보내는 식으로

파이썬으로 작성해보았다.


먼저 텔레그램 봇은 @BotFather라는 텔레그램이 제공하는 봇 생성을 위한 봇을 통해 만들게 된다.

텔레그램에서 @BotFather를 검색 후 채팅방을 열어 시작('/start')하면

 

텔레그램(Telegram) @BotFather 시작 화면. 출처: Telegram

위 처럼 기능들을 알려준다.

 

/newbot 명령어로 봇 만들기를 수행하면 봇 이름(Name)과 봇 별명(Username)을 물어보는데 중복이 있으면 알려주니 채팅하듯이 작성해보자.

@BotFather의 /newbot 명령어 예시.

만들고 나면 API Token을 알려주는데, 이를 통해 해당 봇과 채팅을 프로그램으로 진행할 수 있다.

 

 

python-telegram-botpip를 통해 설치하고,

다음과 같은 간단한 형식으로 알림을 주도록, 기존 코드에 추가해보았다.

def alarm(message, market=None):
    code = market['code'] # 업비트 Ticker (예: 비트코인 원화는 KRW-BTC)
    name = market['name'] # 한글 이름 (예: 비트코인)
	upbit_url = 'https://upbit.com/exchange?code=CRIX.UPBIT.{}'.format(code)
	telegram_messages.append('[{}]({}) {}'.format(name, upbit_url, message))
    
def telegram_alert(context: CallbackContext) -> None:
    job = context.job
    chat_id = job.context[0]

    if len(telegram_messages) > 0:
        message = telegram_messages.pop()
        context.bot.send_message(chat_id=chat_id, text=message, parse_mode='MarkdownV2')

def start(update: Update, context: CallbackContext) -> None:
    chat_id = update.message.chat_id
    context.job_queue.run_repeating(telegram_alert, interval=1, first=1, context=[chat_id, ])
    

TELEGRAM_API_TOKEN = '' # 텔레그램 API Token
telegram_updater = Updater(TELEGRAM_API_TOKEN)

dispatcher = telegram_updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))

telegram_updater.start_polling()

telegram_updater.idle()

 

기존 코드에서 거래량이 급등하면 alarm 함수를 수행해 메시지를 큐에 쌓고

텔레그램 Dispatcher는 telegram_alert 함수를 통해, 메시지 Polling 해서 메시지가 있으면 해당 챗에 발송하는 간단한 방식이다.

 

동작시키고 알림이 오길 기다려봤다.

응? 뭘 잘못했나... 다시 '/start'...

 

스트라이크 거래량이 급등하였습니다.

텔레그램 알림 예시.

 

네이버 TTS의 발음이 좀 뭉개져서 '스트xx'로 들렸는데, 텔레그램으로 확인해보니 '스트라이크' 였다.

링크를 눌러 확인해보니 다음과 같이 잘 동작하는 것을 확인할 수 있었다.

 

텔레그램 알림이 제공한 링크를 눌러 확인한 결과 예시.

 

궁금하신 사항은 댓글로 문의 바랍니다.

 

8월 3일 업데이트: 다음 새로운 포스팅을 통해 좀 더 쉽게 코드를 개선하고 실행 가능한 코드도 첨부해 두었습니다.

2021.08.03 - [코인/코인 개발] - 코인 거래량 급등 텔레그램(Telegram) 알림 봇 파이썬(Python)으로 만들기 (2)

 

코인 거래량 급등 텔레그램(Telegram) 알림 봇 파이썬(Python)으로 만들기 (2)

이전 포스팅에서 python-telegram-bot을 사용해 알림을 보내는 기능에 대해 소개했었습니다. 2021.07.08 - [코인/코인 개발] - 코인 거래량 급등 텔레그램(Telegram) 알림 봇 파이썬(Python)으로 만들기 코인 거

blog.coinali.me