아직도 텔레그램 안쓰니?
텔레그램 봇 API 소개 (ChatGPT 번역) 본문
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Introduction-to-the-API
순수한 텔레그램 봇 API
봇 API는 telegram.Bot 클래스를 통해 노출됩니다. 이 메서드들은 공식 텔레그램 봇 API에서 설명된 메서드들의 snake_case 버전입니다. 텔레그램 문서에서와 같은 정확한 camelCase 메서드 이름도 편의를 위해 사용할 수 있습니다. 예를 들어, telegram.Bot.send_message는 telegram.Bot.sendMessage와 동일합니다. 봇 API의 모든 클래스는 telegram 모듈에서도 찾을 수 있으며, 예를 들어 Message 클래스는 telegram.Message로 사용할 수 있습니다.
액세스 토큰을 생성하려면 BotFather와 몇 가지 간단한 단계를 따라야 합니다(여기에 설명되어 있음).
자세한 내용은 개발자를 위한 공식 텔레그램 문서인 Bots: An introduction for developers에서 확인할 수 있습니다. 또한 텔레그램 API 작업 원리를 알아보기 위한 공식 자습서도 유용할 수 있습니다(해당 자습서에서는 Java를 사용하지만 Python 코드에 대한 링크를 찾을 수 있습니다).
안녕하세요, 텔레그램!
API를 사용하고 python-telegram-bot과 어떻게 사용하는지 알아보기 위해 새로운 Python 파일을 만들어보세요.
먼저 telegram.Bot의 인스턴스를 생성하고 자격 증명이 올바른지 확인하려고 합니다. 다음 코드를 파일에 붙여넣어주세요. 'TOKEN'은 @BotFather로부터 받은 API 토큰으로 대체해야 합니다.
import asyncio
import telegram
async def main():
bot = telegram.Bot("TOKEN")
async with bot:
print(await bot.get_me())
if __name__ == '__main__':
asyncio.run(main())
여기에서는 API 메서드 getMe를 호출하기만 합니다. 'async with bot:'는 PTB가 리소스를 올바르게 얻고 해제할 수 있도록합니다. 파일을 실행하면 다음과 유사한 출력을 얻어야합니다.
$ python main.py
User(first_name="Toledo's Palace Bot", is_bot=True, username="ToledosPalaceBot", ...)
지금까지는 잘 진행되었습니다. 이제 실제로 어떤 작업을 수행해 볼 수 있습니다. 메시지를 보내보겠습니다.
중요한 점
봇은 사용자와 대화를 시작할 수 없습니다. 사용자는 봇을 그룹에 추가하거나 먼저 봇에게 메시지를 보내야 합니다. 사람들은 t.me/<봇_사용자_이름> 링크 또는 사용자 이름 검색을 사용하여 봇을 찾을 수 있습니다.
그 제한 때문에, 먼저 봇에게 메시지를 보내야 합니다. 그렇게 한 후에는 파일의 main 함수를 다음과 같이 리팩토링하여 업데이트를 가져올 수 있습니다.
async def main():
bot = telegram.Bot("TOKEN")
async with bot:
updates = (await bot.get_updates())[0]
print(updates)
이제 출력은 다음과 같이 보일 것입니다 (출력을 약간 줄였습니다).
$ python main.py
Update(message=Message(chat=Chat(first_name='John', id=1234567890, last_name='Doe', ...), from_user=User(first_name='John', id=1234567890, last_name='Doe', ...), text='Hi!', ...), update_id=219017225)
채팅 ID를 복사하고, 여기서는 1234567890입니다. 업데이트[0].message.from_user.id와 같이 엑세스할 수도 있습니다. 이렇게 하면 업데이트[0]가 Update 클래스의 인스턴스이기 때문입니다. 이제 채팅 ID가 있으므로 main()을 다시 조정하여 메시지를 보낼 수 있습니다.
async def main():
bot = telegram.Bot("TOKEN")
async with bot:
await bot.send_message(text='Hi John!', chat_id=1234567890)
이제 봇을 사용하여 메시지를 보낼 수 있게 되었습니다.
순수한 API를 넘어서
이 모든 것은 좋지만, 일반적으로 봇이 더 복잡한 사용자 입력에 실제로 반응하길 원합니다. 즉, 챗봇을 구축하길 원합니다. python-telegram-bot은 작업을 크게 간소화해주는 강력한 확장 모듈인 telegram.ext를 제공합니다. 이 모듈에 대한 소개는 "튜토리얼: 첫 번째 봇"에서 찾을 수 있습니다.
'python-telegram-bot' 카테고리의 다른 글
사용자 정의 필터 (0) | 2024.01.09 |
---|---|
확장 기능: 첫 번째 봇 (ChatGPT 번역) (0) | 2024.01.06 |
python-telegram-bot - 소개 (ChatGPT 번역) (0) | 2024.01.06 |