지난 블로그에서 업비트 코인 거래량 급등 알리미를 파이썬으로 작성했었는데,
알림은 음성으로 잘 알려주는데 문제는 집 밖으로 나가서도 알림을 받고 싶었다.
이를 위해, 텔레그램으로 알림을 받으면 좋겠다 싶어서
간단하게 텔레그램 봇을 만들어서 해당 챗에 거래량 급등 시에 알림 메시지를 보내는 식으로
파이썬으로 작성해보았다.
먼저 텔레그램 봇은 @BotFather라는 텔레그램이 제공하는 봇 생성을 위한 봇을 통해 만들게 된다.
텔레그램에서 @BotFather를 검색 후 채팅방을 열어 시작('/start')하면
위 처럼 기능들을 알려준다.
/newbot 명령어로 봇 만들기를 수행하면 봇 이름(Name)과 봇 별명(Username)을 물어보는데 중복이 있으면 알려주니 채팅하듯이 작성해보자.
만들고 나면 API Token을 알려주는데, 이를 통해 해당 봇과 채팅을 프로그램으로 진행할 수 있다.
python-telegram-bot을 pip를 통해 설치하고,
다음과 같은 간단한 형식으로 알림을 주도록, 기존 코드에 추가해보았다.
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)
'코인 > 코인 개발' 카테고리의 다른 글
파이썬으로 캔들차트 그리기 (0) | 2021.07.10 |
---|---|
업비트(Upbit) API를 이용해 프로그램 개발 시 주의 사항 (1) | 2021.07.09 |
업비트 API를 이용한 코인 거래량 급등 알리미 프로그램 (7) | 2021.07.07 |
업비트 (Upbit) Open API 키 발급 받기 (0) | 2021.07.07 |
Alien Worlds (TLM) 자동 Mining (0) | 2021.07.04 |