시놀로지 Python Telegram Bot 만들기: 메세지 응답 Message Handler

메세지에 응답하도록 코드를 수정한다. 메세지 응답은 Updater를 이용하여 업데이트가 되며, CommandHandler 나 MessageHandler에 의해 동작하게 되는 데, 우선 MessageHandler 사용법을 정리한다.

아래와 같이 우선 모듈을 불러온다.

from telegram.ext import Updater, MessageHandler, Filters

상태 업데이트를 위해 아래와 같이 Updater 설정한다.

updater = Updater(token = ‘TOKEN HERE’)

그런데 아래와 같은 메세지가 자꾸 뜨면서 문제가 발생했다.

ImportError: cannot import name ‘Type’

찾아보니, 시놀로지에 현재 설치되어 있는 python3 는 3.5.1 인데 Typing 모듈이 없다고 한다.

python3 -m pip install –user typing

내 경우에는 위 코드로 해도 해결이 안된다. Tornado 버젼을 아래와 같이 낮추니 된다.

python3 -m pip install –user tornado==5.1.1

Message Handler 관련하여서는 아래와 같이 설정한다.
1) Handler 가 처리할 function을 정의
2) Handler에 function 등록
3) Updater에 Handler 등록
4) Updater가 얼마나 간격으로 돌게 할지 설정

def get_message(bot, update):
update.message.reply_text(‘메세지를 받았습니다.’)

message_handler = MessageHandler(Filters.text, get_message)
updater.dispatcher.add_handler(message_handler)
updater.start_polling(timeout=3, clean=True)
updater.idle()

잘 돌아간다.


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *