작성
·
13K
0
이 질문글 바로 이전과 비슷한 증상을 겪고 있는데요.
텔레그램 봇 명령어가 안먹힙니다.
sendMessage 명령어 입력해서 실행하면
RuntimeWarning: coroutine 'Bot.send_message' was never awaited
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
이런 오류 메세지가 뜨는데요. Type으로 봇 명령어들 감싸보면 coroutine 타입이라고 나와요.
찾아보니 코루틴 타입 이란게 비동기화여서 async 라이브러리를 이용해 부차적인 조치를 더 해줘야 이 명령어들이 작동할 수 있는거 같아요.
python-telegram-bot 라이브러리 버전은 20.0 사용하고 있습니다.
개인 세팅의 문제인지 아니면 봇 버전에 따라 변경된점이 있는지 혼자 해결이 안되네요.
도와주세요
답변 4
5
이 질문글 작성자입니다.
조회수를 보니 저와 같은 문제로 검색을 하시는 분이 많은거 같습니다.
답을 기다렸지만 강의는 죽은 듯 하여 강사의 답을 기대하긴 어렵네요.
결국 다른 경로로 해결을 했고, 제가 해결한 방법을 공유합니다.
유튜브나 기타 강의 영상은 텔레그램 봇을 만들고, 작동하기 위해 아래와 같은 코드를 썼습니다.
import telegram
token = '텔레그램 봇 API'
bot = telegram.Bot(token=token)
bot.send_message(chat_id,'보낼메세지')
현재는 텔레그램봇 라이브러리가 업데이트 되어서 과거 코드로는 작동이 안됩니다.
봇이 비동기화(coroutine) 타입이어서, 작동 신호를 넣어줘야 합니다.
아래와 같이 봇 명령어를 함수로 만들고, 그 함수를 실행해주는 코드가 추가로 넣어주세요.
import asyncio
async def main(): #실행시킬 함수명 임의지정
token = "텔레그램 봇 API"
bot = telegram.Bot(token = token)
await bot.send_message(chat_id,'보낼메세지')
asyncio.run(main()) #봇 실행하는 코드
도움이 되길 바랍니다.
1
안녕하세요,
도움이 될진 모르겠지만 어찌저찌 다른 방법을 찾아서 굳이 회원가입해서 답글 답니다.
제가 찾은 방법은 모듈 다운그레이드 입니다
여기 참고해서 버전 부분을 '==13.14' 이렇게 바꾸니까 설치되고 잘 작동하네요
참고로 저는 uninstall하고 설치 했습니다.
0