La audiencia de telegramas crece exponencialmente cada día, esto se ve facilitado por la conveniencia del messenger, la presencia de canales, chats y por supuesto la capacidad de crear bots.
Los bots se pueden usar para propósitos completamente diferentes, desde automatizar la comunicación con sus clientes hasta administrar sus propias tareas.
De hecho, a través del bot, puede usar Telegram para realizar cualquier operación: enviar o solicitar datos, ejecutar tareas en el servidor, recopilar información en una base de datos, enviar correos electrónicos, etc.
Planeo escribir una serie de artículos sobre cómo trabajar con la API de bots de Telegram en R y escribir bots para mis necesidades.
En este, el primer artículo, descubriremos cómo crear un bot de telegram y enviar notificaciones en telegram usándolo.
Como resultado, tendremos un bot que verificará el estado de la última ejecución de todas las tareas en el Programador de tareas de Windows y le enviará notificaciones si algunas han fallado.
, , , telegram.bot
, , , .
" telegram R"
:
I can help you create and manage Telegram bots. If you're new to the Bot API, please see the manual (https://core.telegram.org/bots).
You can control me by sending these commands:
/newbot - create a new bot
/mybots - edit your bots [beta]
Edit Bots
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setcommands - change the list of commands
/deletebot - delete a bot
Bot Settings
/token - generate authorization token
/revoke - revoke bot access token
/setinline - toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups - can your bot be added to groups?
/setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups
Games
/mygames - edit your games (https://core.telegram.org/bots/games) [beta]
/newgame - create a new game (https://core.telegram.org/bots/games)
/listgames - get a list of your games
/editgame - edit a game
/deletegame - delete an existing game
/newbot
.
BotFather .
BotFather, [25.07.20 09:39]
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Alexey Seleznev, [25.07.20 09:40]
My Test Bot
BotFather, [25.07.20 09:40]
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
Alexey Seleznev, [25.07.20 09:40]
@my_test_bot
, bot
.
, :
Done! Congratulations on your new bot. You will find it at t.me/my_test_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
123456789:abcdefghijklmnopqrstuvwxyz
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
API , 123456789:abcdefghijklmnopqrstuvwxyz
.
R
Telegram Bot API R telegram.bot.
R install.packages()
, install.packages("telegram.bot")
.
:
library(telegram.bot)
R Telegram
Telegram , @my_test_bot
.
, " ". , id .
R .
library(telegram.bot)
#
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
#
print(bot$getMe())
# , ..
updates <- bot$getUpdates()
#
# :
chat_id <- updates[[1L]]$from_chat_id()
Bot()
, .
, , . telegram.bot
: R_TELEGRAM_BOT___
. __
, R_TELEGRAM_BOT_My Test Bot
.
, . ( path.expand("~")
) .Renviron. file.edit(path.expand(file.path("~", ".Renviron")))
.
.
R_TELEGRAM_BOT___=123456789:abcdefghijklmnopqrstuvwxyz
bot_token()
, .. :
bot <- Bot(token = bot_token("My Test Bot"))
getUpdates()
, .. . from_chat_id()
, , . .
id getUpdates()
. , , .
updates[[1L]]$message$from
$id
[1] 000000000
$is_bot
[1] FALSE
$first_name
[1] "Alexey"
$last_name
[1] "Seleznev"
$username
[1] "AlexeySeleznev"
$language_code
[1] "ru"
, , . sendMessage()
, , , . Markdown HTML parse_mode
.
#
bot$sendMessage(chat_id,
text = ", * * __",
parse_mode = "Markdown"
)
Markdown :
- *:
- :
* *
- :
- :
- :
- :
__
- :
- :
- , , — `:
- : ` `
- :
HTML :
HTML , , , <></>
.
- <> —
- </> —
HTML
<b>
—
- :
<b> </b>
- :
<i>
—
- :
<i></i>
- :
- :
- <code> —
- : <code> </code>
- :
:
#
bot$sendPhoto(chat_id,
photo = "https://telegram.org/img/t_logo.png"
)
#
bot$sendAudio(chat_id,
audio = "http://www.largesound.com/ashborytour/sound/brobob.mp3"
)
#
bot$sendDocument(chat_id,
document = "https://github.com/ebeneditos/telegram.bot/raw/gh-pages/docs/telegram.bot.pdf"
)
#
bot$sendSticker(chat_id,
sticker = "https://www.gstatic.com/webp/gallery/1.webp"
)
#
bot$sendVideo(chat_id,
video = "http://techslides.com/demos/sample-videos/small.mp4"
)
# gif
bot$sendAnimation(chat_id,
animation = "https://media.giphy.com/media/sIIhZliB2McAo/giphy.gif"
)
#
bot$sendLocation(chat_id,
latitude = 51.521727,
longitude = -0.117255
)
#
bot$sendChatAction(chat_id,
action = "typing"
)
.. sendPhoto()
, ggplot2
.
Emoji
, Emoji.
Unicode. , U+
\U000
. .. , U+1F601
, R — \U0001F601
.
:
bot$sendMessage(chat_id,
' \U0001F601 U+1F601')
:
Windows, ,
Windows taskscheduleR
, dplyr
.
#
install.packages(c('taskscheduleR', 'dplyr'))
#
library(taskscheduleR)
library(dplyr)
taskscheduler_ls()
. filter()
dplyr
, 0, , 267011, , .
#
task <- task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "\n")
task
, , Telegram.
, :
filter()
— ,select()
—unique()
—unlist()
—paste0()
— , , ..\n
.
— .
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)
, :
#
library(telegram.bot)
library(taskscheduleR)
library(dplyr)
#
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
#
chat_id <- 123456789
#
task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "\n")
#
if ( task != "" ) {
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)
}
.
, , , .
, id . configr
.
[telegram_bot]
; ,
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"
library(configr)
#
config <- read.config('C:/__/config.cfg', rcmd.parse = TRUE)
bot_token <- config$telegram_bot$bot_token
chat_id <- config$telegram_bot$chat_id
, check_bot.R
. , :
- Path R, Windows :
C:\Program Files\R\R-4.0.2\bin
. - bat ,
R CMD BATCH C:\rscripts\check_bot\check_bot.R
.C:\rscripts\check_bot\check_bot.R
R . - Windows , .
, , telegram.
Windows, , , .. R .