글
[파이썬] 텔레그램봇 이용한 시세 봇(1)
자동매매프로그램을 돌리는 와중에 외출할 경우에는 신경이 많이 쓰입니다. 봇은 잘 동작하고 있는지 다른 큰 문제는 없는지 지 등등 자동매매 프로그램의 상태를 알고 싶죠. 이런 경우에 원격데스크탑 sw를 이용하여 pc에 접속할 수 있습니다만, 간단하게 휴대폰에서 자동매매 프로그램의 상태를 확인할 수 있으면 좋을 것 같습니다.
이번에 알아볼 내용은 텔레그램봇을 이용하여 xing api와 연동하는 부분입니다. 우선 텔레봇을 만들고 메세지를 주고 받는 방벙에 대하여 알아보겠습니다.
우선 텔레그램봇을 만드는 과정입니다.
일단 텔레그램을 휴대폰에 설치하신 후 아래와 같이 botfather를 찾은 후 선택을 합니다.
그 후 /newbot 을 입력한 후 봇을 설명하는 문구를 입력합니다.
다음으로는 봇의 이름을 입력합니다. 원하는 이름을 입력하시면 되는데, 만약 이미 등록된 봇과 같은 이름은 사용할 수 없습니다. 그러면 해당 이름의 봇이 사용할 token을 알려줍니다. 아래 빨간색으로 줄쳐진 부분이 XingTrBot의 ID라고 보시면 됩니다. 이 값을 프로그램에 사용하여야 합니다.
이제 나만의 telegram bot이 만들어졌습니다. telegram에서 찾아보죠.
앞에서 입력한 봇 이름을 검색하면 됩니다.
해당 봇을 선택한 후 /start를 누르면 봇이 동작상태가 됩니다.
이제 telegram 쪽에서 작업할 내용은 모두 끝났습니다. 파이썬 프로그램으로 bot과 대화하는 방법에 대하여 알아봅시다.
우선 telegram bot 파이썬 패키를 설치합니다.
pip install python-telegram-bot --upgrade
코드 상에서는 아래 패키지와 함수를 import하면 됩니다.
import telegram
from telegram.ext import Updater, MessageHandler, CommandHandler
그 후 my_token에 botFather가 준 token값을 복사합니다.
my_token = 'gotFather가 준 토큰'
동작방법은 간단합니다. '/'로 시작하는 경우에는 명령어로 구분합니다. '/'가 없으면 일반 메세지이고요.
명령어와 일반 메세지가 들어왔을 때 불리어지는 함수(handler)를 등록하면 끝입니다.
우선 updater를 생성하고요.
updater = Updater(my_token)
작업을 하다보니 telegram_bot 버전이 upgrade되면서 사용방법이 많이 바뀌었습니다. 자세한 사항은 아래 참고하십시요.
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-Your-first-Bot
전체적인 사용법은 변화가 없는데, handler 함수가 불리어질 때 함수 인자가 변경이 되었습니다. 새 버전을 기준으로 설명합니다.
message가 왔을 때 받을 함수인 get_message, 명령어별로 받을 함수를 별도로 등록하면 됩니다.
아래 예에서 '/help'는 help_command()가 'sise'는 sise_command() 함수가 받습니다. 등록되지 않은 명령어의 경우에는 unknown() 함수 받도록 설정했습니다.
특히 sise의 경우에는 명령어 형식이 '/sise 코드' 이므로 코드값을 받을 수 있어야 합니다. 따라서 pass_args가 True로 설정하면 이 값도 받을 수 있습니다.
sise_command()를 좀 더 자세하게 보겠습니다.
함수의 인자는 아래와 같이 정의되어 있습니다. 사용자가 보낸 인자는 context.args 변수에 배열로 들어가있습니다. '/sise code' 로 입력을 하기 때문에 context.args[0]에 code가 들어있습니다. 과거 버전과 다르게 args가 context 안으로 들어갔습니다.
xing api와 연결하지 않아서 일단 임의의 값을 돌려주는 코드입니다. telegram bot이 어떻게 동작하는지 확인하는 용도이니 참고하십시요.
어떻게 동작하는지 telegram 화면으로 보여드리겠습니다.
의외로 telegram bot 만들고 메세지 주고 받는 방법이 간단합니다. 카카오톡에서도 이런 기능이 지원된다면 사용용처가 무척 많을 것 같은데요. 다음에는 xing api와 연동하여 시세 정보를 볼 수 있는 방법을 기술하도록 하겠습니다.
관련 소스는 아래 github에 올려놓았습니다.
https://github.com/multizone-quant/system-trading/blob/master/telegram-bot.py
'파이썬' 카테고리의 다른 글
[파이썬] 파이썬을 이용하여 날짜/시간 다루기 (0) | 2022.01.14 |
---|---|
[파이썬] 시간 다루기 (0) | 2020.12.27 |
[파이썬] glob, os 정리, 폴더(dir) 그리고 파일 다루기 (0) | 2020.12.23 |
[파이썬] Selenium Webdriver, 셀레니움 웹드라이버를 이용하여 웹페이지 동작시키기 (0) | 2020.07.08 |
[파이썬] 일정시간 입력이 없으면 자동으로 돌아오는 입력, input (0) | 2020.05.31 |