개발

[개발] 간단하게 Python에서 Telegram API 통해 메세지 보내기

성민석 2024. 2. 25. 02:54

안녕하세요 성민석입니다.

트레이딩을 하다보면 주로 텔레그램(Telegram) API을 이용하여 로그 메세지를 간단하게 보내곤 합니다.

 

근데 매번 python-telegram-bot 을 이용해서 사용하다가 이번 20버전부터는 비동기식으로 바뀌어서 (물론 13버전 쓰면 괜찮) 간략하게 requests 라이브러리 이용해서 텍스트와 이미지 전송하는 코드를 첨부해보겠습니다.

 

https://pypi.org/project/python-telegram-bot/

 

python-telegram-bot

We have made you a wrapper you can't refuse

pypi.org

 

텍스트를 보내는 함수

def send_telegram_text(text, bot_token, chat_id):
    """Telegram을 통해 메시지를 보내는 함수"""
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    data = {
        "chat_id": chat_id,
        "text": text
    }
    response = requests.post(url, data=data)
    return response.json()

 

이미지를 보내는 함수

def send_telegram_image(photo_path, bot_token, chat_id):
    """Telegram을 통해 사진을 보내는 함수"""
    url = f"https://api.telegram.org/bot{bot_token}/sendPhoto"
    data = {
        "chat_id": chat_id
    }
    with open(photo_path, 'rb') as photo:
        files = {
            "photo": photo
        }
        response = requests.post(url, data=data, files=files)
    return response.json()

 

위 두 함수를 이용하면 굳이 번거롭게 라이브러리 설치하지 않고 가볍고 간단하게 사용할 수 있습니다. 다만 텔레그램 서버로부터 연결이 끊기는 ConnectionError 같은 부분은 직접 수고스럽게 예외처리 좀 하면 됩니다.

 

P.S) 또한 제일 귀찮은게 저 chat_id를 알아내는건데 그건 아래 링크에 본인의 토큰을 입력해서 확인하면 됩니다. 일반적으로 593161392를 이용하면 본인이 생성한 봇의 채팅방 아이디일 확률이 높습니다.아래 괄호 지우고 본인 봇의 토큰을 입력하면 확인 가능합니다.

 

https://api.telegram.org/bot{본인의토큰}/getUpdates

 

 

 

728x90
반응형