Bot teileagram a scríobh i R (cuid 1): Bot a chruthú agus é a úsáid chun teachtaireachtaí a sheoladh i teileagram

Tá lucht féachana Telegram ag fás go heaspónantúil gach lá, éascaítear é seo ag áisiúlacht an teachtaire, láithreacht cainéil, comhráite, agus ar ndóigh an cumas róbónna a chruthú.

Is féidir róbónna a úsáid chun críocha go hiomlán difriúil, ó chumarsáid a uathoibriú le do chustaiméirí go dtí do thascanna féin a bhainistiú.

Go bunúsach, is féidir leat teileagram a úsáid chun aon oibríochtaí a dhéanamh trí bot: sonraí a sheoladh nó a iarraidh, tascanna a rith ar an bhfreastalaí, faisnéis a bhailiú isteach i mbunachar sonraí, ríomhphoist a sheoladh, agus mar sin de.

Tá sé beartaithe agam sraith alt a scríobh ar conas oibriú leo Telegram bot API, agus scríobh róbónna a oireann do do chuid riachtanas.

Bot teileagram a scríobh i R (cuid 1): Bot a chruthú agus é a úsáid chun teachtaireachtaí a sheoladh i teileagram

Sa chéad Airteagal seo déanfaimid amach conas bot teileagraim a chruthú agus é a úsáid chun fógraí a sheoladh i teileagram.

Mar thoradh air sin, beidh bot againn a dhéanfaidh seiceáil ar stádas an fhorghníomhaithe deiridh de na tascanna go léir i Sceidealóir Tasc Windows, agus a sheolfaidh fógraí chugat má theip ar aon cheann acu.

Ach ní hé cuspóir na sraithe alt seo ná tú a mhúineadh conas bot a scríobh le haghaidh tasc sonrach caol, ach tú a chur in aithne go ginearálta ar chomhréir an phacáiste. telegram.bot, agus samplaí cód lenar féidir leat róbónna a scríobh chun do chuid fadhbanna féin a réiteach.

Ábhar

Má tá suim agat in anailís sonraí, b'fhéidir go mbeadh suim agat i mo chuid teileagram и youtube cainéil. Tá an chuid is mó den ábhar tiomnaithe don teanga R.

  1. Bot teileagram a chruthú
  2. Suiteáil pacáiste chun oibriú le bot teileagraim i R
  3. Teachtaireachtaí a sheoladh ó R go Telegram
  4. Sceideal a shocrú chun tascscanna a rith
  5. Conclúid

Bot teileagram a chruthú

Gcéad dul síos, ní mór dúinn a chruthú bot. Déantar é seo trí úsáid a bhaint as bot speisialta BotAthair, Téigh nasc agus scríobh chuig an bot /start.

Ina dhiaidh sin gheobhaidh tú teachtaireacht le liosta orduithe:

Teachtaireacht ó 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

Chun bot nua a chruthú, seol an t-ordú /newbot.

Iarrfaidh BotFather ort ainm agus logáil isteach an bot a chur isteach.

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

Is féidir leat aon ainm a chur isteach, ach caithfidh an logáil isteach críochnú le bot.

Má rinne tú gach rud i gceart, gheobhaidh tú an teachtaireacht seo a leanas:

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

Ansin beidh an comhartha API faighte uait, i mo shampla é 123456789:abcdefghijklmnopqrstuvwxyz.

Ag an gcéim seo, críochnaíodh an obair ullmhúcháin chun an bot a chruthú.

Suiteáil pacáiste chun oibriú le bot teileagraim i R

Glacaim leis go bhfuil an teanga R agus an timpeallacht forbartha RStudio suiteáilte agat cheana féin. Mura bhfuil sé seo amhlaidh, ansin is féidir leat breathnú ar seo físeán teagaisc ar conas iad a shuiteáil.

Chun oibriú leis an Telegram Bot API bainfimid úsáid as an bpacáiste R teileagram.bot.

Déantar pacáistí a shuiteáil in R trí úsáid a bhaint as an bhfeidhm install.packages(), mar sin chun an pacáiste a theastaíonn uainn a shuiteáil, bain úsáid as an ordú install.packages("telegram.bot").

Is féidir leat níos mó a fhoghlaim faoi shuiteáil pacáistí éagsúla ó físeán seo.

Tar éis duit an pacáiste a shuiteáil, ní mór duit é a nascadh:

library(telegram.bot)

Teachtaireachtaí a sheoladh ó R go Telegram

Is féidir an bot a chruthaigh tú a fháil i Telegram ag baint úsáide as an logáil isteach a shonraítear le linn an chruthú, i mo chás féin é @my_test_bot.

Seol teachtaireacht ar bith don bot, mar shampla "Hey bot." I láthair na huaire, tá sé seo ag teastáil uainn chun aitheantas do chomhrá a fháil leis an bot.

Anois scríobhaimid an cód seo a leanas i R.

library(telegram.bot)

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

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

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

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

Ar dtús, cruthaímid sampla dár bot leis an bhfeidhm Bot(), ní mór an comhartha a fuarthas roimhe seo a chur ar aghaidh mar argóint.

Ní mheastar gur dea-chleachtas é an comhartha i gcód a stóráil, ionas gur féidir leat é a stóráil in athróg timpeallachta agus é a léamh uaidh. De réir réamhshocraithe sa phacáiste telegram.bot Tá tacaíocht d’athróga comhshaoil ​​de na hainmneacha seo a leanas curtha i bhfeidhm: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА. In ionad ИМЯ_ВАШЕГО_БОТА cuir an t-ainm a shonraigh tú agus tú ag cruthú in ionad, i mo chás is athróg a bheidh ann R_TELEGRAM_BOT_My Test Bot.

Tá go leor bealaí ann chun athróg timpeallachta a chruthú; inseoidh mé duit faoin gceann is uilíoch agus tras-ardán. Cruthaigh i do eolaire baile (is féidir leat é a fháil tríd an ordú path.expand("~")) téacschomhad leis an ainm .Renviron. Is féidir leat é seo a dhéanamh freisin ag baint úsáide as an ordú file.edit(path.expand(file.path("~", ".Renviron"))).

Agus cuir an líne seo a leanas leis.

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

Ansin, is féidir leat an comhartha a shábháil san athróg timpeallachta a úsáid leis an bhfeidhm bot_token(), i.e. mar seo:

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

Modh getUpdates()ligeann dúinn nuashonruithe bot a fháil, i.e. teachtaireachtaí a seoladh chuige. Modh from_chat_id(), is féidir leat ID an chomhrá a fháil ónar seoladh an teachtaireacht. Teastaíonn an t-aitheantas seo uainn chun teachtaireachtaí a sheoladh ón bot.

Chomh maith leis an id comhrá ón réad a fhaightear tríd an modh getUpdates() faigheann tú eolas úsáideach eile freisin. Mar shampla, faisnéis faoin úsáideoir a sheol an teachtaireacht.

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"

Mar sin, ag an gcéim seo tá gach rud a theastaíonn uainn cheana féin chun teachtaireacht a sheoladh ó bot go Telegram. Bainimis úsáid as an modh sendMessage(), ina gcaithfidh tú an ID comhrá, an téacs teachtaireachta, agus an cineál marcála téacs teachtaireachta a chur ar aghaidh. Is féidir Markdown nó HTML a bheith sa chineál marcála agus tá sé socraithe ag an argóint parse_mode.

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

Bunúsacha formáidithe Markdown:

  • Aibhsítear cló trom le *:
    • mar shampla: *жирный шритф*
    • toradh: cló trom
  • Léirítear cló iodálach le béim ar:
    • mar shampla: _курсив_
    • toradh: iodálach
  • Sonraítear an cló monaspáis, a úsáidtear go hiondúil chun cód cláir a aibhsiú, trí úsáid a bhaint as réimhseacháin - `:
    • shampla: `cló monospace`
    • toradh: моноширинный шрифт

Bunúsacha marcáil HTML a fhormáidiú:
I HTML, fillteann tú an chuid den téacs a chaithfear a aibhsiú i gclibeanna, mar shampla <тег>текст</тег>.

  • <tag> - clib oscailt
  • - clib deiridh

Clibeanna marcála HTML

  • <b> - cló trom
    • mar shampla: <b>жирный шрифт</b>
    • mar thoradh ar cló trom
  • <i> - iodálach
    • mar shampla: <i>курсив</i>
    • toradh: iodálach
  • — моноширинный шрифт
    • shampla: моноширинный шрифт
    • toradh: моноширинный шрифт

Chomh maith le téacs, is féidir leat ábhar eile a sheoladh trí úsáid a bhaint as modhanna speisialta:

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

Iad siúd. mar shampla ag baint úsáide as an modh sendPhoto() is féidir leat graf a shábháil mar íomhá a chruthaigh tú ag baint úsáide as an bpacáiste a sheoladh ggplot2.

Ag seiceáil an Windows Task Scheduler agus ag seoladh fógraí faoi thascanna a tháinig deireadh go neamhghnách

Chun oibriú le Windows Task Scheduler ní mór duit an pacáiste a shuiteáil taskscheduleR, agus chun an áisiúlacht a bheith ag obair le sonraí, an pacáiste a shuiteáil dplyr.

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

Next, ag baint úsáide as an fheidhm taskscheduler_ls() iarraimid eolas faoi thascanna ónár sceidealóir. Ag baint úsáide as an fheidhm filter() as an bpacáiste dplyr Bainimid de liosta na dtascanna iad siúd a críochnaíodh go rathúil agus a bhfuil stádas toradh deiridh de 0 acu, agus iad siúd nár seoladh riamh agus a bhfuil stádas 267011 acu, tascanna faoi mhíchumas, agus tascanna atá ar siúl faoi láthair.

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

Sa réad task Tá liosta tascanna againn anois ar theip orthu, ní mór dúinn an liosta seo a sheoladh chuig Telegram.

Má fhéachaimid ar gach ordú go mion, ansin:

  • filter() — liosta na dtascanna a scagadh de réir na gcoinníollacha a gcuirtear síos orthu thuas
  • select() — ní fhágann ach réimse amháin sa tábla ar a bhfuil ainm na dtascanna
  • unique() - baintear ainmneacha dúblacha
  • unlist() — a thiontaíonn an colún tábla roghnaithe go veicteoir
  • paste0() — nascann sé ainmneacha tascanna i líne amháin, agus cuireann sé fotha líne mar dheighilteoir, i.e. n.

Níl fágtha againn ach an toradh seo a sheoladh trí theileagram.

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

Mar sin, i láthair na huaire tá cuma ar an gcód bot mar seo:

Cód bot athbhreithniú tasc

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

}

Agus an sampla thuas in úsáid agat, cuir do chomhartha bot agus d’aitheantas comhrá isteach sa chód.

Is féidir leat coinníollacha a chur leis maidir le tascanna scagtha, mar shampla, gan seiceáil ach na tascanna sin a chruthaigh tú, gan na cinn chórais a áireamh.

Is féidir leat freisin socruithe éagsúla a chur isteach i gcomhad cumraíochta ar leith, agus an t-aitheantas comhrá agus an comhartha a stóráil ann. Is féidir leat an config a léamh, mar shampla, ag baint úsáide as an bpacáiste configr.

Sampla ini config

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

Sampla d’athróga léitheoireachta ó chumraíocht 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

Sceideal a shocrú chun tascscanna a rith

Déantar cur síos níos mine anseo ar an bpróiseas a bhaineann le seoladh scripteanna ar sceideal a bhunú Airteagal. Anseo ní dhéanfaidh mé ach cur síos ar na céimeanna nach mór a leanúint chuige seo. Mura bhfuil aon cheann de na céimeanna soiléir duit, déan tagairt don alt ar chuir mé nasc ar fáil dó.

Glacaimid leis gur shábháileamar ár gcód bot i gcomhad check_bot.R. Chun an comhad seo a sceidealú le rith go rialta, lean na céimeanna seo:

  1. Scríobh an cosán chuig an bhfillteán ina bhfuil R suiteáilte in athróg an chórais Path; i Windows, beidh an cosán mar rud mar seo: C:Program FilesRR-4.0.2bin.
  2. Cruthaigh comhad ialtóg inrite le líne amháin R CMD BATCH C:rscriptscheck_botcheck_bot.R. Ionadaigh C:rscriptscheck_botcheck_bot.R go dtí an cosán iomlán chuig do chomhad R.
  3. Ansin, bain úsáid as Windows Task Scheduler chun sceideal seolta a shocrú, mar shampla, gach leath uair an chloig.

Conclúid

San Airteagal seo, rinneamar amach conas bot a chruthú agus é a úsáid chun fógraí éagsúla a sheoladh i teileagram.

Rinne mé cur síos ar an tasc a bhaineann le monatóireacht a dhéanamh ar an Sceidealóir Tasc Windows, ach is féidir leat an t-ábhar san Airteagal seo a úsáid chun aon fhógraí a sheoladh, ó réamhaisnéis na haimsire go Sleachta stoic ar an stocmhalartán, mar gheall ar Ligeann R duit ceangal le líon mór foinsí sonraí.

Sa chéad alt eile, déanfaimid amach conas orduithe agus méarchlár a chur leis an bot ionas nach féidir leis fógraí a sheoladh ní hamháin, ach freisin gníomhartha níos casta a dhéanamh.

Foinse: will.com

Add a comment