Das Telegrammpublikum wächst jeden Tag exponentiell. Dies wird durch die Bequemlichkeit des Messenger, das Vorhandensein von Kanälen, Chats und natürlich die Fähigkeit, Bots zu erstellen, erleichtert.
Bots können für ganz andere Zwecke verwendet werden, von der Automatisierung der Kommunikation mit Ihren Kunden bis zur Verwaltung Ihrer eigenen Aufgaben.
Über den Bot können Sie mithilfe des Telegramms alle Vorgänge ausführen: Daten senden oder anfordern, Aufgaben auf dem Server ausführen, Informationen in einer Datenbank sammeln, E-Mails senden usw.
Ich plane, eine Reihe von Artikeln darüber zu schreiben, wie man mit der Telegramm-Bot-API in R-Sprache arbeitet , und Bots für meine Bedürfnisse zu schreiben.
In diesem ersten Artikel erfahren Sie, wie Sie einen Telegramm-Bot erstellen und damit Telegramm-Benachrichtigungen senden.
Als Ergebnis haben wir einen Bot, der den Status der letzten Ausführung aller Aufgaben im Windows Task Scheduler überprüft und Ihnen Benachrichtigungen sendet, falls eine fehlschlägt.
, , , 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 .