안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
<Telegram 패키지 관련 지난 글>
오늘은 지난 시간 생성한 채널에 봇을 이용해서 메시지를 보내는 방법을 포스팅 해보겠습니다.
1. 대화방의 chat_id 파악하기
지난 시간 텔레그램 봇을 생성하고, 채널도 생성하셨다면 이제 코딩을 할 시간입니다.
시작 전에 살포시 import를 해주겠습니다.
# 만약 설치가 안되어 있으면 터미널 창에 pip install python-telegram-bot 입력
import telegram
봇이 채팅을 할 수 있도록 하려면 2가지 정보가 필요합니다.
1) 봇의 토큰 정보
가장 기본적으로 필요한 봇 토큰과 토큰을 이용해서 봇을 불러오는 코드입니다.
#토큰을 변수에 저장 (대략 이렇게 생겼음: '0123456789:AABBCCDDGdv1mI8zOcd9d7d7q87q9qQ')
bot_token = '각자 생성한 봇의 고유 토큰 입렵(타인에게 노출하지 말 것)'
#telegram 패키지의 Bot 함수를 사용하여 내가 만든 bot 객체화
bot = telegram.Bot(token = bot_token)
만약 봇의 토큰 정보를 모르시는 분들은 텔래그램 관련 지난 글 중, 첫번째 글을 참고해주세요.
2) chat_id
오늘의 핵심은 chat_id의 개념입니다.
텔레그램의 대화방은 각각 고유한 chat_id를 가지고 있습니다.
우리가 봇을 이용해서 메시지를 보내기 위해서는 대화방의 chat_id를 알아야만 하죠.
chat_id를 알기 위해서는 일단 대화방에서 우리가 아무말이나 입력해서 전송해야합니다.
우선 여러분들이 만드신 봇(저의 경우엔 DART)의 대화방에 들어가셔서 아무말이나 입력해보세요.
그런 후에 아래의 코드를 실행합니다. (물론 위의 코드들이 선행되어야 합니다)
# bot과의 채팅 정보 및 메세지 업데이트
updates = bot.getUpdates()
# updates에 들어있는 내용 하나씩 꺼내어 출력
for i in updates :
print(i)
print('\n')
출력 결과는 이렇게 생겼습니다. 아주 길다란 딕셔너리 형태입니다.
{'message': {'photo': [], 'chat': {'first_name': 'Sangwoo', 'type': 'private', 'id': 1516137537}, 'entities': [], 'channel_chat_created': False, 'new_chat_members': [], 'caption_entities': [], 'message_id': 255, 'new_chat_photo': [], 'delete_chat_photo': False, 'text': '여기는 봇과의 대화방', 'date': 1638625002, 'group_chat_created': False, 'supergroup_chat_created': False, 'from': {'first_name': 'Sangwoo', 'is_bot': False, 'language_code': 'ko', 'id': 1516137537}}, 'update_id': 899725563}
이걸 정리해서 보면 아래와 같은 구조를 갖고 있어요. 중요하게 볼 부분은 바로 chat 안의 id입니다.
저기 보이는 숫자가 제 봇 채팅방의 고유한 id인 것입니다. (단, 봇 토큰이 없으면 저 아이디를 알아도 채팅을 보낼 권한이 없답니다.)
참고로 type은 private, 즉 개인톡방입니다. 다음에 배울 채널 대화방은 channel이라고 나와요.
동일하게 여러분들이 지난 시간 만드신 채널에도 아무 채팅이나 전송한 후에 같은 코드를 실행하시면 아래와 같은 결과를 얻으실 수 있습니다.
2. 봇으로 메시지 보내기
여기까지 하셨으면 메시지를 보내는 방법은 너무나도 간단합니다.
# 위에서 파악한 코딩유치원 채널 id
chat_id = '-1001415675502'
#위에서 얻은 chat id로 bot이 메세지를 보냄.
bot.sendMessage(chat_id = chat_id, text="봇으로 보내는 메시지")
첫 메시지가 제가 직접 입력한 것이고, 두 번째 메시지가 위의 코드로 전송한 메시지 입니다.
이렇게 봇으로 메시지를 보내는 방법을 이용하면 아래와 같은 프로젝트도 가능하답니다.
2021.04.05 - [파이썬 패키지/텔레그램(Telegram)] - [Python/Telegram] 원하는 주제의 네이버 뉴스 텔레그램으로 5분마다 전송 받기
[Python/Telegram] 원하는 주제의 네이버 뉴스 텔레그램으로 5분마다 전송 받기
안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도
coding-kindergarten.tistory.com
'파이썬 패키지 > 텔레그램(Telegram)' 카테고리의 다른 글
[Python/Telegram] 파이썬으로 텔레그램 채널 관리 봇(bot) 사용하는 법_1편.채널 추가 및 관리자로 봇 추가(코딩 ㄴㄴ) (0) | 2021.12.05 |
---|---|
[Python/Telegram] 일론 머스크 트위터 실시간으로 텔레그램 전송 받기 (3) | 2021.05.15 |
[Python/Telegram] 원하는 주제의 네이버 뉴스 텔레그램으로 5분마다 전송 받기 (4) | 2021.04.05 |
[Python / Telegram] 파이썬 텔레그램 봇 개념 총정리(python-telegram-bot) (0) | 2021.04.04 |
[Python / Telegram] 파이썬으로 텔레그램 bot 만들고 사용하는법 (feat. 공시정보알림 탤레그램 봇 소개) (0) | 2021.04.03 |