R로 텔레그램봇에 메세지 보내기

2019.06.02 13:12R/Advanced

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

텔레그램 봇 생성하기

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

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

봇생성을 완료하면, API Token이라고 표시된 곳에 출력되는 값을 복사한다

install.packages('telegram.bot')
library(telegram.bot)

R에서 telegram.bot 패키지를 설치한다

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"


 

봇에 메세지 보내기

API가 정상적으로 입력된 것을 확인할 수 있다. 이제 텔레그램에서 봇과 대화를 해야 한다. 봇이 메세지를 먼저 보낼 수 없기 때문에, 텔레그램에서 봇을 찾아서 먼저 대화를 걸어야 한다

검색 창에 봇의 username을 치면 자신의 봇을 찾을 수 있다. 채팅창을 열고 메세지를 전송한다. 이제 봇과 대화중인 대화방을 R에서 찾아야 한다

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"

대화방의 id를 변수로 저장한 다음, 봇에게 메세지를 보내보자 

chat_id = updates[[1]]$message$chat$id
chat_id

bot$sendMessage(chat_id = chat_id, text = 'hello bot!')

 

채팅방으로 메세지가 전송된 것을 알 수 있다

1 2 3 4 5 6 7 8 9 10 ··· 31