Telegram API를 이용하여 나에게 메세지 보내기

ncube.net/telegram%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8-%EB%B4%87%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EB%A9%94%EC%84%B8%EC%A7%80-%EC%A0%84%EC%86%A1%ED%95%98%EA%B8%B0/

vmpo.tistory.com/85

이 두 개의 홈페이지 내용을 바탕으로 Telegram에서 나에게 메시지 발송하는 것 성공했다. 쉽네. 카카오톡은 뭔가 손이 많이 가는데
Telegram은 매우 간단하게 할 수 있다.

@BotFather에게 말을 건다.
그 다음 /newbot를 선택한다.
대화창 이름을 고르고 나서 Bot 이름을 입력한다.
그럼 BotFather가 길다란 메세지와 함께 HTTP API: 로 시작하는 Token을 표시하여 준다.

https://api.telegram.org/bot[Token]/getUpdates

웹 브라우져에서 대괄호는 빼고 bot 글자에 붙여서 Token을 입력한다.

{"ok":true,"result":[]}

이렇게 나오면 성공이다. 그 다음 Bot과 한 마디 해준다. 그 다음 위의 웹 페이지에 새로 고침을 해본다. 이 예시는 인터넷에 있는 것이다.

{"ok":true,"result":[{"update_id":314515826,"message":{"message_id":2,"from":{"id":4200110535,"is_bot":false,"first_name"

“id”: 로 시작하는 숫자가 내가 나의 bot과 이야기하는 chat_id이다.

https://api.telegram.org/bot[Token]/sendmessage?chat_id=4200110535&text=good

이렇게 접속하면 good이라는 메세지가 bot을 통하여 나에게 전송되는 것을 알 수 있다. Python을 이용하여 메세지를 전송하려면 pip를 통하여 python-telegram-bot를 설치한다.

pip install python-telegram-bot

다음의 내용으로 코드를 짠다.

import telegram
bot = telegram.Bot(token = 'Token')
bot.sendMessage(chat_id = '4200110535', text="안녕하세요")

이것을 실행하면 나에게 메세지가 온다.

Linux라면 curl을 이용하여 보낼 수 있다.

curl -X POST -H 'Content-Type: application/json' -d '{"chat_id": "4200110535", "text": "This is a test from curl by BSJ"}' https://api.telegram.org/bot[Token]/sendMessage

그런데 이렇게 기~~인 명령문을 여러 프로그램에 계속 넣는 것도 좋은 방법은 아닌 것 같다. 내용만 정해두면 해당 메세지가 발송되도록 하는 것이 좋을 것 같았다. 알아두어야 하는 것은 bot.sh 뒤에 입력되는 구절을 스크립트에서 받도록 하는 것이고, 이것을 수 많은 따옴표가 있는 구문에 넣는 방법이다.

#! /bin/bash
message=${1}
curl -X POST -H 'Content-Type: application/json' -d '{"chat_id": "1086690584", "text": "'"${message}"'"}' 

단어 한 개를 보낼 경우에는 따옴표가 없어도 된다. 그런데 두 단어 이상이라면 큰 따옴표나 작은 따옴표로 묶어야 한다. 이렇게 첫 번째로 입력되는 값은 ${1}로 받을 수 있다. 그 다음의 문제는 -d 옵션 이후의 따옴표 처리. 보통의 예시는 큰 따옴표로 되어 있는데, 저렇게 ${message} 부분만 작은 따옴표를 큰 따옴표로 묶는 방법을 이용하면 편하게 적용 가능하다.