이전 글에서 카톡으로 동기들에게 식단표를 보내는 것을 자동화 했다.
나한테도 카톡을 보내줄 사람을 섭외해서 토큰을 가지고 자동화 했는데, 왜인지는 모르겠으나 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'
'Develop > Python' 카테고리의 다른 글
[카카오톡/챗봇/API] 고려대학교 학식 식단표 알리미 만들기 - 2 (0) | 2023.09.07 |
---|---|
[Python/셀레니움/크롤링] 고려대학교 학식 식단표 알리미 만들기 - 1 (0) | 2023.09.07 |
맥에서 크론탭(crontab)으로 파이썬 실행하기 (0) | 2020.09.21 |
Comment