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

인프런 커뮤니티 질문&답변

공유진님의 프로필 이미지

작성한 질문수

파이썬으로 영화 예매 오픈 알리미 만들기

텔레그램 봇 구축하기

토큰을 통해서 제 고유아이디를 알아내야되는데 반환되는것이 하나도 없음

작성

·

37

0

토큰을 통해서 제 고유아이디를 알아내야되는데 반환되는것이 하나도 없음

안녕하세요.. 지금 인프런을 통해서 강의를 듣고있는데, 모르는것이 많아서 댓글 질문 남깁니다..
참고로 저는 Mac, visual code 사용하고있습니다.
현재, 진행되고있는 부분은 텔레그램봇을 통해서 몇개의 채팅 이후 반환값을 받아서 제 고유아이디를 알아내야되는데, 아래와 같이 코딩을 하여서 실행하였으나, 반환되는것이 하나도 없습니다. 문제가 무엇인지 알려주시면 너무 감사드리겠습니다.
import telegram
import asyncio
bot = telegram.Bot(token='제 토큰')
async def main():
updates = await bot.getUpdates()
for i in updates:
print(i)

asyncio.run(main())

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.
공유진님, 텔레그램 봇을 통해 고유 아이디를 알아내는 방법에 대해 안내드리겠습니다.

첫째, getUpdates() 메소드를 호출할 때 아무런 업데이트도 반환되지 않는다면, 다음 사항들을 확인해주세요:

  1. 토큰 확인: 봇의 토큰이 정확히 입력되었는지 다시 한번 확인하시기 바랍니다.
  2. 텔레그램 봇 활성화: 텔레그램 봇과 대화를 시작했는지 확인하세요. 봇이 대화를 시작하지 않았으면, 업데이트는 발생하지 않습니다.
  3. 봇 권한 설정: 봇의 권한이 충분한지 확인하세요. 가령, 채팅 권한이 없다면 메시지를 받지 못할 수 있습니다.

둘째, getUpdates()는 요청 시점 이후의 업데이트만 반환하므로, 이미 메시지가 존재한다면, 이 메시지를 수신하기 위해 ‘웹훅’ 대신 반복적인 getUpdates() 호출을 확인하세요.

마지막으로, 코드는 다음과 같이 수정될 수 있습니다:

import telegram
import asyncio

bot = telegram.Bot(token='제 토큰')

async def main():
    updates = await bot.get_updates(timeout=10)  # 시간을 늘려 업데이트 수신을 기다리십시오
    for u in updates:
        print(u.message.chat_id, u.message.text)  # 고유아이디(챗아이디) 및 메시지 출력

asyncio.run(main())

실패할 경우, 직접 봇에게 메시지를 보내고, 메시지를 송신해야만 업데이트 정보를 받을 수 있습니다. 만약 그래도 해결되지 않으면, 다른 방법으로는 ‘텔레그램 API 문서‘를 참고하여 직접적인 해결 방법을 찾아보세요.

도움이 되셨길 바랍니다!