728x90
728x90

파이썬을 이용하여 텔레그램(Telegram) 메시지 보내는 방법

들어가며

  • 파이썬(Python)을 이용하여 텔레그램(Telegram) 메시지를 보내보자.
  • 원리는 우선 텔레그램에서 봇을 만든 후, 파이썬 코드를 이용하여 해당 봇에 메시지를 보내는 것이다.
  • 카카오톡 API를 이용한 메시지를 보내는 방법 보다 더 간단하다.

 

방법

① 텔레그램에서 봇파더(@BotFather@) 추가하기

  • 텔레그램에서 @BotFather@를 검색한 후, 체크박스(☑️)가 있는 봇파더를 추가해준다.

 

② 봇 생성하기

  • 아래의 내용들을 차례로 채팅방에 입력하여 봇을 생성하고 API 토큰값을 얻어보자.

 

새로운 봇 만들기

  • 채팅방에 아래의 메시지를 입력하여 전송한다.
> /start
> /newbot

 

봇 이름 지정하기

  • 생성할 봇 이름을 지정해준다. 이 이름은 봇 채팅방이 생성될 때, 봇 채팅방의 이름으로 사용된다.
> 봇이름     # 봇 이름

 

@username@ 지정하기

  • @username@을 만들 것이다. 단어의 끝에 @bot@이 들어가도록 만들어준다.
> 봇이름_bot   # 또는 '봇이름Bot'

 

 

봇 채팅방 생성하기 및 토큰값 복사하기

  • 위의 과정을 마치면 다음과 같이 API 토큰값해당 봇 채팅방에 접속할 수 있는 주소를 받을 수 있다.
    • @t.me/봇이름_bot@ 링크를 클릭하여 봇 채팅방을 생성해준다. 
    • @HTTP API@에 있는 토큰값을 복사해준다.
Done! Congratulations on your new bot. You will find it at t.me/봇이름_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
*********************************************
Keep your token secure and store it safely, it can be used by anyone to control your bot.

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

 

③ 메시지 발송 코드 작성하기

@python-telegram-bot@ 패키지 설치하기

  • 터미널(또는 명령 프롬프트)에 다음 명령을 입력하여 텔레그램 봇 관련 패키지를 설치해준다.
> pip install python-telegram-bot

 

@chat_id@ 알아내기

  • 웹 브라우저 주소창에 다음을 입력하여 접속한다.
> https://api.telegram.org/bot[자신의_토큰값]/getUpdates

 

 

  • 예를 들어 자신의 토큰값이 @ABCD@일 경우 아래와 같이 주소창에 입력하여 접속해준다.
> https://api.telegram.org/botABCD/getUpdates

 

  • 사이트에 접속하면 다음과 같이 성공적으로 연결되어 있다는 로그를 확인할 수 있다.
{"ok":true,"result":[]}

 

  • 위에서 생성했던 봇 채팅방에 문자 메시지(@Hi@)를 보내본다. 그리고 해당 사이트에서 새로 고침(@[F5]@)을 해준다. 그러면 다음과 같이 업데이트 된 새로운 로그를 확인할 수 있다.
{"ok":true,"result":[{"update_id":********,
"message":{"message_id":4,"from":{"id":":********,,"is_bot":false,"first_name":"\uc0c1\uc21c","last_name":"\uae40","language_code":"ko"},"chat":{"id":":********,,"first_name":"\uc0c1\uc21c","last_name":"\uae40","type":"private"},"date":":********,,"text":"Hi"}]}

 

  • 위의 로그에서 @id@의 값(Value)이 @chat_id@ 값이다. 이 값을 복사해준다.

 

메시지 발신 코드 작성하기

  • 다음과 같이 파이썬 코드를 이용하여 텔레그램 봇 채팅방에 문자를 보내는 코드를 작성한다.
import telegram
import asyncio

API_token = "************************"    # API 토큰
bot = telegram.Bot(token=API_token)
chat_id = 123456789    # chat_id

MESSAGE = "문자보내기 테스트입니다."

asyncio.run(bot.send_message(chat_id=chat_id, text=MESSAGE))

 

  • 코드를 실행하면 봇 채팅방에 메시지가 수신된 것을 확인할 수 있다.

 

오류 대처법

① @AttributeError: module 'telegram' has no attribute 'Bot'@ 오류

  • 아래의 명령들을 실행하여 @python-telegram-bot@ 관련 패키지들을 삭제해준 후, 다시 설치해준다.
> pip uninstall python-telegram-bot telegram -y   # telegram 관련 패키지 삭제
> pip install python-telegram-bot    # 패키지 다시 설치

 

② @RuntimeWarning: coroutine 'Bot.send_message' was never awaited@ 오류

  • 텔레그램 V20 버전 이전의 코드로 실행했을 때 맞닥뜨리게 되는 오류이다.
  • V20부터는 @asyncio@ 모듈을 이용하여 비동기화 처리를 해줘야 정상적으로 기능이 작동한다.
  • 다음과 같이 @asyncio@ 모듈을 불러온 후 @asyncio.run@ 함수를 사용하여 문자를 보내준다.
import asyncio

# ...

asyncio.run(bot.send_message(chat_id=chat_id, text="MESSAGE"))    # 문자 보내기

 

마치며

  • 파이썬 코드를 이용하여 카카오톡 메시지를 보낼 수도 있지만, 방법이 복잡하고 토큰을 자주 갱신해줘야 하는 번거로움이 있다. 또한, 나에게 카카오톡 메시지를 보낼 경우, 알림이 뜨지 않아 일정 주기로 알림을 받아야 할 경우 유용성이 떨어진다.
  • 이런 점에서 특정 주기로 알림 메시지를 전송하는 작업을 해야한다면 카카오톡 보다는 텔레그램이 더욱 더 유용하다는 생각이 든다.

 

참고 사이트

 

Telegram Bot API

The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram. To learn how to create…

core.telegram.org

 

Bot API Library Examples

A full tutorial covering everything from configuring your environment to deploying your finished bot is available here.…

core.telegram.org

 

728x90
728x90