R로 텔레그램봇에 메세지 보내기
2019. 6. 2. 13:12ㆍR/Advanced

텔레그램봇을 활용하면, R에서 수집한 정보를 외부에서 메신저를 통해서 확인할 수 있다. R 스크립트를 일정 시간마다 정기적으로 돌리면서 결과값을 보내거나, 혹은 특정 조건이 발견되었을 때 경고 메세지를 발송할 수 있다.
텔레그램 봇 생성하기

PC버전 텔레그램을 설치한 후 BotFather를 검색해서 채널에 들어간다

/newbot 명령을 입력한 후 새로운 봇을 생성한다 (봇의 이름은 반드시 bot으로 끝내야 하며 first_name과 username을 별도로 입력해줘야 한다

봇생성을 완료하면, API Token이라고 표시된 곳에 출력되는 값을 복사한다
1 2 3 | <code>install.packages( 'telegram.bot' ) library(telegram.bot) < / code> |
R에서 telegram.bot 패키지를 설치한다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <code>bot = Bot(token = 'ENTER YOUR API Toekn' ) print (bot$getMe()) > print (bot$getMe()) $ id [ 1 ] id 가 이 곳에 출력 $is_bot [ 1 ] TRUE $first_name [ 1 ] "봇의 first name" $username [ 1 ] "봇의 username" < / code> |
봇에 메세지 보내기
API가 정상적으로 입력된 것을 확인할 수 있다. 이제 텔레그램에서 봇과 대화를 해야 한다. 봇이 메세지를 먼저 보낼 수 없기 때문에, 텔레그램에서 봇을 찾아서 먼저 대화를 걸어야 한다

검색 창에 봇의 username을 치면 자신의 봇을 찾을 수 있다. 채팅창을 열고 메세지를 전송한다. 이제 봇과 대화중인 대화방을 R에서 찾아야 한다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <code>updates = bot$getUpdates() updates[[ 1 ]]$message$chat > updates[[ 1 ]]$message$chat $ id [ 1 ] 대화방 id 가 출력 $first_name [ 1 ] "사용자의 firstname" $last_name [ 1 ] "사용자의 lastname" $ type [ 1 ] "private" < / code> |
대화방의 id를 변수로 저장한 다음, 봇에게 메세지를 보내보자
1 2 3 4 5 | <code>chat_id = updates[[ 1 ]]$message$chat$ id chat_id bot$sendMessage(chat_id = chat_id, text = 'hello bot!' ) < / code> |

채팅방으로 메세지가 전송된 것을 알 수 있다
'R > Advanced' 카테고리의 다른 글
ggmap을 사용하여 서울 지하철 역 위치 및 사용자 수 표시 (0) | 2019.05.07 |
---|---|
Tidyr을 활용한 데이터 정리 (0) | 2019.04.18 |