[python] Tornado와 텔레그램 봇 개발

Tornado와 텔레그램

Tornado는 파이썬 기반의 웹 프레임워크로, 비동기 처리와 고성능 웹 서비스를 지원하는 특징이 있습니다. 이번 포스트에서는 Tornado를 사용하여 텔레그램 봇을 개발하는 방법을 알아보겠습니다.

Tornado 설치 및 설정

Tornado를 사용하기 위해서는 먼저 설치해야 합니다. 다음과 같이 명령어를 사용하여 Tornado를 설치할 수 있습니다.

pip install tornado

Tornado를 설치한 후에는 프로젝트 폴더를 생성하고, Tornado 애플리케이션을 설정해야 합니다. 다음과 같이 app.py 파일을 생성하고, Tornado 애플리케이션을 설정합니다.

import tornado.ioloop
import tornado.web
import tornado.httpclient

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

app.py 파일을 실행하면 웹 서버가 실행되고, http://localhost:8888로 접속하면 “Hello, world”라는 문구가 표시됩니다.

텔레그램 봇 개발

이제 Tornado를 사용하여 텔레그램 봇을 개발해 보겠습니다. 텔레그램 봇을 개발하기 위해서는 먼저 텔레그램에서 봇을 생성해야 합니다.

  1. 텔레그램 앱을 다운로드하고, 로그인합니다.
  2. BotFather를 검색하여 봇을 생성합니다.
  3. 봇의 이름과 유저명을 설정하고, 봇 생성 완료 메시지에서 토큰을 복사합니다.

이제 텔레그램 봇을 개발하기 위해 다음과 같이 bot.py 파일을 생성합니다.

import tornado.ioloop
import tornado.web
import tornado.httpclient

class MainHandler(tornado.web.RequestHandler):
    def post(self):
        chat_id = self.get_body_argument('message')['chat']['id']
        text = self.get_body_argument('message')['text']
        self.send_message(chat_id, text)

    def send_message(self, chat_id, text):
        token = "YOUR_TELEGRAM_BOT_TOKEN"
        url = f"https://api.telegram.org/bot{token}/sendMessage"
        body = {"chat_id": chat_id, "text": text}
        http_client = tornado.httpclient.HTTPClient()
        try:
            response = http_client.fetch(url, method="POST", body=json.dumps(body))
        except Exception as e:
            print(f"Failed to send message: {e}")
        http_client.close()

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

bot.py 파일을 실행하면 Tornado 웹 서버가 실행되고, 텔레그램에서 메시지를 받아 해당 메시지를 다시 보내는 간단한 봇이 작동합니다.

결론

이렇게 Tornado를 사용하여 텔레그램 봇을 개발하는 방법에 대해 알아보았습니다. Tornado의 강력한 비동기 처리 기능과 텔레그램 봇 API를 활용하여 다양한 기능을 개발할 수 있습니다. 추가로, Tornado와 텔레그램 봇에 대해 더 자세히 알고 싶다면 공식 문서를 참고하시기 바랍니다. Happy coding!