본문 바로가기
Develop/Python

[텔레그램/챗봇/채널] 고려대학교 학식 식단표 알리미 만들기 - 3

by favorcat 2023. 9. 12.
반응형
 

[카카오톡/챗봇/API] 고려대학교 학식 식단표 알리미 만들기 - 2

[Python/셀레니움/크롤링] 고려대학교 학식 식단표 알리미 만들기 - 1 동기 학식 식단표를 볼 수 있는 페이지가 있으나, 오늘의 식단표를 보려면 오늘 날짜를 찾아서 스크롤을 해야하는 번거로움

blog.favorcat.dev

이전 글에서 카톡으로 동기들에게 식단표를 보내는 것을 자동화 했다.
나한테도 카톡을 보내줄 사람을 섭외해서 토큰을 가지고 자동화 했는데, 왜인지는 모르겠으나 401 에러가 떠서.. 짜증나서 그냥 나만을 위한 텔레그램 봇을 만들기로 했다.


텔레그램 봇 만들기


1. BotFather를 통해 봇 생성

https://t.me/BotFather

대화창에 다음의 두 줄을 하나씩 입력한다.
/start
/newbot
그 다음, 봇의 닉네임을 정해주고, 아이디를 설정한다.
이때, 아이디는 고유한 아이디어야 하므로 기존에 존재하지 않던 것으로 해야한다.

2. chat ID 확인

봇을 만들었을때 HTTP API라고 온 긴 문자열을 복사해서 다음 주소에 들어간다.

https://api.telegram.org/bot{HTTP API 값}/getUpdates

생성된 봇에게 채팅을 보내고 나면 {"id":{숫자}, "first_name": ...} 이런식으로 있는걸 확인할 수 있다.
여기서 id에 있는 숫자가 나의 id가 되는 것이고 이 값을 통해 봇이 나에게 메세지를 보낼 수 있다.

하지만, 나는 채널을 만들어 다수의 이용자에게 동시에 보낼 수 있도록 채널을 만들고, 그 안에 봇을 넣어 봇이 알림을 줄 수 있도록 만들 것이다.

3. 채널 만들기

메뉴에서 채널 만들기를 통해 채널을 만든다.
참가자 추가에 방금 만들었던 봇의 닉네임으로 검색해 추가한다.
그러면 봇은 관리자로만 추가할 수 있다고 뜨는데, 관리자로 세우기를 누른다.

4. 채널 ID 확인

2번에서 했던 것과 동일하다.
방금 만들었던 채널에 메세지를 하나 보내고, HTTP API를 이용해 다음 주소에 들어간다.

https://api.telegram.org/bot{HTTP API 값}/getUpdates

그러면 "sender_chat": {"id": -{숫자}, ...}  이런 형식을 확인할 수 있다.
-123456789 이런식으로 숫자 앞에 - 가 붙어 있는 것이 해당 채널의 id가 된다.

5. pip 패키지 설치하기

pip install python-telegram-bot

6. 채널에 메세지 보내기

import telegram, asyncio

telgm_token = '봇 HTTP API 값'
CHAT_ID = '채널 id'
bot = telegram.Bot(token = telgm_token)
async def send_text(bot, text):
  await bot.send_message(CHAT_ID, text)

asyncio.run(send_text(bot, "메세지"))

주의할 점

파이썬을 통해 텔레그램 패키지를 이용할 때, 파일명을 telegram.py 와 같이 설정하면 다음과 같은 에러가 발생한다.
module 'telegram' has no attribute 'Bot'


 

 

GitHub - favorcat/KU-menu-chatbot: 고려대학교 애기능생활관 2층 학식당 식단표 크롤러/챗봇

고려대학교 애기능생활관 2층 학식당 식단표 크롤러/챗봇. Contribute to favorcat/KU-menu-chatbot development by creating an account on GitHub.

github.com

 

반응형

Comment