Пару постов назад я писал о прикручивании SMS-оповещений к своей программе на R. А сегодня я очень кратко покажу, как можно связать R с ботом Telegram.
Для этого нам понадобиться, собственно установленные новые версии R и Telegram.
Прежде всего создадим своего бота, послав @BotFather команду /newbot. Он спросит название и имя бота - укажем их. В ответ получим сообщение в котором говорится об успешном создании бота и его ключ вида 1234567890:AAAAAAAAAaa-bBBBBBBBBBBB.
Отлично. Теперь осталось научить R подсоединяться к боту через Telegram Bot API. И эта функциональность уже реализована в пакете telegram, который можно найти на гитхабе тут. Подключаем и переходим к делу.
Далее в коде показано, как получить доступ к боту, запросить у него информацию о себе, отправить текст, картинку и даже анимацию.
Однако, прежде чем опробовать код нужно указать TARGET_USER_ID, то есть получить свой собственный Telegram ID. И самый простой путь это сделать - написать боту и проверить его входящие командой getUpdates. Там мы найдём необходимый номер.
library(telegram) # Past your access token here R_TELEGRAM_BOT_TOKEN = '1234567890:AAAAAAAAAaa-bBBBBBBBBBBB' # Your user ID TARGET_USER_ID = ******* message = "Hi, this is bot message from R"
# Get access
bot <- TGBot$new(token = R_TELEGRAM_BOT_TOKEN)
# Get bot info
bot$getMe()
# Send message
bot$sendMessage(text = message, chat_id = TARGET_USER_ID)
# Get bot inbox
bot$getUpdates() # Send plot png('test.png') plot(rnorm(100)) dev.off() bot$sendPhoto('test.png', caption = 'This is my awesome graph', chat_id = TARGET_USER_ID) # Send sticker bot$sendSticker(system.file('r_logo.webp', package = 'telegram'), chat_id = TARGET_USER_ID) # Send animation # Specify path to ffmpeg on Windows (or avconv on Linux) ffmpeg <- 'G:/Programs/ffmpeg/bin/ffmpeg.exe' library(animation) saveVideo({ par(mar = c(3, 3, 1, 0.5), mgp = c(2, 0.5, 0), tcl = -0.3,
cex.axis = 0.8, cex.lab = 0.8,
cex.main = 1) ani.options(interval = 0.1, nmax = 300) brownian.motion(pch = 21, cex = 5, col = "red", bg = "yellow") }, video.name = "video.mp4", other.opts = "-pix_fmt yuv420p -b 300k", ffmpeg = ffmpeg) bot$sendVideo('video.mp4', chat_id = TARGET_USER_ID)
Всё - запускаем и наслаждаемся!
Комментариев нет:
Отправить комментарий