파이썬

[파이썬] 텔레그램봇으로 알림문자 자동발송하는 법

daemon 2023. 7. 22. 00:57

 

 

파이썬으로 프로그램을 제작하다가 특정 구간을 지났을 때 휴대폰으로 알림이 오게 하고 싶었습니다.

 

 

 

 

예를 들어, 영화나 공연 자동 예매할 때 텔레그램 같은 앱으로 문자가 오면 밖에서도 확인하기 쉽습니다.

 

 

# 텔레그램 봇으로 알림
import requests


def send_telegram_message(token, chat_id, message):
    base_url = f"https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={message}"
    response = requests.get(base_url)
    return response.json()


# replace with your bot token and chat ID
token = "본인 토큰 번호"
chat_id = "본인 채팅방 아이디"
message = "예약에 성공했습니다."

response = send_telegram_message(token, chat_id, message)
print(response)

 

 

알림을 보내는 코드의 기본틀만 발췌했습니다.

 

우선, 본인 스마트폰에서 텔레그램을 설치합니다.

 

앱에 들어가서 검색창에 botfather라고 검색하면 아래와 같은 화면이 나옵니다.

 

 

 

 

화면에 나온 botfather를 클릭합니다.

 

 

 

 

/start라는 명령어를 통해 대화를 시작합니다.

 

 

 

 

이제는 알림문자를 전송해줄 수 있는 로봇을 생성해봅시다. 일명 봇이라고 지칭하겠습니다.

 

/newbot이라는 명령어를 입력하면 위의 화면과 같이 로봇의 이름을 정하라고 합니다.

 

 

 

 

저는 tistory_new라고 이름을 짓겠습니다.

 

이름을 짓고 나니 또 이름을 지으라고 합니다.

 

tistory_new는 별명이고 이번에 짓는 이름은 공식 이름입니다.

 

공식 이름은 "봇" 자돌림으로 해야하기 때문에 tistory_new_bot이라고 짓겠습니다.

 

공식 이름이 존재하는 이유는 뒤에서 마저 설명하겠습니다.

 

 

 

 

공식 이름까지 짓고 나면 HTTP API에 접근할 수 있는 토큰을 부여해줍니다.

 

보안의 중요성을 알려드리고자 비공개 처리했습니다.

 

공개해도 상관없지만 고유 번호이기에 독자들은 유의하시기 바랍니다.

 

형식은 항상 고정되어있고 대개 이런 모습입니다.

 

숫자:문자

 

다시 처음 코드 부분으로 돌아와서 설명하겠습니다.

 

 

# 텔레그램 봇으로 알림
import requests


def send_telegram_message(token, chat_id, message):
    base_url = f"https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={message}"
    response = requests.get(base_url)
    return response.json()


# replace with your bot token and chat ID
token = "본인 토큰 번호"
chat_id = "본인 채팅방 아이디"
message = "예약에 성공했습니다."

response = send_telegram_message(token, chat_id, message)
print(response)

 

 

지금까지 botfather와의 채팅을 통해 알아낸 것은 본인 토큰 번호입니다.

 

토큰 번호의 형식은 위에서 언급한 "숫자:문자"입니다.

 

이제 token을 알아냈으니 다음으로는 chat_id를 알아내야합니다.

 

https://api.telegram.org/bot본인토큰번호/getUpdates

 

 

 

 

위의 주소에서 본인토큰번호에 해당하는 부분을 기입하고 접속하면 화면과 같이 404가 뜰 것입니다.

 

봇의 존재를 인식시켜주기 위해서 테스트문자를 보내야합니다.

 

 

 

 

현재 필자는 공식이름과 별명의 차이가 bot밖에 없지만 두 개의 이름이 다른 경우 공식이름으로 검색해야합니다.

 

여기서 공식이름의 존재 이유가 설명됩니다.

 

 

 

 

시작 화면은 다음과 같이 나올 것이고 테스트 문자로 hi라고 보내겠습니다.

 

보낸 후, 아까 접속한 주소로 다시 들어가봅시다.

 

https://api.telegram.org/bot본인토큰번호/getUpdates

 

 

 

 

위의 화면과 같이 이제는 아까와 달리 오류 코드가 뜨지 않고 테스트 문자를 보낸 기록을 볼 수 있습니다.

 

빨간 박스 안에 있는 숫자가 바로 찾고자 하는 chat_id입니다.

 

이제 원하는 정보를 모두 알아냈으니 코드에 기입해서 실행해봅시다.

 

 

# 텔레그램 봇으로 알림
import requests


def send_telegram_message(token, chat_id, message):
    base_url = f"https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={message}"
    response = requests.get(base_url)
    return response.json()


# replace with your bot token and chat ID
token = "본인 토큰 번호"
chat_id = "본인 채팅방 아이디"
message = "예약에 성공했습니다."

response = send_telegram_message(token, chat_id, message)
print(response)

 

 

다음은 실제 시연 모습입니다.