Audienca e Telegramit po rritet çdo ditë me një progresion gjeometrik, për këtë ndihmon lehtësia e mesazherit, pranija e kanaleve, grupeve dhe sigurisht mundësia për të krijuar bota.
Botët mund të përdoren për qëllime të ndryshme, nga automatizimi i komunikimit me klientët tuaj deri te menaxhimi i detyrave tuaja.
Në thelb, përmes një boti mund të kryeni çdo operacion duke përdorur telegramin: të dërgoni ose të kërkoni të dhëna, të nisni detyra në server, të mbledhni informacione në bazën e të dhënave, të dërgoni e-maile dhe kështu me radhë.
Planifikoj të shkruaj një seri artikujsh mbi mënyrat se si të punoni me , dhe të shkruaj bota sipas nevojave tuaja.

Në këtë artikull të parë, do të shqyrtojmë se si të krijoni një telegram bot dhe të dërgoni njoftime përmes tij në telegram.
Si rezultat, do të kemi një bot që do të kontrollojë statusin e fundit të ekzekutimit të të gjitha detyrave në planifikuesin e detyrave të Windows dhe do t'ju dërgojë njoftime nëse ndonjëra përfundohet me gabim.
Por qëllimi i kësaj serie artikujsh nuk është t'ju mësojë të shkruani një bot për një detyrë të caktuar, por për të ju njohur me sintaksën e paketës telegram.bot, dhe shembuj të kodit, me ndihmën e të cilëve mund të shkruani bota për të zgjidhur detyrat tuaja.
Përmbajtja
Nëse jeni të interesuar për analizën e të dhënave, ndoshta do t'ju interesojnë kanalet e mia në dhe Shumica e përmbajtjes së të cilave i kushtohet gjuhës R.
Krijimi i telegram bot
Për të filluar, na nevojitet të krijojmë një bot. Ky proces kryhet me ndihmën e botit të veçantë BotFather, kaloni në dhe shkruani botit /start.
Pas kësaj do të merrni një mesazh me listën e komandave:
Mesazhi nga BotFather
Mund t'ju ndihmoj të krijoni dhe menaxhoni bota Telegram. Nëse jeni të ri në Bot API, ju lutem shikoni manualin (https://core.telegram.org/bots).
Mund të më kontrolloni duke dërguar këto komandë:
/newbot - krijoni një bot të ri
/mybots - redaktoni bota tuaja [beta]
Redaktoni Bota
/setname - ndryshoni emrin e botit
/setdescription - ndryshoni përshkrimin e botit
/setabouttext - ndryshoni informacionin rreth botit
/setuserpic - ndryshoni foto profilin e botit
/setcommands - ndryshoni listën e komandave
/deletebot - fshini një bot
Caktimet e Botit
/token - gjeneroni tokenin e autorizimit
/revoke - anulloni tokenin e aksesit të botit
/setinline - aktivizoni modalitetin inline (https://core.telegram.org/bots/inline)
/setinlinegeo - aktivizoni kërkesat e vendndodhjes inline (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - ndryshoni rregullat për feedback inline (https://core.telegram.org/bots/inline#collecting-feedback)
/setjoingroups - a mund të shtohet boti juaj në grupe?
/setprivacy - aktivizoni modalitetin e privatësisë (https://core.telegram.org/bots#privacy-mode) në grupe
Lojërat
/mygames - redaktoni lojërat tuaja (https://core.telegram.org/bots/games) [beta]
/newgame - krijoni një lojë të re (https://core.telegram.org/bots/games)
/listgames - merrni një listë të lojërave tuaja
/editgame - redaktoni një lojë
/deletegame - fshini një lojë ekzistuesePër të krijuar një bot të ri dërgoni komandën /newbot.
BotFather do t'ju kërkojë të futni emrin dhe logon e botit.
BotFather, [25.07.20 09:39]
Mirë, një bot i ri. Si do ta quajmë? Ju lutem zgjidhni një emër për bot-in tuaj.
Alexey Seleznev, [25.07.20 09:40]
Boti Im i Testit
BotFather, [25.07.20 09:40]
Mirë. Tani le të zgjedhim një emër përdoruesi për bot-in tuaj. Ai duhet të përfundojë me `bot`. Si ky, për shembull: TetrisBot ose tetris_bot.
Alexey Seleznev, [25.07.20 09:40]
@my_test_botEmrin mund ta vendosni sipas dëshirës, ndërsa emri i përdoruesit duhet të përfundojë me bot.
Nëse e keni bërë gjithçka siç duhet, do të merrni mesazhin e mëposhtëm:
Gati! Urime për bot-in tuaj të ri. Do ta gjeni te t.me/my_test_bot. Tani mund të shtoni një përshkrim, seksionin 'rreth' dhe një foto profili për bot-in tuaj, shikoni /help për një listë komandash. Përveç kësaj, kur të keni përfunduar krijimin e bot-it tuaj fantastik, kontaktoni mbështetjen tonë të Bot-it nëse dëshironi një emër më të mirë për të. Sigurohuni që bot-i të jetë plotësisht funksional para se ta bëni këtë.
Përdorni këtë token për të aksesuar HTTP API:
123456789:abcdefghijklmnopqrstuvwxyz
Për një përshkrim të Bot API, shikoni këtë faqe: https://core.telegram.org/bots/apiMë pas do t'ju nevojitet tokeni API i marrë, në shembullin tim është 123456789:abcdefghijklmnopqrstuvwxyz.
Në këtë hap, punët përgatitore për krijimin e bot-it janë përfunduar.
Instalimi i paketës për të punuar me telegram bot në R
Unë supozoj se keni instaluar gjuhën R, dhe mjedisi i zhvillimit RStudio. Nëse jo, mund të shikoni këtë për mënyrën se si t'i instaloni ato.
Për të punuar me Telegram Bot API ne do të përdorim paketën R .
Instalimi i paketimeve në R bëhet përmes funksionit install.packages(), prandaj për të instaluar paketën që na nevojitet përdorni komandën install.packages("telegram.bot").
Më shumë informacion për instalimin e paketimeve të ndryshme mund të merren nga .
Pas instalimit të paketës, ajo duhet të lidhet:
library(telegram.bot)Dërgimi i mesazheve nga R në Telegram
Bot-in tuaj të krijuar mund ta gjeni në Telegram sipas emrit të caktuar gjatë krijimit, në rastin tim është @my_test_bot.
Dërgoni bot-it çdo mesazh, për shembull "Përshëndetje bot". Aktualisht na nevojitet kjo për të marrë id-në e bisedës tuaj me bot-in.
Tani në R shkruani kodin e mëposhtëm.
library(telegram.bot)
# krijojmë një instancë të bot-it
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# Kërkojmë informacion për bot-in
print(bot$getMe())
# Marrim përditësimet e bot-it, dmth. listën e mesazheve të dërguara atij
updates <- bot$getUpdates()
# Kërkojmë identifikuesin e bisedës
# Shënim: para se të kërkoni përditësime, duhet të dërgoni një mesazh bot-it
chat_id <- updates[[1L]]$from_chat_id()Fillimisht krijojmë një instancë të bot-it tonë përmes funksionit Bot(), si argument në të duhet të kaloni tokenin e marrë më parë.
Ruajta tokenin në kod nuk konsiderohet praktikë e mirë, prandaj mund ta ruani atë në një variabël ambienti, dhe ta lexoni nga aty. Në mënyrë të parazgjedhur, në paketën telegram.bot është implementuar mbështetje për variablat e mjedisit të emrave të mëposhtëm: R_TELEGRAM_BOT_EMRI_I_BOTIT_TUAJ. Në vend të EMRI_I_BOTIT_TUAJ vendosni emrin që keni caktuar gjatë krijimit, në rastin tim do të jetë variabla R_TELEGRAM_BOT_Boti Im i Testit.
Mund të krijoni një variabël ambienti në disa mënyra, unë do të flas për më të përgjithshmet dhe ndërplatformës. Krijoni në direktorinë tuaj të shtëpisë (mësoni atë me komandën path.expand("~")) një skedë teksti me emrin .Renviron. Këtë mund ta bëni gjithashtu me komandën file.edit(path.expand(file.path("~", ".Renviron"))).
Dhe shtoni në të këtë rresht të mëposhtëm.
R_TELEGRAM_BOT_EMRI_I_BOTIT_TUAJ=123456789:abcdefghijklmnopqrstuvwxyzPastaj mund të përdorni token-in e ruajtur në variablën e ambientit përmes funksionit bot_token(), pra kështu:
bot <- Bot(token = bot_token("Boti Im i Testit"))Sanitizer.replaceElementWithChildren() getUpdates()na lejon të marrim përditësimet e robotit, pra mesazhet që i janë dërguar atij. Metoda from_chat_id(), lejon të merrni identifikatorin e bisedës nga e cila u dërgua mesazhi. Ky identifikator na nevojitet për të dërguar mesazhe nga roboti.
Përveç id-së së bisedës nga objekti i marrë me metodën getUpdates() merrni gjithashtu disa informacione të tjera të dobishme. Për shembull, informacionin për përdoruesin që e dërgoi mesazhin.
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"Pra, në këtë pikë kemi gjithçka të nevojshme për të dërguar një mesazh nga roboti në Telegram. Do ta përdorim metodën sendMessage(), në të cilën duhet të kaloni identifikatorin e bisedës, tekstin e mesazhit dhe llojin e përpunimit të mesazhit. Lloji i përpunimit mund të jetë Markdown ose HTML dhe është i vendosur me argumentin parse_mode.
# Отправка сообщения
bot$sendMessage(chat_id,
text = "Привет, *жирный текст* _курсив_",
parse_mode = "Markdown"
)Bazat e formatimit të përpunimit Markdown:
- Shkronjat e trasha theksohen me ndihmën e shenjës *:
- shembull:
*shkronjë e trashë* - rezultati: shkronjë e trashë
- shembull:
- Kursivi vendoset me një nënvizim:
- shembull:
_kursiv_ - rezultati: kursiv
- shembull:
- Shkronja monoshinore, që zakonisht thekson kodin, vendoset me ndihmën e apostrofëve — `:
- shembull: `shkronjë monoshinore`
- rezultati:
shkronjë monoshinore
Bazat e formatimit të përpunimit HTML:
Në HTML ju e mbuloni pjesën e tekstit që duhet të theksohet me etiketat, shembull tekst.
- — etiketa për hapje
- — etiketa për mbyllje
Etiketat e përpunimit HTML
<b>— shkronjë e trashë- shembull:
<b>font i trashë</b> - rezultatin font i trashë
- shembull:
— kursiv- shembull:
kursiv - rezultati: kursiv
- shembull:
— shkronjë monoshinore- shembull:
shkronjë monoshinore - rezultati:
shkronjë monoshinore
- shembull:
Përveç tekstit, ju mund të dërgoni edhe përmbajtje tjetër duke përdorur metoda speciale:
# Отправить изображение
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"
)Pra, për shembull me ndihmën e metodës sendPhoto() mund të dërgoni një grafik të ruajtur si imazh, të cilin e keni ndërtuar me paketin ggplot2.
Kontrolloni planifikuesin e detyrave Windows dhe dërgoni njoftimin për detyrat, të cilat janë mbyllur në mënyrë të papritur
Për të punuar me planifikuesin e detyrave Windows, ju nevojitet të instaloni paketën taskscheduleR, dhe për lehtësinë e punës me të dhënat, do të instalojmë paketën dplyr.
# Установка пакетов
install.packages(c('taskscheduleR', 'dplyr'))
# Подключение пакетов
library(taskscheduleR)
library(dplyr)Më pas, me ndihmën e funksionit taskscheduler_ls() kërkojmë informacionin për detyrat nga planifikuesi ynë. Me funksionin filter() nga paketa dplyr ne heqim nga lista e detyrave ato që janë përfunduar me sukses dhe kanë statusin e rezultatit të fundit 0, si dhe ato që nuk janë ekzekutuar asnjëherë dhe kanë statusin 267011, detyrat e fikura dhe detyrat që janë duke u ekzekutuar aktualisht.
# запрашиваем список задач
task <- task <- taskscheduler_ls() %>%
filter(! `Last Result` %in% c("0", "267011") &
`Scheduled Task State` == "Enabled" &
Status != "Running") %>%
select(TaskName) %>%
unique() %>%
unlist() %>%
paste0(., collapse = "n")Në objektin task tani kemi një listë detyrash, puna e të cilave përfundoi me gabim, dhe kjo listë duhet ta dërgojmë në Telegram.
Nëse shqyrtojmë çdo komandë në detaje, atëherë:
filter()— filtrin listën e detyrave sipas kushteve të përshkruara më sipërselect()— lë në tabelë vetëm një fushë me emrat e detyraveunique()— heq dyshimet e emraveunlist()— konverton kolonën e zgjedhur të tabelës në vektorpaste0()— bashkon emrat e detyrave në një varg të vetëm, duke vendosur si ndarës simbolin e ndarjes së rreshtit, dmth.n.
Gjithçka që na mbetet është të dërgojmë këtë rezultat në Telegram.
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)Pra, deri në këtë pikë, kodi i botit duket kështu:
Kodi i botit që kontrollon detyrat
# Подключение пакета
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"
)
}Kur përdorni shembullin e mësipërm, vendosni në kodin tuaj tokenin e botit tuaj dhe identifikuesin tuaj të bisedës.
Ju gjithashtu mund të shtoni kushte filtrimi për detyrat, për shembull duke kontrolluar vetëm ato detyra që janë krijuar nga ju, duke përjashtuar ato sistemike.
Gjithashtu, mund të nxirrni cilësime të ndryshme në një skedar konfiguroi të veçantë dhe t'i ruani atje id e bisedave dhe tokenin. Leximi i konfigut mund të bëhet, për shembull, me paketin configr.
Shembuj i konfigut ini
[telegram_bot]
;cilësimet e botit Telegram dhe bisedës, në të cilën do të vijnë njoftimet
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"Shembuj i leximit të variablave nga konfiku në R
library(configr)
# leximi i konfigurës
config <- read.config('C:/rruga_te_konfigu/config.cfg', rcmd.parse = TRUE)
bot_token <- config$telegram_bot$bot_token
chat_id <- config$telegram_bot$chat_idKonfiguroni programin e ekzekutimit të kontrollit të detyrave
Procesi më i detajuar i konfigurimit të ekzekutimit të skripteve sipas orarit është përshkruar në këtë . Këtu do të përshkruaj hapat që duhen ndjekur për këtë. Nëse ndonjë nga hapat nuk është i qartë për ju, ju lutem konsultohuni me artikullin për të cilin kam përmendur lidhjen.
Supozoni se kemi ruajtur kodin e botit tonë në një skedar check_bot.R. Për të planifikuar ekzekutimin e rregullt të këtij skedari, ndiqni këto hapa:
- Shkruani në variablin sistemik Path rrugën e dosjes ku është instaluar R, në Windows rruga do të jetë diçka e tillë:
C:Program FilesRR-4.0.2bin. - Krijoni një skedar ekzekutues bat, i cili do të ketë vetëm një rresht
R CMD BATCH C:rscriptscheck_botcheck_bot.R. ZëvendësoniC:rscriptscheck_botcheck_bot.Rme rrugën e plotë të skedarit tuaj R. - Pastaj konfiguroni me ndihmën e planifikuesit të detyrave të Windows orarin e ekzekutimit, për shembull çdo gjysmë ore.
Përfundim
Në këtë artikull ne e kuptuam se si të krijojmë një bot dhe të dërgojmë njoftime të ndryshme përmes tij në telegram.
Unë kam përshkruar detyrën e kontrollit të planifikuesit të detyrave të Windows, por ju mund të përdorni materialin e këtij artikulli për të dërguar çdo lloj njoftimi, nga parashikimi i motit deri te kuotat e aksioneve në bursë, sepse R ju lejon të lidhni me një numër të madh burimesh të dhënash.
Në artikullin e ardhshëm ne do të shqyrtojmë se si të shtojmë komanda dhe tastierë në botin, në mënyrë që ai të mund të dërgojë njoftime dhe të kryejë veprime më të komplikuara.
Burimi: habr.com
