Telegrami kasutajaskond kasvab igapäevaselt geomeetriliselt, millele aitab kaasa sõnumite rakenduse mugavus, kanalite ja vestluste olemasolu ning loomulikult võimalus luua roboteid.
Roboteid saab kasutada täiesti erinevatel eesmärkidel, alates kommunikatsiooni automatiseerimisest oma klientidega kuni oma ülesannete haldamiseni.
Põhimõtteliselt saab boti kaudu kasutades Telegrami teha mis tahes toiminguid: andmete saatmine või pärimine, serveri ülesannete käivitamine, teabe kogumine andmebaasi, e-kirjade saatmine ja nii edasi.
Planeerin kirjutada artiklite seeria, kuidas töötada R keeles , ja kirjutada roboteid vastavalt oma vajadustele.

Selles esimeses artiklis saame teada, kuidas luua Telegrami boti ja saata selle abil teateid Telegrami.
Tulemusena saame boti, mis kontrollib Windowsi ülesannete planeerija viimaste ülesannete täitmise staatust ja saadab teile teateid, kui mõned on lõppenud veaga.
Kuid selle artiklite seeria eesmärk ei ole õpetada teid looma boti kindla, kitsaste eesmärkide jaoks, vaid tutvustada teid paketi süntaksiga. telegram.bot, ja koodinäidud, mille abil saate kirjutada boti enda ülesannete lahendamiseks.
Sisu
Kui teid huvitab andmeanalüüs, siis võivad teile huvi pakkuda minu ja kanalid, mille suurem osa sisust on pühendatud R keelele.
Telegrami boti loomine
Esmalt peame looma boti. Selleks kasutame spetsiaalset boti BotFather, liikume edasi ja kirjutame botile /start.
Seejärel saate sõnumi, millel on käskude loetelu:
Sõnum BotFatherilt
Aitan sulle luua ja hallata Telegrami roboteid. Kui oled Bot API-s uus, vaata juhendit (https://core.telegram.org/bots).
Sa saad mind juhtida järgnevate käskude saatmisega:
/newbot - loo uus bott
/mybots - muuda oma roboteid [beta]
Muuda roboteid
/setname - muuda roboti nime
/setdescription - muuda roboti kirjeldust
/setabouttext - muuda roboti infot
/setuserpic - muuda roboti profiilipilti
/setcommands - muuda käskude loendit
/deletebot - eemaldage bott
Roboti seaded
/token - genereeri autoriseerimise token
/revoke - tühista roboti juurdepääs token
/setinline - lülita inline-režiim sisse (https://core.telegram.org/bots/inline)
/setinlinegeo - lülita sisse asukoha taotlused (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - muuda inline tagasiside (https://core.telegram.org/bots/inline#collecting-feedback) seadeid
/setjoingroups - kas teie bott saab grupidesse lisada?
/setprivacy - lülita privaatsuse režiim (https://core.telegram.org/bots#privacy-mode) gruppides
Mängud
/mygames - muuda oma mänge (https://core.telegram.org/bots/games) [beta]
/newgame - loo uus mäng (https://core.telegram.org/bots/games)
/listgames - saad oma mängude loendi
/editgame - muuda mängu
/deletegame - kustuta olemasolev mängUue roboti loomiseks saada käsk /newbot.
BotFather palub sul sisestada roboti nimi ja kasutajanimi.
BotFather, [25.07.20 09:39]
Hea küll, uus bott. Kuidas me seda nimetame? Palun vali oma roboti nimi.
Alexey Seleznev, [25.07.20 09:40]
Minu Test Bott
BotFather, [25.07.20 09:40]
Hea. Nüüd valime roboti jaoks kasutajanime. See peab lõppema sõnaga `bot`. Näiteks: TetrisBot või tetris_bot.
Alexey Seleznev, [25.07.20 09:40]
@my_test_botNime saad sisestada suvalise, aga kasutajanimi peab lõppema bot.
Kui te kõik õigesti tegite, saate järgmise sõnumi:
Valmis! Palju õnne uue boti puhul. Leiate selle aadressilt t.me/my_test_bot. Nüüd saate lisada kirjelduse, teabeosa ja profiilipildi oma botile, vaadake /help, et saada nimekiri käskudest. Muide, kui olete oma ägeda boti loomise lõpetanud, võtke ühendust meie Bot Support'iga, kui soovite sellele paremat kasutajanime. Lihtsalt veenduge, et bot on enne seda täielikult toimiv.
Kasutage selle HTTP API juurde pääsemiseks järgmisi tokenit:
123456789:abcdefghijklmnopqrstuvwxyz
Boti API kirjelduse leidmiseks vaadake seda lehte: https://core.telegram.org/bots/apiEdasi on teil vaja saadud API tokenit, minu näite puhul see on 123456789:abcdefghijklmnopqrstuvwxyz.
Selles etapis on boti loomise ettevalmistustööd lõpetatud.
Paketi installimine Telegrami botiga töötamiseks R-is
Eeldan, et teil on juba installitud R keele ja RStudio arenduskeskkond. Kui ei, siis võite vaadata seda kuidas need installida.
Telegram Bot API'ga töötamiseks kasutame R paketti .
Pakettide installimine R-is toimub funktsiooni kaudu install.packages() kaudu., seega kasutage vajaliku paketi installimiseks käsku install.packages("telegram.bot").
R-i erinevate pakettide installimise kohta saate rohkem teada .
Pärast paketi installimist tuleb see sisse laadida:
library(telegram.bot)Sõnumite saatmine R-ist Telegrami
Teie loodud boti leiate Telegramist selle loodud kasutajanime järgi, minu puhul see on @my_test_bot.
Saada botile ükskõik milline sõnum, näiteks "Tere, bot". Selle hetke jaoks on see vajalik, et saada chat-id koos botiga.
Nüüd kirjutame R-is järgmise koodi.
library(telegram.bot)
# loome boti eksemplari
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# Küsime boti teavet
print(bot$getMe())
# Saame botile saadetud sõnumite nimekirja
updates <- bot$getUpdates()
# Küsime chat-i identifikaatorit
# Märkus: enne uuenduste küsimist peate saatma botile sõnumi
chat_id <- updates[[1L]]$from_chat_id()Esmalt loome oma boti eksemplari funktsiooni Bot(), mille argumendina tuleb edastada varasemalt saadud token.
Koodi sees tokeni hoidmine ei ole parim tava, seetõttu võite selle salvestada keskkonnamuutujasse ja lugeda seda sealt. Pakendis on vaikesena toetatud keskkonnamuudatused järgmise nimega: telegram.bot R_TELEGRAM_BOT_TEIE_BOTI_NIMI R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА. Selle asemel TEIE_BOTI_NIMI asetage nimi, mille olete loomisel määranud, minu puhul on mu muutuja R_TELEGRAM_BOT_My Test Bot.
Keskkonnamuutuja loomine on võimalik mitmel viisil, räägin kõige universaalsemast ja platvormidevahelisest. Looge oma kodudirektioonis (saate selle teada käsklusega path.expand("~")) tekstifail nimega .Renviron. Seda saab teha ka käsuga file.edit(path.expand(file.path("~", ".Renviron"))).
Ja lisage sellele järgmine rida.
R_TELEGRAM_BOT_TEIE_BOTI_NIMI=123456789:abcdefghijklmnopqrstuvwxyzJätkake, kasutage keskkonnamuutujas salvestatud tokenit funktsiooni kaudu bot_token(), st nii:
bot <- Bot(token = bot_token("My Test Bot"))Meetod getUpdates()võimaldab meil saada boti värskendusi, st sõnumeid, mis on talle saadetud. Meetod from_chat_id(), võimaldab saada chat’i identifikaatorit, mille kaudu sõnum saadeti. See identifikaator on vajalik sõnumite saatmiseks botist.
Lisaks chat’i ID-le objekti kaudu, mille saate meetodi getUpdates() , saate ka mõningaid muid kasulikke andmeid. Näiteks teavet kasutaja kohta, kes sõnumi saatis.
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"Nii et praegu on meil kõik vajalik olemas, et saata sõnum botist Telegramis. Kasutame meetodit sendMessage(), kuhu tuleb edastada vestluse ID, sõnumi tekst ja sõnumi vormindamise tüüp. Vormindamise tüüp võib olla Markdown või HTML ja seda seadistab argument parse_mode.
# Отправка сообщения
bot$sendMessage(chat_id,
text = "Привет, *жирный текст* _курсив_",
parse_mode = "Markdown"
)Markdown vormingu põhialused:
- Raske font on esile tõstetud tärniga *:
- näide:
*raske font* - tulemus: raske font
- näide:
- Kaldkirja määratakse alumise allajoonimisega:
- näide:
_kaldkiri_ - tulemus: kursiiv
- näide:
- Üksikfont, mida tavaliselt kasutavad programmakoodis, määratakse tsiteerimisega — `:
- näide: `ühekohaline font`
- tulemus:
ühekohaline font
HTML vormingu põhialused:
HTML-is ümbritsete osa tekstist, mida soovite esile tõsta, siltidega, näiteks tekst.
- — avav silt
- — sulgev silt
HTML vormingu sildid
<b>— raske font- näide:
<b>rasvitalne kirjatähe</b> - tulemus rasvitalne kirjatähe
- näide:
— kaldkiri- näide:
kaldkiri - tulemus: kursiiv
- näide:
— ühekohaline font- näide:
ühekohaline font - tulemus:
ühekohaline font
- näide:
Lisaks tekstile saate saata ka muud sisu, kasutades spetsiaalseid meetodeid:
# Отправить изображение
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"
)St. näiteks meetodi abil sendPhoto() saate saata salvestatud kujutisena faili, mille olete koostanud paketi abil ggplot2.
Windowsi ülesannete ajastaja kontrollimine ja teavitamine ülesannetest, mille täitmine katkestati
Windowsi ülesannete ajastaja kasutamiseks peate installima paketi taskscheduleR, ja tööandmete mugavuse tagamiseks installime paketi dplyr.
# Установка пакетов
install.packages(c('taskscheduleR', 'dplyr'))
# Подключение пакетов
library(taskscheduleR)
library(dplyr)Seejärel saame funktsiooni abil taskscheduler_ls() teavet oma ajastaja ülesannete kohta. Funktsiooni abil filter() pakett dplyr eemaldame ülesannete loendist need, mis on edukalt täidetud ja mille viimase tulemuse staatus on 0, samuti need, mida pole kunagi käivitatud ja mille staatus on 267011, peatatud ülesanded ja praegu töötavad ülesanded.
# запрашиваем список задач
task <- task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "n")Objektis task on meil nüüd nimekiri ülesannetest, mille täitmine lõpetati tõrke tõttu, selle nimekirja peame saatma Telegrami.
Kui vaatame iga käsku lähemalt, siis:
filter()— filtreerib ülesannete loendit eespool kirjeldatud tingimuste järgiselect()— jätab tabelisse ainult ühe välja ülesannete nimegaunique()— eemaldab duplikaatide nimedunlist()— muundab valitud veeru tabelist vektorikspaste0()— ühendab ülesannete nimed üheks reale ja kasutab eraldajana reavahetusmärki, st.n.
Kõik, mis meil jääb, on saata see tulemus Telegrami.
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)Nii et praegu näeb boti kood välja selline:
Ülesande kontrollimise boti kood
# Подключение пакета
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"
)
}Kasuta ülaltoodud näidet, asendades koodis boti tokeni ja oma vestluse ID.
Sa saad lisada ülesannete filtreerimise tingimusi, näiteks kontrollida ainult neid ülesandeid, mis on sinu loodud, välja arvatud süsteemsed.
Lisaks võid erinevad seaded viia eraldi konfiguratsioonifaili ja hoida seal vestluse ID ja tokeni. Konfiguratsiooni saab lugeda näiteks paketi abil configr.
Ini konfiguratsiooni näidis
[telegram_bot]
;Telegrami boti ja vestluse seaded, kuhu teavitused tulevad
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"Muuttujate lugemise näidis konfiguratsioonist R-is
library(configr)
# konfiguratsiooni lugemine
config <- read.config('C:/tee_konfiguratsioonini/config.cfg', rcmd.parse = TRUE)
bot_token <- config$telegram_bot$bot_token
chat_id <- config$telegram_bot$chat_idSeame ülesande kontrollimise ajakava
Skripti ajastamise seadistamise protsessi on kõige põhjalikumalt kirjeldatud selles . Siin kirjeldan ainult samme, mida selleks teha on vaja. Kui mõni samm on teile ebaselge, siis pöörduge viidatud artikli poole.
Oletame, et oleme salvestanud oma boti koodi faili check_bot.R. Regulaarse käivitamise planeerimiseks tehke järgmised sammud:
- Kandke süsteemimuutujasse Path R-installatsiooni kaustateed, Windowsis on tee umbes järgmine:
C:Program FilesRR-4.0.2bin. - Looge käivitatav bat-fail, kus on ainult üks rida
R CMD BATCH C:rscriptscheck_botcheck_bot.R. AsendaC:rscriptscheck_botcheck_bot.Rteie R-faili täisp tee. - Seejärel seadistage Windowsi ülesande planeerija kaudu käivitamise ajakava, näiteks iga poole tunni tagant.
Kokkuvõte
Selles artiklis käsitlesime, kuidas luua boti ja saata selle kaudu erinevaid teateid telegrammi.
Ma kirjeldasin Windowsi ülesande planeerimise ülesande kontrollimist, kuid saate selle artikli sisu kasutada ükskõik milliste teatiste saatmiseks, alates ilmaprognoosist kuni aktsiahindadega börsil, kuna R võimaldab teil ühenduda tohutu hulgaandmeallikatega.
Järgmises artiklis vaatame, kuidas lisada botile käske ja klaviatuuri, et ta saaks mitte ainult teateid saata, vaid ka täita keerukamaid ülesandeid.
Allikas: habr.com
