이 글은 python-telegram-bot 패키지 v20.8 이후 버전으로 작성 했습니다.
검색해서 나온 예시가 v13.x 버전 위주 코드라 패키지 다운그레이드 해서 작성하니까 오류가 더 많이 터져서 공식 문서를 보고 작성했다.
Updater - python-telegram-bot v21.0.1
Previous SimpleUpdateProcessor
docs.python-telegram-bot.org
import telegram
import gspread
import logging
from telegram import Update
from telegram.ext import MessageHandler, Application, filters
import os
from dotenv import load_dotenv
import asyncio
load_dotenv()
bot_token = os.getenv("BOT_TOKEN")
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)
async def handle_message(update, context):
message = update.message
text = message.text
# 텔레그램 봇 생성
bot = telegram.Bot(token=BOT_TOKEN)
#봇에게 온 메세지 보내기
await context.bot.send_message(chat_id="메세지를 전달받기 원하는 챗id", text=text)
if __name__ == '__main__' :
#실시간으로 메세지 받아오기
#v20 이후 Updater가 아닌 Application메서드를 씀
application = Application.builder().token(bot_token).build()
#봇에게 개인텔로 온 대화만 메세지 전송
application.add_handler(MessageHandler(filters.ChatType.PRIVATE,handle_message))
application.run_polling(allowed_updates=Update.MESSAGE)
구글링 및 ChatGPT가 알려주는 코드 중 실시간 메세지를 처리 할 때 필요한 Updater 메서드가 계속 오류가 났다.
찾아보니까 v20.x 이후 부터 많이 바뀌었다고 한다. 그래서 쓰레드 대신 콜백, 비동기로 API랑 통신을 하거나, 실시간 이벤트를 핸들링 할 때 Application 메서드를 사용하는 등 처리를 해야한다.
Transition guide to Version 20.0
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
---
await 이후 받아오는 값은 뭘까?
success 일 경우 reply로 전송 완료되었다. 답할 수 있도록 기능추가
봇이 메세지를 일정시간 전송하지 못할 경우 재전송하도록 구성
https://docs.python-telegram-bot.org/en/v21.0.1/telegram.bot.html#telegram.Bot.forward_message
'코딩 > Python' 카테고리의 다른 글
jira에서 이슈가 발생하면 Telegram bot이 알려주는 프로그램 만들기(진행중) (0) | 2024.05.05 |
---|---|
[python] 'str' object is not callable (0) | 2023.08.08 |
[셀레니움] is not clickable at point 오류 (0) | 2023.07.31 |