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")) # 문자 보내기
마치며
- 파이썬 코드를 이용하여 카카오톡 메시지를 보낼 수도 있지만, 방법이 복잡하고 토큰을 자주 갱신해줘야 하는 번거로움이 있다. 또한, 나에게 카카오톡 메시지를 보낼 경우, 알림이 뜨지 않아 일정 주기로 알림을 받아야 할 경우 유용성이 떨어진다.
- 이런 점에서 특정 주기로 알림 메시지를 전송하는 작업을 해야한다면 카카오톡 보다는 텔레그램이 더욱 더 유용하다는 생각이 든다.
참고 사이트
728x90
728x90
'Programming > Python' 카테고리의 다른 글
[Python] or 연산자와 | 연산자의 차이 (0) | 2024.05.29 |
---|---|
[Python] self (0) | 2023.11.29 |
[Python] ORM(Object Relational Mapping) 라이브러리 사용해보기 (SQLAlchemy) (0) | 2023.11.14 |
[Python] HTML 코드를 이미지로 변환하는 방법 (Html2Image) (0) | 2023.11.06 |
[Python] 파이썬을 이용하여 이메일 보내는 방법 (smtplib, email) (0) | 2023.11.02 |
[Python] 파이썬에서 / 연산자와 // 연산자의 차이점 (0) | 2023.10.09 |
[Python] 맵(Map)과 리스트(List)의 차이점 (0) | 2023.10.08 |
[Python] try except 문을 사용할 때, 예외(Exception) 정보 출력하는 방법 (0) | 2023.09.08 |