Matou te tusia se pusa telegram i le gagana R (vaega 1): Fausia se bot ma lafo feʻau i le telegram e faʻaaoga ai

O le Telegram audience o loʻo faʻatupulaia faʻateleina i aso uma, e faʻafaigofieina e le faʻaogaina o le avefeau, o le i ai o auala, talatalanoaga, ma o le mea moni o le mafai ona fatuina bots.

E mafai ona fa'aogaina bots mo fa'amoemoega 'ese'ese, mai le otometi feso'ota'iga ma au tagata fa'atau i le puleaina o au lava galuega.

O le mea moni, e mafai ona e faʻaogaina le telegram e faʻatino ai soʻo se gaioiga e ala i se bot: auina atu pe talosagaina faʻamatalaga, faʻatautaia galuega i luga o le 'auʻaunaga, aoina faʻamatalaga i totonu o faʻamaumauga, lafo imeli, ma isi.

Ou te fuafua e tusi se faasologa o tala i le auala e galue ai telegram bot API, ma tusi bots e fetaui ma ou manaʻoga.

Matou te tusia se pusa telegram i le gagana R (vaega 1): Fausia se bot ma lafo feʻau i le telegram e faʻaaoga ai

I totonu o lenei tusiga muamua o le a tatou mafaufau pe faʻapefea ona fatuina se telegram bot ma faʻaaogaina e lafo ai faʻamatalaga i le telegram.

O le iʻuga, o le a matou maua se bot e siaki ai le tulaga o le faʻataunuʻuina mulimuli o galuega uma i le Windows Task Scheduler, ma auina atu ia oe faʻamatalaga pe a le manuia se tasi.

Ae o le faʻamoemoega o lenei faʻasologa o tala e le o le aʻoaʻoina oe pe faʻapefea ona tusi se bot mo se galuega faʻapitoa, vaapiapi, ae ia faʻafeiloaʻi masani oe i le syntax o le afifi. telegram.bot, ma faʻataʻitaʻiga faʻailoga e mafai ona e tusia ai bots e foia ai ou lava faʻafitauli.

Mataupu

Afai e te fiafia i suʻesuʻega faʻamatalaga, atonu e te fiafia i laʻu telefoni и YouTube alavai. O le tele o mea o lo'o tu'uina atu i le gagana R.

  1. Fausia se telegram bot
  2. Faʻapipiʻiina o se afifi mo le galue ma se telegram bot i R
  3. Auina atu fe'au mai R i Telegram
  4. Fa'atulaga se fa'atulagaga mo su'ega galuega
  5. iʻuga

Fausia se telegram bot

Muamua, e tatau ona tatou faia se bot. E faia lenei mea i le faʻaaogaina o se bot faapitoa BotFoa, alu i le fesoʻotaʻiga ma tusi i le bot /start.

A maeʻa ona e mauaina se feʻau ma se lisi o faʻatonuga:

Feau mai 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

Ina ia faia se bot fou, lafo le poloaiga /newbot.

BotFather o le a fai atu ia te oe e ulufale i le igoa ole bot ma saini.

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

E mafai ona e ulufale i so'o se igoa, ae tatau ona fa'ai'u le saini bot.

Afai na e faia mea uma sa'o, o le ae mauaina le savali lenei:

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

O le isi mea e te manaʻomia le mauaina o le API faʻailoga, i laʻu faʻataʻitaʻiga 123456789:abcdefghijklmnopqrstuvwxyz.

I lenei laasaga, ua maeʻa le galuega sauniuni mo le fatuina o le bot.

Faʻapipiʻiina o se afifi mo le galue ma se telegram bot i R

Ou te manatu ua uma ona e maua le gagana R ma le siosiomaga atinae RStudio ua faʻapipiʻiina. Afai e le o le tulaga lea, ona mafai lea ona e vaʻai i lenei mea vitio lesona i le auala e faʻapipiʻi ai.

Ina ia galulue ma le Telegram Bot API o le a matou faʻaogaina le R package telegram.bot.

O le faʻapipiʻiina o afifi i le R e faʻaaogaina le galuega install.packages(), ina ia faʻapipiʻi le afifi matou te manaʻomia, faʻaaoga le poloaiga install.packages("telegram.bot").

E mafai ona e aʻoaʻo atili e uiga i le faʻapipiʻiina o afifi eseese mai lenei vitio.

A maeʻa ona faʻapipiʻi le afifi, e tatau ona e faʻafesoʻotaʻi:

library(telegram.bot)

Auina atu fe'au mai R i Telegram

O le bot na e faia e mafai ona maua i Telegram e faʻaaoga ai le saini na faʻamaonia i le taimi o le foafoaga, i loʻu tulaga o le @my_test_bot.

Auina atu i le pusa soʻo se feʻau, pei o le "Hey bot." I le taimi nei, matou te manaʻomia lenei mea ina ia maua ai le id o lau talatalanoaga ma le bot.

O lea matou te tusia le code lea i le R.

library(telegram.bot)

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

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

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

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

Muamua, matou te faia se faʻataʻitaʻiga o la matou bot ma le galuega Bot(), o le faailoga na maua muamua e tatau ona pasi i totonu o se finauga.

E le o manatu e sili ona lelei le teuina o le faailoga i le code, o lea e mafai ai ona e teuina i totonu o se siosiomaga fesuiaiga ma faitau mai ai. E ala i le faaletonu ile afifi telegram.bot Lagolago mo suiga o le siosiomaga o igoa nei ua faʻatinoina: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА. Nai lo lena ИМЯ_ВАШЕГО_БОТА sui le igoa na e faʻamaonia pe a fatuina, i loʻu tulaga o le a suia R_TELEGRAM_BOT_My Test Bot.

E tele auala e fatuina ai se fesuiaiga o le siʻosiʻomaga; O le a ou taʻu atu ia te oe e uiga i le sili ona lautele ma le faʻasalalauga. Fausia i lau lisi o fale (e mafai ona e mauaina e faʻaaoga ai le poloaiga path.expand("~")) faila faila ma le igoa .Renviron. E mafai foi ona e faia lenei mea e faʻaaoga ai le poloaiga file.edit(path.expand(file.path("~", ".Renviron"))).

Ma faaopoopo i ai le laina lea.

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

O le isi, e mafai ona e faʻaogaina le faʻailoga faʻasaoina i le fesuiaiga o le siosiomaga e faʻaaoga ai le galuega bot_token(), i.e. faapei o lea:

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

Metotia getUpdates()fa'atagaina tatou e maua fa'afouga bot, i.e. savali na auina atu ia te ia. Metotia from_chat_id(), e mafai ai ona e mauaina le ID o le talatalanoaga na auina mai ai le feʻau. Matou te manaʻomia lenei ID e lafo ai feʻau mai le bot.

I le faaopoopo atu i le chat id mai le mea na maua e le metotia getUpdates() e te maua foi nisi faamatalaga aoga. Mo se faʻataʻitaʻiga, faʻamatalaga e uiga i le tagata faʻaoga na lafoina le feʻau.

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"

O lea la, i lenei laʻasaga ua uma ona matou maua mea uma matou te manaʻomia e lafo ai se feʻau mai se bot i Telegram. Sei o tatou faaaogaina le auala sendMessage(), lea e te manaʻomia e pasi ai le ID talatalanoaga, feʻau tusitusia, ma le ituaiga faʻailoga tusi. Ole ituaiga faʻailoga e mafai ona avea ma Markdown poʻo HTML ma faʻatulagaina e le finauga parse_mode.

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

Fa'avae fa'avasega fa'ailoga:

  • O lo'o fa'ailoga mata'itusi mata'utia i le *:
    • faataitaiga: *жирный шритф*
    • i'uga: mata'itusi mata'utia
  • O lo'o fa'ailoa mai i lalo fa'ailoga:
    • faataitaiga: _курсив_
    • i'uga: faatusilima
  • O le monospace font, lea e masani ona faʻaaogaina e faʻamaonia ai le faʻailoga o le polokalame, o loʻo faʻamaonia i le faʻaogaina o apostrophe - `:
    • faataitaiga: `monospace font`
    • i'uga: моноширинный шрифт

Fa'avae o le fa'avasegaina o fa'ailoga HTML:
I le HTML, e te afifiina le vaega o le tusitusiga e manaʻomia ona faʻamaonia i pine, faʻataʻitaʻiga <тег>текст</тег>.

  • <tag> - fa'ailoga amata
  • - fa'ailoga tapuni

HTML fa'ailoga fa'ailoga

  • <b> - mata'itusi mata'utia
    • faataitaiga: <b>жирный шрифт</b>
    • aʻafiaga mata'itusi mata'utia
  • <i> - faatusilima
    • faataitaiga: <i>курсив</i>
    • i'uga: faatusilima
  • — моноширинный шрифт
    • fa'ata'ita'iga: моноширинный шрифт
    • i'uga: моноширинный шрифт

I le faaopoopo atu i tusitusiga, e mafai ona e lafoina isi mea e faʻaaoga ai metotia faʻapitoa:

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

O na. mo se faʻataʻitaʻiga faʻaaogaina o le metotia sendPhoto() e mafai ona e lafoina se kalafi ua teuina o se ata na e faia e faʻaaoga ai le afifi ggplot2.

Siaki le Windows Task Scheduler ma le auina atu o faʻamatalaga e uiga i galuega ua faʻamutaina faʻafuaseʻi

Ina ia galue ma Windows Task Scheduler e tatau ona e faʻapipiʻi le afifi taskscheduleR, ma mo le faigofie o le galue ma faʻamaumauga, faʻapipiʻi le afifi dplyr.

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

Le isi, faʻaaogaina le galuega taskscheduler_ls() matou te talosagaina faʻamatalaga e uiga i galuega mai le matou faʻatulagaina. Fa'aaogaina o le galuega filter() mai le afifi dplyr Matou te aveese mai le lisi o galuega i latou na faʻamaeʻaina ma maua le tulaga mulimuli o le 0, ma i latou e leʻi faʻalauiloaina ma iai le tulaga o le 267011, galuega faʻaletonu, ma galuega o loʻo faʻagasolo nei.

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

I le mea faitino task Ua i ai nei a matou lisi o galuega na le manuia, matou te manaʻomia le lafoina o lenei lisi i Telegram.

Afai tatou te vaʻavaʻai atili i faʻatonuga taʻitasi, ona:

  • filter() - faʻamama le lisi o galuega e tusa ai ma tulaga o loʻo faʻamatalaina i luga
  • select() - tu'u na'o le tasi le fanua i le laulau ma le igoa o galuega
  • unique() - aveese igoa fa'alua
  • unlist() — liliu le koluma laulau ua filifilia i se vector
  • paste0() - faʻafesoʻotaʻi igoa o galuega i le laina e tasi, ma tuʻu se laina fafaga e avea o se vavae, i.e. n.

Pau lava le mea e totoe mo i matou o le auina atu lea o lenei faʻaiʻuga e ala i le telegram.

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

O lea la, i le taimi nei o le bot code e pei o lenei:

Fa'atonuga ole 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"
  )

}

A faʻaaoga le faʻataʻitaʻiga o loʻo i luga, sui lau faʻailoga bot ma lau ID talatalanoaga i totonu o le code.

E mafai ona e fa'aopoopo tulaga mo le fa'amamaina o galuega, mo se fa'ata'ita'iga, siaki na'o galuega na e faia, e le aofia ai faiga.

E mafai fo'i ona e tu'uina ni fa'atulagaga eseese i totonu o se faila fa'aopoopo, ma teu ai le chat id ma fa'ailoga i totonu. E mafai ona e faitau i le config, mo se faʻataʻitaʻiga, faʻaaoga le afifi configr.

Faataitaiga lenei config

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

O se faʻataʻitaʻiga o le faitauina o fesuiaiga mai se faʻaoga i le 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

Fa'atulaga se fa'atulagaga mo su'ega galuega

O le faʻagasologa o le faʻatulagaina o le faʻalauiloaina o tusitusiga i luga o se faʻasologa o loʻo faʻamatalaina atili auiliili i lenei tusiga. O iinei o le a ou faʻamatalaina ai laasaga e manaʻomia ona mulimulitaʻia mo lenei. Afai o nisi o laasaga e le o manino ia te oe, ona vaʻai lea i le tusiga lea na ou tuʻuina atu i ai se sootaga.

Se'i tatou fa'apea na tatou fa'asaoina le code bot i se faila check_bot.R. Ina ia fa'atulaga lenei faila e fa'agasolo pea, mulimuli i laasaga nei:

  1. Tusi le ala i le faila o loʻo faʻapipiʻiina ai le R i le Path system variable; i Windows, o le ala o le a pei o lenei: C:Program FilesRR-4.0.2bin.
  2. Fausia se faila pe'a fa'atino ile na'o le tasi le laina R CMD BATCH C:rscriptscheck_botcheck_bot.R. Sui C:rscriptscheck_botcheck_bot.R i le ala atoa i lau faila R.
  3. Sosoo ai, fa'aaoga le Windows Task Scheduler e fa'atulaga ai se fa'asologa fa'alauiloa, mo se fa'ata'ita'iga, i afa itula uma.

iʻuga

I totonu o lenei tusiga, na matou mafaufauina pe faʻapefea ona fatuina se bot ma faʻaaogaina e lafo ai faʻamatalaga eseese i le telegram.

Na ou faʻamatalaina le galuega o le mataʻituina o le Windows Task Scheduler, ae e mafai ona e faʻaogaina mea o loʻo i totonu o lenei tusiga e lafo ai soʻo se faʻamatalaga, mai le tau o le tau i faʻatauga faʻatau i luga o fefaʻatauaiga, aua R faʻatagaina oe e faʻafesoʻotaʻi i se numera tele o punaoa faʻamaumauga.

I le isi tala, o le a tatou mafaufau pe faʻafefea ona faʻaopoopo poloaiga ma se piano i le bot ina ia le gata ina auina atu faʻamatalaga, ae faʻapea foʻi ona faia ni gaioiga sili atu ona faigata.

puna: www.habr.com

Faaopoopo i ai se faamatalaga