프로그래밍/파이썬

[Python] 텔레그램 봇 모듈 v20.0 릴리즈

퀀트매니아 2023. 1. 25. 21:20
728x90

텔레그램 봇 모듈 v20.0 릴리즈

 

안녕하세요.

오늘은 파이썬 텔레그램 봇 20.0 버전이 23년 1월 1일부터 정식으로 릴리즈 되어 해당 내용을 소개해드리려고 합니다.

 

기존에 포스팅 한 코드들은 모두 13 버전을 기반으로 작성한 코드였으나, 20.0 버전이 출시되면서 모듈을 사용하기 위한 방법들이 바뀐 부분이 있어서, 어떤 부분이 바뀌었는지 알아보는 시간을 가져보도록 하겠습니다.

 

 

python-telegram-bot

 

 

 

Version 20.0 바뀐 점

 

우선, 텔레그램 봇 모듈을 사용하기 위한 사용방법을 튜토리얼 사이트 코드를 보면서 비교해 보겠습니다.

 

▼ 튜토리얼 사이트는 아래 링크를 통해 확인해 보시면 됩니다.

13.x 버전 튜토리얼 (Your first Bot)

 

Home

Repository containing the v13.x version of the PTB wiki - python-telegram-bot/v13.x-wiki

github.com

 

20.0 버전 튜토리얼 (Your first Bot)

 

Home

We have made you a wrapper you can't refuse. Contribute to python-telegram-bot/python-telegram-bot development by creating an account on GitHub.

github.com

 

 

아래 코드는 13 버전 튜토리얼에서 설명한  '첫 번째 봇 만들기' 코드입니다.

13 버전에서는 아래와 같이 코드를 작성하여 텔레그램 채팅방에 사용자가 입장하는 경우 "I'm a bot, please talk to me!"라는 환영메시지를 띄웠습니다.

 

import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                     level=logging.INFO)

def start(update: Update, context: CallbackContext):
    context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")

updater = Updater(token='TOKEN', use_context=True)

dispatcher = updater.dispatcher

start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)

updater.start_polling()

 

20.0 버전에서는 사용방법이 전과 많이 바뀌어 아래 코드와 같이 작성해야 합니다.

 

import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
)

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")

if __name__ == '__main__':
    application = ApplicationBuilder().token('TOKEN').build()
    
    start_handler = CommandHandler('start', start)
    application.add_handler(start_handler)
    
    application.run_polling()

 

위 코드를 보시면 기존 코드와는 다르게 Updater 대신 ApplicationBuilder를 이용하여 사용자의 메시지를 주기적으로 확인하였고, start 함수를 보시면 async라는 키워드를 이용하여 비동기 방식으로 동작하는 것을 알 수 있습니다.

 

 

 

 

python-telegram-bot의 GitHub 페이지 중간에 설명 부분을 읽어보면, 20.0 버전부터는 파이썬의 비동기 모듈 기반으로 동작한다는 것을 확인할 수 있었습니다. 이 부분이 기존버전과 차이점이라고 볼 수 있겠습니다.

 

 

 

20.0 버전 대신 13 버전을 이용하는 방법

 

지금 pip 명령어를 통하여 모듈을 업그레이드하시거나 처음 설치를 진행하시면 20.0 버전으로 설치가 됩니다.

 

 

현재기준 모듈 설치시 20.0버전이 설치됩니다

 

 

물론, 처음 코드를 작성하시는 분들은 새로운 버전의 방식으로 계속 사용을 하시면 되므로, 20.0 버전을 설치하여 사용하셔도 무관하나, 저처럼 13 버전의 방식으로 코드를 작성하셨던 분들의 경우 20.0 버전을 사용하기 위해서 코드들을 모두 수정하셔야 하는 일이 생기게 됩니다.

 

코드 수정 대신에 업데이트를 안 하면 되겠지만, 또, 저처럼 업데이트를 진행하시고 당장 코드를 수정할 여유가 없으시다면, 아래와 같은 방법으로 모듈을 삭제 후 13.5 버전을 재설치하는 것을 추천드립니다.

 

pip uninstall python-telegram-bot

 

먼저, 언인스톨을 진행하신 뒤 아래와 같이 버전을 지정하여 python-telegram-bot을 재설치하시면 되겠습니다.

 

pip install python-telegram-bot==13.5

 

 

 

 

모듈명 뒤에 '=='을 붙이신 뒤 버전을 입력하시면 해당버전의 모듈이 설치됩니다.

물론, 임시방편일 뿐 계속 사용하다 보면 지원이 중단될 것이기 때문에 여유가 있을 때 20.0 버전에 맞게 코드를 수정하여 20.0 버전을 사용하는 것을 권장드립니다.

 

 

 

마무리...

 

오늘은 python-telegram-bot 모듈 업데이트 소식과 달라진 점, 그리고 13 버전을 계속 사용하는 방법에 대해 소개해드렸습니다. 다음 포스팅에서도 유용한 정보를 소개하는 시간으로 찾아뵙겠습니다. 감사합니다!

 

728x90