Kunyora teregiramu bot muR (chikamu 1): Kugadzira bot uye kuishandisa kutumira mameseji muteregiramu.

Vateereri veTeregiramu vari kukura zvakanyanya mazuva ese, izvi zvinofambiswa nekureruka kwemutumwa, kuvapo kwechiteshi, chats, uye zvechokwadi kugona kugadzira bots.

Mabhoti anogona kushandiswa kune zvakasiyana zvachose zvinangwa, kubva otomatiki kutaurirana nevatengi vako kubata ako ega mabasa.

Chaizvoizvo, unogona kushandisa teregiramu kuita chero mashandiro kuburikidza nebhoti: kutumira kana kukumbira data, mhanyisa mabasa pane sevha, unganidza ruzivo mudhatabhesi, kutumira maemail, zvichingodaro.

Ndinoronga kunyora nhevedzano yezvinyorwa pamusoro pekushanda nazvo Telegraph bot API, uye nyora bots kuti dzienderane nezvido zvako.

Kunyora teregiramu bot muR (chikamu 1): Kugadzira bot uye kuishandisa kutumira mameseji muteregiramu.

Muchinyorwa chino chekutanga tichaona nzira yekugadzira teregiramu bot uye toishandisa kutumira zviziviso muteregiramu.

Nekuda kweizvozvo, isu tichava nebhoti iyo inoongorora mamiriro ekupedzisira kuitwa kwese mabasa muWindows Task Scheduler, uye kukutumira zviziviso kana chimwe chazvo chakundikana.

Asi chinangwa cheiyi nhevedzano yezvinyorwa hakusi kukudzidzisa kunyora bot kune chaiyo, nhete basa, asi kazhinji kukuzivisa iwe kune syntax yepakeji. telegram.bot, uye mienzaniso yekodhi iyo iwe unogona kunyora bots kugadzirisa matambudziko ako pachako.

Zviri mukati

Kana iwe uchifarira kuongorora data, unogona kunge uchifarira zvangu teregiramu ΠΈ YouTube channels. Zvizhinji zvemukati zvakatsaurirwa kumutauro weR.

  1. Kugadzira telegraph bot
  2. Kuisa pasuru yekushanda ne telegraph bot muR
  3. Kutumira mameseji kubva kuR kuenda kuTeregiramu
  4. Kugadzira hurongwa hwekumhanyisa basa scans
  5. mhedziso

Kugadzira telegraph bot

Kutanga, isu tinofanirwa kugadzira bot. Izvi zvinoitwa uchishandisa yakakosha bot BotFather, enda ku batanidzo uye nyora kune bot /start.

Mushure mezvo iwe uchagamuchira meseji ine runyorwa rwemirairo:

Mharidzo kubva kuna 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

Kuti ugadzire bhoti itsva, tumira murairo /newbot.

BotFather inokukumbira kuti uise zita re bot uye kupinda.

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

Iwe unogona kuisa chero zita, asi iyo login inofanira kupera nayo bot.

Kana iwe waita zvese nemazvo, uchagamuchira inotevera meseji:

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

Tevere iwe uchada yakagamuchirwa API tokeni, mumuenzaniso wangu ndizvo 123456789:abcdefghijklmnopqrstuvwxyz.

Padanho iri, basa rekugadzirira kugadzira bot rinopedzwa.

Kuisa pasuru yekushanda ne telegraph bot muR

Ini ndinofungidzira kuti watova nemutauro weR uye RStudio budiriro nharaunda yakaiswa. Kana zvisina kudaro, iwe unogona kutarisa izvi vhidhiyo dzidziso pamashandisirwo azvo.

Kushanda neTeregiramu Bot API isu tichashandisa iyo R package telegram.bot.

Kuisa mapakeji muR kunoitwa uchishandisa basa install.packages(), saka kuisa pasuru yatinoda, shandisa rairo install.packages("telegram.bot").

Iwe unogona kudzidza zvakawanda nezve kuisa akasiyana mapakeji kubva vhidhiyo iyi.

Mushure mekuisa iyo package, unofanirwa kuibatanidza:

library(telegram.bot)

Kutumira mameseji kubva kuR kuenda kuTeregiramu

Iyo bot yawakagadzira inogona kuwanikwa muTeregiramu uchishandisa iyo login yakatsanangurwa panguva yekusika, mune yangu ndiyo @my_test_bot.

Tumira bot chero meseji, senge "Hei bot." Parizvino, isu tinoda izvi kuti tiwane id yekutaura kwako ne bot.

Iye zvino tinonyora kodhi inotevera muR.

library(telegram.bot)

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

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

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

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

Pakutanga, tinogadzira muenzaniso webhoti yedu nebasa Bot(), chiratidzo chakambogamuchirwa chinofanira kupfuudzwa mairi senharo.

Kuchengeta chiratidzo mukodhi hakuonekwe seyakanakisa tsika, saka unogona kuichengeta munzvimbo inosiyana uye woiverenga kubva mairi. By default mupakeji telegram.bot Tsigiro yezvakasiyana nharaunda yemazita anotevera yaitwa: R_TELEGRAM_BOT_ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π... Pane kudaro ИМЯ_Π’ΠΠ¨Π•Π“Πž_Π‘ΠžΠ’Π tsiva zita rawakataura paunenge uchigadzira, mune yangu richave shanduko R_TELEGRAM_BOT_My Test Bot.

Pane nzira dzinoverengeka dzekugadzira nharaunda inoshanduka; Ini ndichakuudza nezve yakasarudzika uye muchinjika-chikuva chimwe. Gadzira mudhairekitori rako repamba (unogona kuiwana uchishandisa rairo path.expand("~")) text file ine zita racho .Renviron. Iwe unogona zvakare kuita izvi uchishandisa murairo file.edit(path.expand(file.path("~", ".Renviron"))).

Uye wedzera mutsara unotevera kwairi.

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

Tevere, unogona kushandisa chiratidzo chakachengetwa mune nharaunda chinja uchishandisa basa bot_token(), i.e. sezvizvi:

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

Method getUpdates()inotibvumira kuwana bot updates, i.e. mameseji akatumirwa kwaari. Nzira from_chat_id(), inokutendera kuti utore ID yechat kubva kwaitumirwa meseji. Tinoda iyi ID kutumira mameseji kubva kubhoti.

Mukuwedzera kune id yekutaura kubva pane chinhu chakawanikwa nenzira getUpdates() iwe unogamuchirawo mamwe mashoko anobatsira. Semuenzaniso, ruzivo nezve mushandisi akatumira meseji.

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"

Saka, panguva ino tatova nezvose zvatinoda kutumira meseji kubva kubhoti kuenda kuTeregiramu. Ngatishandise nzira sendMessage(), iyo yaunoda kupfuudza chat ID, meseji meseji, uye meseji meseji markup mhando. Iyo markup type inogona kunge iri Markdown kana HTML uye inoiswa nenharo parse_mode.

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

Markdown formatting basics:

  • Bold font inoratidzwa ne *:
    • muenzaniso: *ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ‚Ρ„*
    • mhedzisiro: bold font
  • Kutsveyamisa mashoko kunoratidzwa nema underscores:
    • muenzaniso: _курсив_
    • mhedzisiro: tatsveyamisa mabhii
  • Iyo monospace font, iyo inowanzo shandiswa kuratidza kodhi yepurogiramu, inotsanangurwa uchishandisa apostrophes - `:
    • muenzaniso: `monospace font`
    • mhedzisiro: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

Nheyo dzekugadzirisa HTML markup:
MuHTML, unoputira chikamu chemavara chinoda kujekeswa muma tag, semuenzaniso <Ρ‚Π΅Π³>тСкст</Ρ‚Π΅Π³>.

  • <tag> - kuvhura tag
  • - kuvhara tag

HTML markup tags

  • <b> - bold font
    • muenzaniso: <b>ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚</b>
    • kuitika bold font
  • <i> - pakatsveyama
    • muenzaniso: <i>курсив</i>
    • mhedzisiro: tatsveyamisa mabhii
  • β€” ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • muenzaniso: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚
    • mhedzisiro: ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

Pamusoro pezvinyorwa, unogona kutumira zvimwe zvemukati uchishandisa nzira dzakakosha:

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

Avo. semuenzaniso kushandisa nzira sendPhoto() unogona kutumira girafu rakachengetwa semufananidzo wawakagadzira uchishandisa package ggplot2.

Kutarisa iyo Windows Task Scheduler uye kutumira zviziviso nezve mabasa apera zvisirizvo.

Kuti ushande neWindows Task Scheduler unofanirwa kuisa iyo package taskscheduleR, uye kuti zvive nyore kushanda nedata, isa pasuru dplyr.

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

Zvadaro, kushandisa basa taskscheduler_ls() isu tinokumbira ruzivo nezvemabasa kubva kune yedu scheduler. Kushandisa basa filter() kubva pasuru dplyr Isu tinobvisa kubva pane rondedzero yemabasa ayo akapedzwa zvakabudirira uye ane yekupedzisira mhedzisiro mamiriro e0, uye ayo asina kumbotangwa uye ane chimiro che267011, akaremara mabasa, uye mabasa ari kushanda parizvino.

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

Muchinhu task Isu tave nerondedzero yemabasa akatadza, isu tinofanirwa kutumira iyi runyorwa kuTeregiramu.

Kana tikatarisa murairo wega wega zvakadzama, zvino:

  • filter() - inosefa rondedzero yemabasa zvinoenderana nemamiriro atsanangurwa pamusoro
  • select() - inosiya munda mumwe chete patafura ine zita remabasa
  • unique() - inobvisa mazita akadzokororwa
  • unlist() - inoshandura tafura yetafura yakasarudzwa kune vector
  • paste0() - inobatanidza mazita emabasa mumutsara mumwe, uye inoisa mutsara wekudya semuparadzi, i.e. n.

Chasara kwatiri kutumira mhedzisiro iyi kuburikidza neteregiramu.

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

Saka, parizvino iyo bot kodhi inoita seizvi:

Basa rekuongorora bot kodhi

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

}

Paunenge uchishandisa muenzaniso uri pamusoro, tsiva yako bot tokeni uye ID yako yekutaura mukodhi.

Iwe unogona kuwedzera mamiriro ekusefa mabasa, semuenzaniso, kutarisa chete iwo mabasa awakagadzira, kusasanganisa iwo ehurongwa.

Iwe unogona zvakare kuisa akasiyana marongero mune yakaparadzana faira yekumisikidza, uye chengetedza chat id uye chiratidzo mairi. Iwe unogona kuverenga iyo config, semuenzaniso, uchishandisa iyo package configr.

Muenzaniso ini config

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

Muenzaniso wekuverenga zvakasiyana kubva kune config muR

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

Kugadzira hurongwa hwekumhanyisa basa scans

Iyo nzira yekumisikidza yakarongwa script kutanga inotsanangurwa zvakadzama mune izvi chinyorwa. Pano ini ndichatsanangura chete matanho anofanirwa kuteverwa pane izvi. Kana chero matanho asina kujeka kwauri, saka tarisa kune chinyorwa chandakapa chinongedzo.

Ngatifungei kuti takachengeta bot code yedu kufaira check_bot.R. Kuronga faira iri kuti rishande nguva dzose, tevera matanho aya:

  1. Nyora nzira inoenda kuforodha iyo R yakaiswa muPath system inoshanduka; muWindows, nzira ichava chinhu chakadai: C:Program FilesRR-4.0.2bin.
  2. Gadzira faira rebat rinogoneka nemutsara mumwe chete R CMD BATCH C:rscriptscheck_botcheck_bot.R. Tsiva C:rscriptscheck_botcheck_bot.R kune iyo yakazara nzira kune yako R faira.
  3. Tevere, shandisa Windows Task Scheduler kumisikidza hurongwa hwekutanga, semuenzaniso, hafu yeawa yega yega.

mhedziso

Muchinyorwa chino, takaona kuti tingagadzira sei bot uye toishandisa kutumira zviziviso zvakasiyana muteregiramu.

Ini ndakatsanangura basa rekutarisa iyo Windows Task Scheduler, asi unogona kushandisa zviri muchinyorwa chino kutumira chero zviziviso, kubva kumamiriro ekunze kusvika kune stock quotes pastock exchange, nekuti. R inokutendera kuti ubatanidze kune yakakura nhamba yedata masosi.

Muchikamu chinotevera, tichaona kuti tingawedzera sei mirairo uye keyboard kune bot kuitira kuti isangotumira zviziviso chete, asiwo kuita zviito zvakaoma.

Source: www.habr.com

Voeg