Ho ngola bot ea thelekramo ho R (karolo ea 1): Ho theha bot le ho e sebelisa ho romella melaetsa ka thelekramo

Bamameli ba Telegram ba ntse ba hōla ka mokhoa o tsotehang letsatsi le leng le le leng, sena se thusoa ke boiketlo ba lenģosa, boteng ba liteishene, lipuisano, 'me ehlile bokhoni ba ho theha bots.

Bots e ka sebelisoa ka merero e fapaneng ka ho felletseng, ho tloha ho othomathiki oa puisano le bareki ba hau ho isa mesebetsing ea hau.

Ha e le hantle, o ka sebelisa thelekramo ho etsa ts'ebetso efe kapa efe ka bot: ho romella kapa ho kopa data, ho tsamaisa mesebetsi ho seva, ho bokella tlhahisoleseling ho database, ho romella mangolo-tsoibila, joalo-joalo.

Ke rerile ho ngola letoto la lihlooho tse mabapi le mokhoa oa ho sebetsa le telegram bot API, 'me u ngole bots ho lumellana le litlhoko tsa hau.

Ho ngola bot ea thelekramo ho R (karolo ea 1): Ho theha bot le ho e sebelisa ho romella melaetsa ka thelekramo

Sehloohong sena sa pele re tla fumana mokhoa oa ho theha bot ea thelekramo le ho e sebelisa ho romella litsebiso ka thelekramo.

Ka lebaka leo, re tla ba le bot e tla hlahloba boemo ba ts'ebetso ea ho qetela ea mesebetsi eohle ho Windows Task Scheduler, le ho u romella litsebiso haeba leha e le efe ea tsona e hlōlehile.

Empa sepheo sa letoto lena la lingoloa ha se ho u ruta mokhoa oa ho ngola bot bakeng sa mosebetsi o itseng, o moqotetsane, empa ke ho u tsebisa ka syntax ea sephutheloana. telegram.bot, le mehlala ea khoutu eo ka eona u ka ngolang bots ho rarolla mathata a hau.

Tse ka hare

Haeba u thahasella tlhahlobo ea data, u ka 'na ua thahasella ea ka thelekramo и mang youtube dikanale. Boholo ba litaba bo nehetsoe puong ea R.

  1. Ho theha bot ea thelekramo
  2. Ho kenya sephutheloana sa ho sebetsa le bot ea thelekramo ho R
  3. Ho romella melaetsa ho tloha ho R ho ea Telegram
  4. Ho theha kemiso ea ho tsamaisa likhechana tsa mosebetsi
  5. fihlela qeto e

Ho theha bot ea thelekramo

Pele, re hloka ho theha bot. Sena se etsoa ho sebelisoa bot e khethehileng Ntate Ntate, ea ho kgokahanyo ebe u ngolla bot /start.

Ka mor'a moo o tla fumana molaetsa o nang le lethathamo la litaelo:

Molaetsa o tsoang ho 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

Ho theha bot e ncha, romella taelo /newbot.

BotFather e tla u kopa ho kenya lebitso la bot le ho kena.

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

O ka kenya lebitso lefe kapa lefe, empa ho kena ho tlameha ho fela ka bot.

Haeba u entse tsohle ka nepo, u tla fumana molaetsa o latelang:

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

Ka mor'a moo o tla hloka letšoao la API le amohetseng, mohlala oa ka ke 123456789:abcdefghijklmnopqrstuvwxyz.

Mothating ona, mosebetsi oa boitokisetso oa ho theha bot o phethetsoe.

Ho kenya sephutheloana sa ho sebetsa le bot ea thelekramo ho R

Ke nahana hore u se u ntse u e-na le puo ea R le tikoloho ea ntlafatso ea RStudio e kentsoeng. Haeba sena ha se joalo, joale u ka sheba sena thuto ea video ka mokhoa oa ho li kenya.

Ho sebetsa le Telegraph Bot API re tla sebelisa sephutheloana sa R telegram.bot.

Ho kenya liphutheloana ho R ho etsoa ka ts'ebetso install.packages(), kahoo ho kenya sephutheloana seo re se hlokang, sebelisa taelo install.packages("telegram.bot").

U ka ithuta ho eketsehileng ka ho kenya liphutheloana tse sa tšoaneng ho tloha video ena.

Kamora ho kenya sephutheloana, o hloka ho se hokela:

library(telegram.bot)

Ho romella melaetsa ho tloha ho R ho ea Telegram

Bot eo u e entseng e ka fumanoa ho Telegraph u sebelisa ho kena ho boletsoeng nakong ea pōpo, molemong oa ka ho joalo @my_test_bot.

Romella bot molaetsa ofe kapa ofe, joalo ka "Hey bot." Hajoale, re hloka sena ho fumana id ea puisano ea hau le bot.

Hona joale re ngola khoutu e latelang ho R.

library(telegram.bot)

# создаём экземпляр бота
bot <- Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz")

# Запрашиваем информацию о боте
print(bot$getMe())

# Получаем обновления бота, т.е. список отправленных ему сообщений
updates <- bot$getUpdates()

# Запрашиваем идентификатор чата
# Примечание: перед запросом обновлений вы должны отправить боту сообщение
chat_id <- updates[[1L]]$from_chat_id()

Qalong, re theha mohlala oa bot ea rona ka ts'ebetso Bot(), letšoao le amohetsoeng pele le tlameha ho fetisetsoa ho eona e le khang.

Ha ho nkoe e le mokhoa o motle oa ho boloka lets'oao ka khoutu, kahoo o ka le boloka sebakeng se feto-fetohang sa tikoloho ebe o se bala ho tsoa ho sona. Ka ho sa feleng ka har'a sephutheloana telegram.bot Tšehetso bakeng sa mefuta-futa ea tikoloho ea mabitso a latelang e kentsoe tšebetsong: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА... Sebakeng seo ИМЯ_ВАШЕГО_БОТА nkela sebaka sa lebitso leo u le boletseng ha u theha, molemong oa ka e tla fetoha R_TELEGRAM_BOT_My Test Bot.

Ho na le mekhoa e mengata ea ho theha tikoloho e feto-fetohang; Ke tla u joetsa ka e 'ngoe ea bokahohleng le ea sethala. Theha bukeng ea hau ea lapeng (o ka e fumana u sebelisa taelo path.expand("~")) faele ea mongolo e nang le lebitso .Renviron. U ka boela ua etsa sena u sebelisa taelo file.edit(path.expand(file.path("~", ".Renviron"))).

'Me u kenye mola o latelang ho eona.

R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА=123456789:abcdefghijklmnopqrstuvwxyz

Ka mor'a moo, o ka sebelisa letšoao le bolokiloeng tikolohong e fapaneng u sebelisa ts'ebetso bot_token(), ke. rata sena:

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

Mokhoa getUpdates()e re lumella ho fumana lintlafatso tsa bot, i.e. melaetsa e rometsoeng ho eena. Mokhoa from_chat_id(), e u lumella ho fumana ID ea moqoqo oo molaetsa o rometsoeng ho oona. Re hloka ID ena ho romella melaetsa ho tsoa bot.

Ho phaella ho id ea moqoqo ho tloha nthong e fumanoang ke mokhoa getUpdates() o boetse o fumana lintlha tse ling tsa bohlokoa. Mohlala, tlhahisoleseling mabapi le mosebelisi ea rometseng molaetsa.

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"

Kahoo, mothating ona re se re ntse re e-na le tsohle tseo re li hlokang ho romella molaetsa ho tloha bot ho Telegram. Ha re sebeliseng mokhoa sendMessage(), moo o hlokang ho fetisa ID ea moqoqo, mongolo oa molaetsa, le mofuta oa mongolo oa mongolo. Mofuta oa markup e ka ba Markdown kapa HTML mme o behiloe ke khang parse_mode.

# Отправка сообщения
bot$sendMessage(chat_id,
                text = "Привет, *жирный текст* _курсив_",
                parse_mode = "Markdown"
)

Lintlha tsa motheo tsa ho fomata Markdown:

  • Bold fonte e totobalitsoe ka *:
    • mohlala: *жирный шритф*
    • sephetho: mongolo o motenya
  • Mongolo o tšekaletseng o bontšoa ka li-underscore:
    • mohlala: _курсив_
    • sephetho: mongolo o tšekaletseng
  • Fonte ea monospace, eo hangata e sebelisetsoang ho totobatsa khoutu ea lenaneo, e hlalosoa ho sebelisoa li-apostrophes - `:
    • mohlala: `monospace fonte`
    • sephetho: моноширинный шрифт

Lintlha tsa motheo tsa ho fomata markup ea HTML:
Ka HTML, o thatela karolo ea mongolo e lokelang ho totobatsoa ka li-tag, mohlala <тег>текст</тег>.

  • <tag> - tag ea ho bula
  • - letšoao la ho koala

Li-tag tsa matšoao a HTML

  • <b> - mongolo o motenya
    • mohlala: <b>жирный шрифт</b>
    • liphello mongolo o motenya
  • <i> - mongolo o tšekaletseng
    • mohlala: <i>курсив</i>
    • sephetho: mongolo o tšekaletseng
  • — моноширинный шрифт
    • mohlala: моноширинный шрифт
    • sephetho: моноширинный шрифт

Ntle le mongolo, o ka romella litaba tse ling ka mekhoa e ikhethileng:

# Отправить изображение
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"
)

Tseo. mohlala ho sebelisa mokhoa sendPhoto() o ka romela graph e bolokiloeng e le setšoantšo seo u se entseng u sebelisa sephutheloana ggplot2.

Ho hlahloba Windows Task Scheduler le ho romela litemoso mabapi le mesebetsi e felileng ka mokhoa o sa tloaelehang.

Ho sebetsa le Windows Task Scheduler o hloka ho kenya sephutheloana taskscheduleR, le molemong oa ho sebetsa le data, kenya sephutheloana dplyr.

# Установка пакетов
install.packages(c('taskscheduleR', 'dplyr'))
# Подключение пакетов
library(taskscheduleR)
library(dplyr)

E latelang, sebelisa sesebelisoa taskscheduler_ls() re kopa tlhahisoleseling mabapi le mesebetsi ho tsoa ho mohlophisi oa rona. Ho sebelisa ts'ebetso filter() ho tloha sephutheloana dplyr Re tlosa lethathamong la mesebetsi e ileng ea phethoa ka katleho 'me e na le boemo ba ho qetela ba sephetho sa 0, le tse e-s'o ka li qalisoa 'me li na le boemo ba 267011, mesebetsi ea bokooa, le mesebetsi e ntseng e sebetsa hona joale.

# запрашиваем список задач
task <- task <- taskscheduler_ls() %>%
        filter(! `Last Result`  %in% c("0", "267011") & 
               `Scheduled Task State` == "Enabled" & 
               Status != "Running") %>%
        select(TaskName) %>%
        unique() %>%
        unlist() %>%
        paste0(., collapse = "n")

Ka ntho task Hona joale re na le lethathamo la mesebetsi e hlōlehileng, re hloka ho romela lenane lena ho Telegram.

Haeba re sheba taelo e 'ngoe le e' ngoe ka botlalo, joale:

  • filter() - sefa lenane la mesebetsi ho latela maemo a hlalositsoeng ka holimo
  • select() - e siea tšimo e le 'ngoe feela tafoleng e nang le mabitso a mesebetsi
  • unique() - e tlosa mabitso a mabeli
  • unlist() — e fetolela kholomo ea tafole e khethiloeng ho vector
  • paste0() - o kopanya mabitso a mesebetsi moleng o le mong, mme o beha phepelo ea line e le karohano, i.e. n.

Sohle se re setseng ke ho romella sephetho sena ka thelekramo.

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

Kahoo, hajoale khoutu ea bot e shebahala tjena:

Khoutu ea bot ea tlhahlobo ea mosebetsi

# Подключение пакета
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"
  )

}

Ha u sebelisa mohlala o ka holimo, kenya letšoao la bot le ID ea hau ea moqoqo sebakeng sa khoutu.

O ka eketsa maemo a ho sefa mesebetsi, mohlala, ho sheba feela mesebetsi eo o e entseng, ntle le ea sistimi.

U ka boela ua beha litlhophiso tse fapaneng faeleng e fapaneng ea tlhophiso, 'me u boloke id ea moqoqo le tokeneng ho eona. U ka bala config, mohlala, ho sebelisa sephutheloana configr.

Mohlala ke config

[telegram_bot]
;настройки телеграм бота и чата, в который будут приходить уведомления
chat_id=12345678
bot_token=123456789:abcdefghijklmnopqrstuvwxyz"

Mohlala oa ho bala mefuta e fapaneng ho tsoa ho config ho 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

Ho theha kemiso ea ho tsamaisa lisebelisoa tsa mosebetsi

Mokhoa oa ho theha ho thakholoa ha lingoloa ka kemiso e hlalositsoe ka botlalo ho sena sehlooho. Mona ke tla hlalosa feela mehato e lokelang ho lateloa bakeng sa sena. Haeba leha e le efe ea mehato e sa hlaka ho uena, joale sheba sehlooho seo ke faneng ka sehokelo ho sona.

Ha re nke hore re bolokile khoutu ea rona ea bot faeleng check_bot.R. Ho hlophisa faele ena hore e sebetse khafetsa, latela mehato ena:

  1. Ngola tsela e eang foldareng eo R e kentsoeng ho eona Path system variable; ho Windows, tsela e tla ba ntho e kang ena: C:Program FilesRR-4.0.2bin.
  2. Theha faele ea bat e sebetsang ka mola o le mong feela R CMD BATCH C:rscriptscheck_botcheck_bot.R. Tlosa sebaka C:rscriptscheck_botcheck_bot.R ho tsela e felletseng ea faele ea hau ea R.
  3. E latelang, sebelisa Windows Task Scheduler ho theha kemiso ea ho qala, mohlala, halofo ea hora e 'ngoe le e 'ngoe.

fihlela qeto e

Sehloohong sena, re fumane mokhoa oa ho theha bot le ho e sebelisa ho romella litemoso tse fapaneng ka thelekramo.

Ke hlalositse mosebetsi oa ho beha leihlo Windows Task Scheduler, empa u ka sebelisa boitsebiso bo hlahang sehloohong sena ho romela litsebiso leha e le life, ho tloha ho boemo ba leholimo ho ea ho li-quotes tsa stock exchange, hobane R e u lumella ho hokahanya le palo e kholo ea mehloli ea data.

Sehloohong se latelang, re tla fumana mokhoa oa ho eketsa litaelo le keyboard ho bot e le hore e se ke ea romela litsebiso feela, empa hape e etsa liketso tse rarahaneng.

Source: www.habr.com

Eketsa ka tlhaloso