ProHoster > blog > Amministrazzjoni > Il-kitba ta' bot tat-telegramma f'R (parti 1): Il-ħolqien ta' bot u l-użu tiegħu biex tibgħat messaġġi f'telegramma
Il-kitba ta' bot tat-telegramma f'R (parti 1): Il-ħolqien ta' bot u l-użu tiegħu biex tibgħat messaġġi f'telegramma
L-udjenza tat-Telegram qed tikber b'mod esponenzjali kuljum, dan huwa ffaċilitat mill-konvenjenza tal-messaġġier, il-preżenza ta 'kanali, chats, u naturalment il-kapaċità li jinħolqu bots.
Il-bots jistgħu jintużaw għal skopijiet kompletament differenti, mill-awtomatizzazzjoni tal-komunikazzjonijiet mal-klijenti tiegħek għall-ġestjoni tal-kompiti tiegħek stess.
Essenzjalment, tista 'tuża telegramma biex twettaq kwalunkwe operazzjoni permezz ta' bot: tibgħat jew titlob dejta, tmexxi kompiti fuq is-server, tiġbor informazzjoni f'database, tibgħat emails, eċċ.
Nippjana li nikteb serje ta 'artikli dwar kif taħdem magħhom telegram bot API, u ikteb bots biex taqdi l-bżonnijiet tiegħek.
F'dan l-ewwel artiklu ser insemmu kif noħolqu bot tat-telegramma u nużawh biex nibagħtu notifiki f'telegramma.
Bħala riżultat, ikollna bot li se jiċċekkja l-istatus tal-aħħar eżekuzzjoni tal-kompiti kollha fil-Windows Task Scheduler, u jibgħatlek notifiki jekk xi waħda minnhom falliet.
Iżda l-iskop ta’ din is-serje ta’ artikli mhuwiex li jgħallmu kif tikteb bot għal biċċa xogħol speċifika u dejqa, iżda li ġeneralment tintroduċik fis-sintassi tal-pakkett telegram.bot, u eżempji ta' kodiċi li bihom tista' tikteb bots biex issolvi l-problemi tiegħek.
Kontenut
Jekk inti interessat fl-analiżi tad-dejta, tista' tkun interessat f'tiegħi telegramma и YouTube kanali. Ħafna mill-kontenut huwa ddedikat għal-lingwa R.
L-ewwel, irridu noħolqu bot. Dan isir bl-użu ta 'bot speċjali BotFather, mur fuq rabta u ikteb lill-bot /start.
Wara dan tirċievi messaġġ b'lista ta' kmandi:
Messaġġ minn BotFather
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
Biex toħloq bot ġdid, ibgħat il-kmand /newbot.
BotFather se jgħidlek biex iddaħħal l-isem tal-bot u l-login.
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
Tista' ddaħħal kwalunkwe isem, iżda l-login għandu jispiċċa bi bot.
Jekk għamilt kollox sew, tirċievi l-messaġġ li ġej:
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
Sussegwentement ser ikollok bżonn it-token API riċevut, fl-eżempju tiegħi huwa 123456789:abcdefghijklmnopqrstuvwxyz.
F'dan il-pass, ix-xogħol preparatorju għall-ħolqien tal-bot jitlesta.
L-installazzjoni ta 'pakkett biex taħdem ma' telegram bot f'R
Nassumi li diġà għandek il-lingwa R u l-ambjent ta 'żvilupp RStudio installati. Jekk dan ma jkunx il-każ, allura tista 'tħares lejn dan video tutorja dwar kif tinstallahom.
Biex naħdmu mat-Telegram Bot API se nużaw il-pakkett R telegramma.bot.
L-installazzjoni tal-pakketti f'R issir bl-użu tal-funzjoni install.packages(), għalhekk biex tinstalla l-pakkett li għandna bżonn, uża l-kmand install.packages("telegram.bot").
Tista 'titgħallem aktar dwar l-installazzjoni ta' pakketti varji minn dan il-video.
Wara li tinstalla l-pakkett, għandek bżonn tikkonnettjah:
library(telegram.bot)
Tibgħat messaġġi minn R għal Telegram
Il-bot li ħloqt jista' jinstab f'Telegram billi tuża l-login speċifikat waqt il-ħolqien, fil-każ tiegħi huwa @my_test_bot.
Ibgħat lill-bot kwalunkwe messaġġ, bħal "Ħej bot." Bħalissa, għandna bżonn dan sabiex niksbu l-id taċ-chat tiegħek mal-bot.
Issa niktbu l-kodiċi li ġej f'R.
library(telegram.bot)
# создаём экземпляр бота
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")
# Запрашиваем информацию о боте
print(bot$getMe())
# Получаем обновления бота, т.е. список отправленных ему сообщений
updates <- bot$getUpdates()
# Запрашиваем идентификатор чата
# Примечание: перед запросом обновлений вы должны отправить боту сообщение
chat_id <- updates[[1L]]$from_chat_id()
Inizjalment, noħolqu eżempju tal-bot tagħna bil-funzjoni Bot(), it-token riċevut qabel għandu jiġi mgħoddi fih bħala argument.
Mhux ikkunsidrat l-aħjar prattika li taħżen it-token fil-kodiċi, sabiex tkun tista 'taħżen f'varjabbli ambjentali u taqrah minnha. B'mod awtomatiku fil-pakkett telegram.bot Ġie implimentat appoġġ għall-varjabbli ambjentali tal-ismijiet li ġejjin: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА. Minflok ИМЯ_ВАШЕГО_БОТА jissostitwixxi l-isem li speċifikajt meta ħoloq, fil-każ tiegħi se jkun varjabbli R_TELEGRAM_BOT_My Test Bot.
Hemm diversi modi kif toħloq varjabbli ambjentali; Jien ngħidlek dwar l-aktar waħda universali u multi-pjattaforma. Oħloq fid-direttorju tad-dar tiegħek (tista 'ssibha billi tuża l-kmand path.expand("~")) fajl test bl-isem .Renviron. Tista 'wkoll tagħmel dan billi tuża l-kmand file.edit(path.expand(file.path("~", ".Renviron"))).
Sussegwentement, tista 'tuża t-token salvat fil-varjabbli ambjentali billi tuża l-funzjoni bot_token(), i.e. bħal dan:
bot <- Bot(token = bot_token("My Test Bot"))
Metodu getUpdates()jippermettilna niksbu aġġornamenti tal-bot, i.e. messaġġi li ntbagħtu lilu. Metodu from_chat_id(), jippermettilek tikseb l-ID taċ-chat minn fejn intbagħat il-messaġġ. Għandna bżonn din l-ID biex nibagħtu messaġġi mill-bot.
Minbarra l-id taċ-chat mill-oġġett miksub bil-metodu getUpdates() tirċievi wkoll xi informazzjoni utli oħra. Pereżempju, informazzjoni dwar l-utent li bagħat il-messaġġ.
Għalhekk, f'dan l-istadju diġà għandna dak kollu li neħtieġu biex nibagħtu messaġġ minn bot għal Telegram. Ejja nużaw il-metodu sendMessage(), li fiha għandek bżonn tgħaddi l-ID taċ-chat, it-test tal-messaġġ, u t-tip ta 'markup tat-test tal-messaġġ. It-tip ta 'markup jista' jkun Markdown jew HTML u huwa stabbilit mill-argument parse_mode.
# Отправка сообщения
bot$sendMessage(chat_id,
text = "Привет, *жирный текст* _курсив_",
parse_mode = "Markdown"
)
Bażi tal-ifformattjar tal-markdown:
It-tipa grassa hija enfasizzata b'*:
eżempju: *жирный шритф*
riżultat: font grassa
Il-korsiv huma indikati permezz ta’ enfasi:
eżempju: _курсив_
riżultat: korsiv
It-tipa monospace, li normalment tintuża biex tenfasizza l-kodiċi tal-programm, hija speċifikata bl-użu ta' appostrofi - `:
eżempju: `font monospace`
riżultat: моноширинный шрифт
Bażi tal-ifformattjar tal-markup HTML:
Fl-HTML, inti wrap il-parti tat-test li jeħtieġ li tiġi enfasizzata fit-tikketti, eżempju <тег>текст</тег>.
<tag> - tag tal-ftuħ
- tag tal-għeluq
Tikketti tal-markup HTML
<b> - tipa grassa
eżempju: <b>жирный шрифт</b>
riżultat font grassa
<i> - korsiv
eżempju: <i>курсив</i>
riżultat: korsiv
— моноширинный шрифт
eżempju: моноширинный шрифт
riżultat: моноширинный шрифт
Minbarra t-test, tista' tibgħat kontenut ieħor billi tuża metodi speċjali:
Dawk. pereżempju bl-użu tal-metodu sendPhoto() tista' tibgħat graff issejvjat bħala immaġini li ħloqt bl-użu tal-pakkett ggplot2.
Iċċekkja l-Windows Task Scheduler u tibgħat notifiki dwar kompiti li jkunu tterminaw b'mod anormali
Biex taħdem mal-Windows Task Scheduler għandek bżonn tinstalla l-pakkett taskscheduleR, u għall-konvenjenza li taħdem bid-dejta, installa l-pakkett dplyr.
# Установка пакетов
install.packages(c('taskscheduleR', 'dplyr'))
# Подключение пакетов
library(taskscheduleR)
library(dplyr)
Sussegwentement, bl-użu tal-funzjoni taskscheduler_ls() aħna nitolbu informazzjoni dwar il-kompiti mill-iskedar tagħna. Bl-użu tal-funzjoni filter() mill-pakkett dplyr Inneħħu mil-lista ta' kompiti dawk li tlestew b'suċċess u għandhom status tal-aħħar riżultat ta' 0, u dawk li qatt ma ġew imnedija u għandhom status ta' 267011, kompiti b'diżabbiltà, u kompiti li qed jaħdmu bħalissa.
paste0() — jgħaqqad l-ismijiet tal-kompiti f’linja waħda, u tpoġġi line feed bħala separatur, i.e. n.
Kulma jibqa’ għalina hu li nibagħtu dan ir-riżultat permezz ta’ telegramma.
bot$sendMessage(chat_id,
text = task,
parse_mode = "Markdown"
)
Għalhekk, bħalissa l-kodiċi tal-bot jidher bħal dan:
Kodiċi tal-bot tar-reviżjoni tal-kompitu
# Подключение пакета
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"
)
}
Meta tuża l-eżempju ta 'hawn fuq, issostitwixxi t-token tal-bot tiegħek u l-ID taċ-chat tiegħek fil-kodiċi.
Tista 'żżid kundizzjonijiet għall-iffiltrar tal-kompiti, pereżempju, tivverifika biss dawk il-kompiti li ħloqt, esklużi dawk tas-sistema.
Tista 'wkoll tpoġġi diversi settings f'fajl ta' konfigurazzjoni separat, u taħżen fiha l-id taċ-chat u t-token. Tista 'taqra l-konfigurazzjoni, pereżempju, billi tuża l-pakkett configr.
Eżempju ini konfig
[telegram_bot]
;настройки телеграм бота и чата, в который будут приходить уведомления
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"
Eżempju ta 'qari ta' varjabbli minn konfigurazzjoni f'R
Twaqqif ta 'skeda għat-tmexxija ta' skans tal-kompiti
Il-proċess tat-twaqqif tat-tnedija ta 'skripts fuq skeda huwa deskritt f'aktar dettall f'dan artikolu. Hawnhekk ser niddeskrivi biss il-passi li jeħtieġ li jiġu segwiti għal dan. Jekk xi wieħed mill-passi ma jkunx ċar għalik, imbagħad irreferi għall-artiklu li għalih ipprovdejt link.
Ejja nassumu li ssejvjajna l-kodiċi bot tagħna f'fajl check_bot.R. Biex tiskeda li dan il-fajl jaħdem regolarment, segwi dawn il-passi:
Ikteb il-mogħdija għall-folder li fih R huwa installat fil-varjabbli tas-sistema Path; fil-Windows, il-mogħdija tkun xi ħaġa bħal din: C:Program FilesRR-4.0.2bin.
Oħloq fajl BAT eżekutibbli b'linja waħda biss R CMD BATCH C:rscriptscheck_botcheck_bot.R. Ibdel C:rscriptscheck_botcheck_bot.R għall-mogħdija sħiħa għall-fajl R tiegħek.
Sussegwentement, uża Windows Task Scheduler biex twaqqaf skeda tat-tnedija, pereżempju, kull nofs siegħa.
Konklużjoni
F'dan l-artikolu, sibna kif noħolqu bot u nużawh biex tibgħat diversi notifiki f'telegramma.
Iddeskrivejt il-kompitu tal-monitoraġġ tal-Windows Task Scheduler, iżda tista' tuża l-materjal f'dan l-artikolu biex tibgħat kwalunkwe notifika, mit-tbassir tat-temp għal kwotazzjonijiet tal-istokk fil-borża, minħabba li R jippermettilek tikkonnettja ma 'numru kbir ta' sorsi tad-dejta.
Fl-artiklu li jmiss, aħna ser insemmu kif iżżid kmandi u tastiera mal-bot sabiex ma tkunx tista' biss tibgħat notifiki, iżda wkoll twettaq azzjonijiet aktar kumplessi.