Scribemus telegraphum automati in lingua R (parte 1): crea automati et mitte ad telegraphum utendo

Telegram audientia cotidie exponentialiter augetur, hoc adiuvatur per commodum nuntii, praesentia canales, confabulationes, et sane facultas automata creandi.

Automata adhiberi possunt ad omnino diversos fines, ab automando communicationes cum clientibus tuis ad opera tua administranda.

Essentialiter telegraphum uti potes ad aliquas operationes per automatarium faciendas: mittere vel petere notitias, officia currere in calculonis, notitias colligere in datorum, electronicas mittere, et sic porro.

Cogito articulorum seriem scribere quomodo cum labore telegraphum bot APIac botones ad usus necessarios scribe.

Scribemus telegraphum automati in lingua R (parte 1): crea automati et mitte ad telegraphum utendo

In hoc primo articulo figurabimus quomodo telegraphum creandum ac utendum eo ad notificationes in telegraphum mittendas.

Quam ob rem, autocinetum habebimus qui statum ultimae exsecutionis omnium officiorum in Fenestra Task Scheduler reprehendo, et notificationes tibi mittemus si quid ex his defecerint.

Intentio autem huius articulorum seriei non est docere te quomodo scribere autocinetum ad certum et angustum opus, sed plerumque te ad syntaxin sarcinae introducere. telegram.botet exempla codicea quibus automata scribere potes ut problemata tua solvenda sint.

contentus

Si vos es interested in Analysis analysi, fortasse interesse in my telegraphum ΠΈ YouTube rivos. Pleraque contenti r lingua dedicata est.

  1. Bot telegraphum creando
  2. Instruendo sarcina ad opus per telegraphum bot in R
  3. Mittens epistulas ab R ad Telegram
  4. Occasus sursum a schedule currit negotium lustrat
  5. conclusio,

Bot telegraphum creando

Primum, opus creare automatum. Hoc fit per specialem bot BotFather, ad Link et scribe in bot /start.

Post quem nuntium recipies cum indice mandatorum:

Nuntius ab 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

bot novum creare, mandatum mittere /newbot.

BotPather rogabit te nomen autocineti inire et 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

Nomen aliquod inire potes, sed login necesse est finire cum bot.

Si omnia recte feceris, sequentem nuntium accipies:

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

Deinde API signo accepti indigebis, in meo exemplo est 123456789:abcdefghijklmnopqrstuvwxyz.

Hoc gradu opus praeparatorium ad automati conficiendam perficitur.

Instruendo sarcina ad opus per telegraphum bot in R

Pono te iam habere linguam R et RStudii evolutionis in ambitu constituto. Si non ita est, hoc intueri potes Nullam video in quam instituendi eos.

Ad opus per telegraphum Bot API R sarcina utemur telegram.bot.

Installing packages in R fit using the function install.packages()ita ut sarcina quae nobis necessaria sunt instituat, utere imperio install.packages("telegram.bot").

Plus discere potes de insertis variis fasciculis ex hoc video.

Inaugurari sarcinam, coniungere debes;

library(telegram.bot)

Mittens epistulas ab R ad Telegram

Bot quod creatus es in telegrapho inveniri potest utens login in creatione definito, in casu meo est @my_test_bot.

Bot aliquem nuntium mittere, ut "Heus bot." In tempore, id eget bot Curabitur id consectetuer ut.

Codicem autem sequentem scribimus in R.

library(telegram.bot)

# создаём экзСмпляр Π±ΠΎΡ‚Π°
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")

# Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π±ΠΎΡ‚Π΅
print(bot$getMe())

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ обновлСния Π±ΠΎΡ‚Π°, Ρ‚.Π΅. список ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π΅ΠΌΡƒ сообщСний
updates <- bot$getUpdates()

# Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‡Π°Ρ‚Π°
# ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠ΅Ρ€Π΅Π΄ запросом ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΡ‚Ρƒ сообщСниС
chat_id <- updates[[1L]]$from_chat_id()

Initio instantia nostri automatis cum munere creamus Bot()prius receptum in argumentum pro argumento est praetereundum.

Optima usu non censetur signum in codice condere, ut illud in ambitu variabili condere possis et ex eo legere. Per default in sarcina telegram.bot Firmamentum ambitus variabilium sequentium nominum ad effectum adducta est: R_TELEGRAM_BOT_ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π... Instead of * ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π subrogare nomen quod datum est cum creando, in casu meo variabilis erit R_TELEGRAM_BOT_My Test Bot.

Plures modi ambitum variabilem efficiendi sunt, tibi dicam de uno universalissimo et crucis suggestu. Crea in domum tuam directorium (utendo imperio invenire potes path.expand("~")) Textus lima cum nomine .Renviron. Hoc facere potes utendo imperio file.edit(path.expand(file.path("~", ".Renviron"))).

Et hoc versus ad illud add.

R_TELEGRAM_BOT_ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π=123456789:abcdefghijklmnopqrstuvwxyz

Deinde, signum uti potes, quod servatur in ambitu variabili functione utens bot_token(), i.e. sic:

bot <- Bot(token = bot_token("My Test Bot"))

modum getUpdates()bot updates ut nos permittit, i.e. nuntii ad eum missi. Methodus from_chat_id()permittit tibi ut ID chat unde nuntius missus est. Id nobis opus est nuntios e bot mittere.

Curabitur id ex obiecto per modum praeter getUpdates() tu quoque alia utilia indicia recipias. Puta informationes de utentis qui nuntium misit.

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"

Hac in scaena iam omnia habemus quae nuntium e autocineto ad Telegram mittere oportet. Methodus utamur sendMessage()in quod debes chat ID, relatum textum, ac nuntium textus notam type. Genus notae Markdown vel HTML esse potest et argumento ponitur parse_mode.

# ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния
bot$sendMessage(chat_id,
                text = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, *ΠΆΠΈΡ€Π½Ρ‹ΠΉ тСкст* _курсив_",
                parse_mode = "Markdown"
)

Markdown forma basics:

  • Audax font extulit *;
    • exempli gratia: *ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ‚Ρ„*
    • eventum: audax font
  • Italicae per underscores indicantur:
    • exempli gratia: _курсив_
    • eventum: italics
  • Fons monospace, qui in codice programmatis illustrare solet, apostrophis specificatur.
    • exemplum: `monospace font`
    • eventum: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

Basics of formatting HTML markup:
In HTML, involvis partem textus qui in tags notari debet, exempli gratia <Ρ‚Π΅Π³>тСкст</Ρ‚Π΅Π³>.

  • <tag> - foramen tag
  • - claudendo tag

HTML markup tags

  • <b> - audax font
    • exempli gratia: <b>ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚</b>
    • exitum audax font
  • <i> - italics
    • exempli gratia: <i>курсив</i>
    • eventum: italics
  • β€” ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • exemplum: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • eventum: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

Praeter textum, aliis argumentis specialibus modis uti potes;

# ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
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"
)

Illae. exempli gratia per modum sendPhoto() Aliquam lacinia purus salvus esse potes mittere imaginem quam creavit per sarcina ggplot2.

Reprehendo in Fenestra Negotium Scheduler et notificationes circa opera mittens quae enormis terminaverunt

Laborare in Fenestra Negotium Scheduler vos postulo ut install a sarcina taskscheduleRet ad commodum operandi cum notitia, sarcinam install dplyr.

# Установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
install.packages(c('taskscheduleR', 'dplyr'))
# ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
library(taskscheduleR)
library(dplyr)

Deinde utens munere taskscheduler_ls() informationes de operibus nostris petimus a scheduler. Munus utens filter() ex sarcina dplyr Ex indice negotiorum removemus quae feliciter confecta sunt et ultimi effectus status 0 habent, et ea quae numquam deductae sunt et statum 267011 habent, debiles labores et operas quae nunc currunt.

# Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ список Π·Π°Π΄Π°Ρ‡
task <- task <- taskscheduler_ls() %>%
        filter(! `Last Result`  %in% c("0", "267011") & 
               `Scheduled Task State` == "Enabled" & 
               Status != "Running") %>%
        select(TaskName) %>%
        unique() %>%
        unlist() %>%
        paste0(., collapse = "n")

In objecto task Nunc habemus indicem operum quae incassum sunt, necesse est hunc album mittere ad Telegram.

Si diligentius singula quaeramus, ergo;

  • filter() - eliquare elenchum operum secundum condiciones de quibus supra
  • select() - relinquit tantum unum campum in mensa cum nomine officiorum
  • unique() - duplicata nomina removet
  • unlist() - delectae columnae ad mensam convertit vector
  • paste0() β€” connects nomina operum in unam lineam, and puts a line feed as a separator, i.e. n.

Reliquum est ut hunc exitum per telegraphum mittat.

bot$sendMessage(chat_id,
                text = task,
                parse_mode = "Markdown"
)

In momento igitur codicis autocinetici simile est:

Negotium recensionem bot code

# ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°
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"
  )

}

Cum supra exemplum utens, signum autocinetum tuum et id in codice tuo substitue.

Condiciones ad eliquationem functionum addere potes, exempli gratia, inspiciendo tantum opera quae creasti, systematis exclusis.

Etiam varias occasus in file configuratione separato ponere potes, et id chat repone et in eo signum. Mando legere potes, exempli gratia, involucro utens configr.

Exemplum ini config

[telegram_bot]
;настройки Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚Π° ΠΈ Ρ‡Π°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ увСдомлСния
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"

Exemplum lectionis variabiles ex config in R

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

Occasus sursum a schedule currit negotium lustrat

Processus ordinandi scriptorum immittendi in schedula fusius in hoc describitur articulus. Hic tantum describam vestigia quae ad hoc sequenda sunt. Si quis gradus tibi non liquet, refer ad articulum cui nexum praebui.

Let's assume that we saved our bot code to a file check_bot.R. Ad hunc fasciculum RATIONARIUM regulariter currendum, hos gradus sequere:

  1. Scribe viam ad folder in quo R in Path systema variabili instituitur: in Fenestra semita aliquid simile erit: C:Program FilesRR-4.0.2bin.
  2. Creare exsecutabile vespertilio cum una linea R CMD BATCH C:rscriptscheck_botcheck_bot.R. Restituo C:rscriptscheck_botcheck_bot.R ad plenam viam tuam R lima.
  3. Deinde utere Fenestra Task Scheduler ut scedulam launcham constituat, exempli gratia, omni hora dimidia.

conclusio,

In hoc articulo figurati sumus quomodo creare automatum utendum est ad varias notificationes in telegraphum mittendas.

Negotium vigilantiae Fenestra Task Scheduler descripsi, sed materia in hoc articulo uti potes notificationes quasvis mittere, e tempestatibus praecognoscere ad virgulas in commercio stirpis, quod R permittit te ad ingentem copiam notitiarum fontium coniungere.

In proximo articulo docebimus quid praecepta ac claviaturae bot addere ut non solum notificationes mittere, sed etiam actiones multipliciores efficere possit.

Source: www.habr.com