Ide bot telegram na R (akụkụ 1): Mepụta bot na iji ya ziga ozi na telegram

Ndị na-ege ntị Telegram na-eto eto kwa ụbọchị, nke a na-eme ka ọ dị mma nke onye ozi ahụ, ọnụnọ nke ọwa, nkata, na n'ezie ike ịmepụta bots.

Enwere ike iji bots maka ebumnuche dị iche iche, site na ịmekọrịta ozi na ndị ahịa gị ruo na ijikwa ọrụ nke gị.

N'ikpeazụ, ị nwere ike iji telegram rụọ ọrụ ọ bụla site na bot: zipu ma ọ bụ rịọ data, rụọ ọrụ na ihe nkesa, na-anakọta ozi n'ime nchekwa data, zipu ozi ịntanetị, na ihe ndị ọzọ.

M na-eme atụmatụ ide usoro isiokwu banyere otu esi arụ ọrụ na telegram bot API, ma dee bots iji kwado mkpa gị.

Ide bot telegram na R (akụkụ 1): Mepụta bot na iji ya ziga ozi na telegram

N'isiokwu mbụ a, anyị ga-achọpụta otu esi emepụta bot telegram ma jiri ya zipụ ọkwa na telegram.

N'ihi ya, anyị ga-enwe bot nke ga-elele ọkwa nke mmezu ikpeazụ nke ọrụ niile dị na Windows Task Scheduler, wee ziga gị ọkwa ma ọ bụrụ na nke ọ bụla n'ime ha dara.

Mana ebumnuche nke usoro isiokwu a abụghị ịkụziri gị otu esi ede bot maka otu ọrụ dị warara, mana n'ozuzu iwebata gị na syntax nke ngwugwu ahụ. telegram.bot, na koodu atụ nke ị nwere ike iji dee bots iji dozie nsogbu nke gị.

Ihe

Ọ bụrụ na ị nwere mmasị na nyocha data, ị nwere ike ịmasị m telegram и youtube ọwa. A na-arara ọtụtụ ọdịnaya maka asụsụ R.

  1. Ịmepụta bot telegram
  2. Ịwụnye ngwugwu maka iji telegram bot arụ ọrụ na R
  3. Na-eziga ozi site na R na Telegram
  4. Ịtọlite ​​​​usoro maka ịme nyocha ọrụ
  5. nkwubi

Ịmepụta bot telegram

Nke mbụ, anyị kwesịrị ịmepụta bot. A na-eme nke a site na iji bot pụrụ iche Onye Uka, gaa na njikọ ma dee bot /start.

Mgbe nke ahụ gasịrị, ị ga-enweta ozi nwere ndepụta iwu:

Ozi sitere na 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

Iji mepụta bot ọhụrụ, zipu iwu /newbot.

BotFather ga-arịọ gị ka itinye aha bot na nbanye.

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

Ị nwere ike itinye aha ọ bụla, mana nbanye ga-ejirịrị kwụsị bot.

Ọ bụrụ na ịmee ihe niile nke ọma, ị ga-enweta ozi a:

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

Ọzọ ị ga-achọ akara ngosi API enwetara, n'ihe atụ m ọ bụ 123456789:abcdefghijklmnopqrstuvwxyz.

Na nzọụkwụ a, arụ ọrụ nkwadebe maka ịmepụta bot agwụla.

Ịwụnye ngwugwu maka iji telegram bot arụ ọrụ na R

Echere m na ị nwetalarị asụsụ R na gburugburu mmepe Rstudio. Ọ bụrụ na nke a abụghị ikpe, mgbe ahụ ị nwere ike ile anya na nke a video nkuzi na otu esi etinye ha.

Iji rụọ ọrụ na Telegram Bot API anyị ga-eji ngwugwu R telegram.bot.

Ịwụnye ngwugwu na R na-eji ọrụ ahụ install.packages(), yabụ iji wụnye ngwugwu anyị chọrọ, jiri iwu ahụ install.packages("telegram.bot").

Ị nwere ike ịmụtakwu maka ịwụnye ngwugwu dị iche iche site na ihe onyonyo a.

Mgbe ị wụnyechara ngwugwu ahụ, ịkwesịrị ijikọ ya:

library(telegram.bot)

Na-eziga ozi site na R na Telegram

Enwere ike ịchọta bot ị mepụtara na Telegram site na iji nbanye akọwapụtara n'oge okike, n'ọnọdụ m ọ bụ @my_test_bot.

Ziga bot ozi ọ bụla, dị ka "Hey bot." N'oge a, anyị chọrọ nke a iji nweta id nke nkata gị na bot.

Ugbu a, anyị na-ede koodu na R.

library(telegram.bot)

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

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

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

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

Na mbụ, anyị na-emepụta ihe atụ nke bot anyị na ọrụ ahụ Bot(), a ga-agaferịrị akara ngosi enwetara na ya dị ka arụmụka.

A naghị ele ya anya dị ka omume kacha mma iji chekwaa akara na koodu, yabụ ị nwere ike chekwaa ya na mgbanwe gburugburu ebe obibi wee gụọ ya na ya. Site na ndabara na ngwugwu telegram.bot E mejuputala nkwado maka mgbanwe gburugburu ebe obibi nke aha ndị a: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА... Kama ИМЯ_ВАШЕГО_БОТА Dochie aha ị kọwapụtara mgbe ị na-eke, n'ọnọdụ m ọ ga-abụ mgbanwe R_TELEGRAM_BOT_My Test Bot.

Enwere ụzọ dị iche iche iji mepụta mgbanwe gburugburu ebe obibi; M ga-agwa gị maka nke kachasị nke ụwa na cross-platform. Mepụta na ndekọ ụlọ gị (ị nwere ike ịhụ ya site na iji iwu ahụ path.expand("~")) ederede faịlụ na aha .Renviron. Ị nwekwara ike ime nke a site na iji iwu file.edit(path.expand(file.path("~", ".Renviron"))).

Tinyekwa ahịrị ndị a na ya.

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

Na-esote, ịnwere ike iji akara echekwara na mgbanwe gburugburu ebe obibi site na iji ọrụ ahụ bot_token(), i.e. dị ka nke a:

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

.Zọ getUpdates()na-enye anyị ohere ịnweta mmelite bot, i.e. ozi e zigara ya. Usoro from_chat_id(), na-enye gị ohere ịnweta ID nke nkata sitere na ya zitere ozi ahụ. Anyị chọrọ NJ a iji zipu ozi site na bot.

Na mgbakwunye na id nkata site na ihe enwetara site na usoro getUpdates() ị na-enwetakwa ozi ndị ọzọ bara uru. Dịka ọmụmaatụ, ozi gbasara onye ọrụ zitere ozi ahụ.

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"

Yabụ, na ọkwa a, anyị enweela ihe niile anyị chọrọ iji zipu ozi site na bot na Telegram. Ka anyị jiri usoro ahụ sendMessage(), nke ị ga-ebufe ID nkata, ozi ederede na ụdị akara ederede ozi. Ụdị nrịbama ahụ nwere ike ịbụ Markdown ma ọ bụ HTML ma tinye ya site na arụmụka parse_mode.

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

Isi usoro nhazi akara:

  • A na-eji *: mee ka mkpụrụedemede mara mma pụta ìhè.
    • ihe atụ: *жирный шритф*
    • N'ihi: mkpụrụedemede obi ike
  • A na-egosipụta mkpụrụedemede site na nrịbama:
    • ihe atụ: _курсив_
    • N'ihi: italics
  • A na-akọwapụta mkpụrụedemede monospace, nke a na-ejikarị eme ka koodu mmemme pụta ìhè site na iji apostrophes - `:
    • ọmụmaatụ: 'monospace font'
    • N'ihi: моноширинный шрифт

Ihe ndabere nke nhazi akara HTML:
Na HTML, ị na-ekechi akụkụ nke ederede kwesịrị ka ọ pụta ìhè na mkpado, ọmụmaatụ <тег>текст</тег>.

  • <tag> - mkpado oghere
  • - mkpado mmechi

HTML akara mkpado

  • <b> - font siri ike
    • ihe atụ: <b>жирный шрифт</b>
    • mmetụta mkpụrụedemede obi ike
  • <i> - italics
    • ihe atụ: <i>курсив</i>
    • N'ihi: italics
  • — моноширинный шрифт
    • atụ: моноширинный шрифт
    • N'ihi: моноширинный шрифт

Na mgbakwunye na ederede, ị nwere ike izipu ọdịnaya ndị ọzọ site na iji ụzọ pụrụ iche:

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

Ndị ahụ. dịka ọmụmaatụ iji usoro sendPhoto() ị nwere ike izipu eserese echekwara dị ka onyonyo nke ị mepụtara site na iji ngwugwu ggplot2.

Na-elele nhazi ihe omume Windows na izipu ọkwa gbasara ọrụ akwụsịla na-ezighi ezi

Iji na-arụ ọrụ na Windows Task Scheduler, ịkwesịrị ịwụnye ngwugwu ahụ taskscheduleR, na maka ịdị mma nke ịrụ ọrụ na data, wụnye ngwugwu ahụ dplyr.

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

Na-esote, na-eji ọrụ ahụ taskscheduler_ls() anyị na-arịọ ozi gbasara ọrụ n'aka onye nhazi anyị. Iji ọrụ ahụ filter() site na ngwugwu dplyr Anyị na-ewepụ na ndepụta nke ọrụ ndị emechara nke ọma ma nwee ọkwa ikpeazụ nke 0, na ndị a na-emepụtabeghị ma nwee ọkwa 267011, ọrụ nkwarụ, na ọrụ ndị na-arụ ọrụ ugbu a.

# запрашиваем список задач
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'ime ihe task Ugbu a anyị nwere ndepụta nke ọrụ dara ada, anyị kwesịrị iziga ndepụta a na Telegram.

Ọ bụrụ na anyị leba anya n'iwu ọ bụla n'ụzọ zuru ezu, mgbe ahụ:

  • filter() - na-enyocha ndepụta ọrụ dịka ọnọdụ akọwara n'elu si dị
  • select() - doo naanị otu ubi na tebụl na aha nke ọrụ
  • unique() - na-ewepụ aha oyiri
  • unlist() - tọghata kọlụm okpokoro ahọpụtara ka ọ bụrụ vector
  • paste0() - jikọọ aha ọrụ n'ime otu ahịrị, ma tinye ndepụta ahịrị dị ka onye nkewa, ya bụ. n.

Naanị ihe fọdụrụ anyị bụ izipu nsonaazụ a site na telegram.

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

Yabụ, ugbu a koodu bot dị ka nke a:

Koodu bot nyocha ọrụ

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

}

Mgbe ị na-eji ihe atụ dị n'elu, dochie akara bot gị na NJ nkata gị n'ime koodu.

Ịnwere ike ịgbakwunye ọnọdụ maka nzacha ọrụ, dịka ọmụmaatụ, ịlele naanị ọrụ ndị ahụ ị mepụtara, ewezuga ndị sistemụ.

Ịnwekwara ike itinye ntọala dị iche iche n'ime faịlụ nhazi dị iche, ma chekwaa akara nkata na akara n'ime ya. Ị nwere ike ịgụ nhazi ahụ, dịka ọmụmaatụ, iji ngwugwu configr.

Ọmụmaatụ in config

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

Ọmụmaatụ nke ịgụ mgbanwe site na nhazi dị na 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

Ịtọlite ​​​​usoro maka ịme nyocha ọrụ

A na-akọwa usoro nke ịmepụta mmalite nke edemede na nhazi oge n'ụzọ zuru ezu na nke a ederede. N'ebe a, m ga-akọwa naanị usoro kwesịrị ịgbaso maka nke a. Ọ bụrụ na nke ọ bụla n'ime usoro ndị ahụ edoghị gị anya, wee rụtụ aka na akụkọ nke m nyere njikọ.

Ka anyị were na anyị chekwara koodu bot anyị na faịlụ check_bot.R. Iji hazie faịlụ a ka ọ na-agba ọsọ mgbe niile, soro usoro ndị a:

  1. Dee ụzọ gaa na folda nke etinyere R na mgbanwe usoro ụzọ; na Windows, ụzọ ahụ ga-abụ ihe dị ka nke a: C:Program FilesRR-4.0.2bin.
  2. Mepụta faịlụ bat enwere ike iji naanị otu ahịrị R CMD BATCH C:rscriptscheck_botcheck_bot.R. Dochie C:rscriptscheck_botcheck_bot.R gaa n'ụzọ zuru oke na faịlụ R gị.
  3. Na-esote, jiri Windows Task Scheduler iji hazie usoro mmalite, dịka ọmụmaatụ, ọkara elekere ọ bụla.

nkwubi

N'isiokwu a, anyị chọpụtara otu esi emepụta bot ma jiri ya zipu ọkwa dị iche iche na telegram.

Akọwara m ọrụ nke nlekota oru nhazi Windows Task, ma ị nwere ike iji ihe dị n'isiokwu a iji zipu ọkwa ọ bụla, site na amụma ihu igwe ruo na ntinye ngwaahịa na mgbanwe ngwaahịa, n'ihi na R na-enye gị ohere ijikọ na ọnụ ọgụgụ buru ibu nke isi mmalite data.

N'isiokwu na-esonụ, anyị ga-achọpụta otú e si tinye iwu na a keyboard na bot ka ọ bụghị nanị na-eziga ngosi, kamakwa ime ihe mgbagwoju anya omume.

isi: www.habr.com

Tinye a comment