인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của milly19874750

câu hỏi đã được viết

Tạo web, bot Telegram, API REST và ứng dụng di động thông qua thu thập thông tin

텔레그램 봇 명령어 오류 질문드립니다.

Viết

·

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 사용하고 있습니다.

개인 세팅의 문제인지 아니면 봇 버전에 따라 변경된점이 있는지 혼자 해결이 안되네요.

도와주세요

웹-크롤링rest-apipythonFlutterdjango

Câu trả lời 4

5

milly19874750님의 프로필 이미지
milly19874750
Người đặt câu hỏi

이 질문글 작성자입니다.

조회수를 보니 저와 같은 문제로 검색을 하시는 분이 많은거 같습니다.

답을 기다렸지만 강의는 죽은 듯 하여 강사의 답을 기대하긴 어렵네요.

결국 다른 경로로 해결을 했고, 제가 해결한 방법을 공유합니다.

 

유튜브나 기타 강의 영상은 텔레그램 봇을 만들고, 작동하기 위해 아래와 같은 코드를 썼습니다.

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

근면한 왜가리님의 프로필 이미지

안녕하세요,

도움이 될진 모르겠지만 어찌저찌 다른 방법을 찾아서 굳이 회원가입해서 답글 답니다.

제가 찾은 방법은 모듈 다운그레이드 입니다

https://sc.norwinlab.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AA%A8%EB%93%88-%EB%8B%A4%EC%9A%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C-%ED%95%98%EB%8A%94-%EB%B2%95

 

여기 참고해서 버전 부분을 '==13.14' 이렇게 바꾸니까 설치되고 잘 작동하네요

참고로 저는 uninstall하고 설치 했습니다.

 

0

rp042026240319님의 프로필 이미지

pip install -U python-telegram-bot --pre

Hình ảnh hồ sơ của milly19874750

câu hỏi đã được viết

Đặt câu hỏi