[Telegram bot] 텔레그램 봇 만들기(2) + RuntimeWarning: coroutine '' was never awaited
2025. 1. 14. 16:41ㆍ카테고리 없음
728x90
반응형
RuntimeWarning: coroutine 'Bot.send_message' was never awaited
1. python-telegram-bot 다운그레이드해 13.15 버전 사용
2. asyncio 모듈 추가
1. python-telegram-bot 다운그레이드해 13.15 버전 사용
python-telegram-bot 20 버전부터는 async 및 await를 사용한 비동기 프로그래밍이 사용됐다.
asyncio 쓰기 어려우면 다운그레이드하면 작동한다.
13.15 이하버전으로 사용하면 편하다.
pip uninstall python-telegram-bot
pip install python-telegram-bot=3.15
2. asyncio 모듈 추가
pip로 asyncio 모듈 설치
pip install asyncio
기존 코드
import telegram
import asyncio
token = '텔레그램 봇 API 토큰'
chat_id = 숫자
token = '텔레그램 봇 API'
bot = telegram.Bot(token=token)
bot.send_message(chat_id,'보낼메세지')
수정 코드
import telegram
import asyncio
token = '텔레그램 봇 API 토큰'
chat_id = 숫자
bot = telegram.Bot(token=token)
asyncio.run(bot.send_message(chat_id,'보낼메세지'))
import telegram
import asyncio
token = '텔레그램 봇 API 토큰'
chat_id = 숫자
async def main(): #실행시킬 함수명 임의지정
token = "텔레그램 봇 API"
bot = telegram.Bot(token = token)
await bot.send_message(chat_id,'보낼메세지')
asyncio.run(main()) #봇 실행하는 코드
`
asyncio는 비동기 프로그래밍을 위한 모듈로 CPU 작업과 I/O (Input & Output)을 병렬로 처리하는 기능을 제공한다.
def 앞에 async를 붙인 async def 비동기 함수를 코루틴 (coroutine)이라고 한며, 비동기 함수는 'await'와 쓰는 것이 특징이다. 이는 객체가 종료될 때까지 대기한 후 결과를 반환한다.
비동기 함수를 호출하기 위해서는 이벤트 루프에 등록해야 하고, run함수로 실행시켜야 한다.
반응형