이 두 개의 홈페이지 내용을 바탕으로 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} 부분만 작은 따옴표를 큰 따옴표로 묶는 방법을 이용하면 편하게 적용 가능하다.