Rubuta bot na telegram a cikin R (Kashi na 1): Ƙirƙirar bot da amfani da shi don aika saƙonni a cikin telegram

Masu sauraron Telegram suna girma sosai a kowace rana, ana sauƙaƙe wannan ta hanyar saukakawa na manzo, kasancewar tashoshi, hira, da kuma ikon ƙirƙirar bots.

Ana iya amfani da bots don dalilai daban-daban, daga sarrafa sadarwa ta atomatik tare da abokan cinikin ku zuwa sarrafa ayyukan ku.

Mahimmanci, zaku iya amfani da telegram don yin kowane aiki ta hanyar bot: aikawa ko neman bayanai, gudanar da ayyuka akan uwar garken, tattara bayanai a cikin rumbun adana bayanai, aika imel, da sauransu.

Na shirya rubuta jerin labarai kan yadda ake aiki da su API ɗin telegram bot, kuma rubuta bots don dacewa da bukatun ku.

Rubuta bot na telegram a cikin R (Kashi na 1): Ƙirƙirar bot da amfani da shi don aika saƙonni a cikin telegram

A cikin wannan labarin na farko za mu gano yadda ake ƙirƙirar bot na telegram da amfani da shi don aika sanarwa a cikin telegram.

A sakamakon haka, za mu sami bot wanda zai bincika matsayin aiwatar da duk ayyuka na ƙarshe a cikin Jadawalin Ayyukan Windows, kuma ya aiko muku da sanarwa idan ɗayansu ya gaza.

Amma manufar wannan jerin labaran ba don koya muku yadda ake rubuta bot don takamaiman aiki, kunkuntar aiki ba, amma gabaɗaya don gabatar muku da ma'anar fakitin. telegram.bot, da kuma misalan lambobin da zaku iya rubuta bots da su don magance matsalolin ku.

Abubuwa

Idan kuna sha'awar nazarin bayanai, kuna iya sha'awar nawa telegram и youtube tashoshi. Yawancin abun ciki an sadaukar da shi ga yaren R.

  1. Ƙirƙirar bot na telegram
  2. Shigar da kunshin don aiki tare da bot na telegram a cikin R
  3. Aika saƙonni daga R zuwa Telegram
  4. Saita jadawali don gudanar da ayyukan sikanin
  5. ƙarshe

Ƙirƙirar bot na telegram

Da farko, muna buƙatar ƙirƙirar bot. Ana yin wannan ta amfani da bot na musamman BotFaye, je ku mahada kuma rubuta zuwa bot /start.

Bayan haka zaku karɓi saƙo tare da jerin umarni:

Sako daga 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

Don ƙirƙirar sabon bot, aika umarni /newbot.

BotFather zai tambaye ku shigar da sunan bot da shiga.

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

Kuna iya shigar da kowane suna, amma dole ne shiga ya ƙare da bot.

Idan kun yi komai daidai, za ku sami saƙo mai zuwa:

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

Na gaba zaku buƙaci alamar API ɗin da aka karɓa, a cikin misali na shine 123456789:abcdefghijklmnopqrstuvwxyz.

A wannan mataki, an kammala aikin shirye-shiryen don ƙirƙirar bot.

Shigar da kunshin don aiki tare da bot na telegram a cikin R

Ina ɗauka cewa kun riga kun shigar da harshen R da yanayin ci gaban RStudio. Idan ba haka ba, to kuna iya kallon wannan bidiyo koyawa kan yadda ake girka su.

Don aiki tare da Telegram Bot API za mu yi amfani da kunshin R telegram.bot.

Ana shigar da fakiti a cikin R tare da aikin install.packages(), don haka don shigar da kunshin da muke buƙata, yi amfani da umarnin install.packages("telegram.bot").

Kuna iya ƙarin koyo game da shigar da fakiti daban-daban daga wannan bidiyo.

Bayan shigar da kunshin, kuna buƙatar haɗa shi:

library(telegram.bot)

Aika saƙonni daga R zuwa Telegram

Za a iya samun bot ɗin da kuka ƙirƙira a cikin Telegram ta amfani da shiga da aka ƙayyade yayin ƙirƙira, a cikin akwati na @my_test_bot.

Aika bot kowane sako, kamar "Hey bot." A halin yanzu, muna buƙatar wannan don samun id ɗin taɗi tare da bot.

Yanzu muna rubuta wannan code a cikin R.

library(telegram.bot)

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

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

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

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

Da farko, muna ƙirƙirar misalin bot ɗin mu tare da aikin Bot(), Alamar da aka karɓa a baya dole ne a shigar da ita a matsayin hujja.

Ba a yi la'akari da mafi kyawun aiki don adana alamar a cikin lamba ba, don haka za ku iya adana shi a cikin canjin yanayi kuma ku karanta shi daga ciki. Ta tsohuwa a cikin kunshin telegram.bot An aiwatar da tallafi ga masu canjin yanayi na sunaye masu zuwa: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА... Madadin haka ИМЯ_ВАШЕГО_БОТА maye gurbin sunan da kuka ayyana lokacin ƙirƙira, a cikin yanayina zai zama m R_TELEGRAM_BOT_My Test Bot.

Akwai hanyoyi da yawa don ƙirƙirar canjin yanayi; Zan gaya muku game da mafi duniya da kuma giciye-dandamali. Ƙirƙiri a cikin kundin adireshin gidanku (zaku iya samun ta ta amfani da umarnin path.expand("~")) fayil ɗin rubutu mai suna .Renviron. Hakanan zaka iya yin wannan ta amfani da umarnin file.edit(path.expand(file.path("~", ".Renviron"))).

Kuma ƙara masa layi mai zuwa.

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

Na gaba, zaku iya amfani da alamar da aka ajiye a cikin mahallin mahalli ta amfani da aikin bot_token(), i.e. kamar wannan:

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

Hanyar getUpdates()yana ba mu damar samun sabuntawar bot, i.e. sakonnin da aka aiko masa. Hanya from_chat_id(), yana ba ku damar samun ID na chat ɗin da aka aiko da sakon. Muna buƙatar wannan ID don aika saƙonni daga bot.

Baya ga id ɗin taɗi daga abin da aka samu ta hanyar getUpdates() ku kuma sami wasu bayanai masu amfani. Misali, bayani game da mai amfani wanda ya aika saƙon.

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"

Don haka, a wannan matakin mun riga mun sami duk abin da muke buƙata don aika sako daga bot zuwa Telegram. Bari mu yi amfani da hanyar sendMessage(), wanda kake buƙatar shigar da ID na taɗi, saƙon saƙo, da nau'in alamar saƙon saƙo. Nau'in alama na iya zama Markdown ko HTML kuma an saita ta ta gardama parse_mode.

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

Tushen tsara Markdown:

  • Ana haskaka font mai ƙarfi tare da *:
    • misali: *жирный шритф*
    • sakamakon: m font
  • Ana nuna rubutun da maƙasudi:
    • misali: _курсив_
    • sakamakon: rubutun
  • Rubutun sararin samaniya, wanda yawanci ake amfani da shi don haskaka lambar shirin, an ƙayyade ta ta amfani da apostrophes - `:
    • misali: `monospace font`
    • sakamakon: моноширинный шрифт

Tushen tsara HTML markup:
A cikin HTML, kuna kunsa ɓangaren rubutun da ake buƙatar haskakawa a cikin tags, misali <тег>текст</тег>.

  • <tag> - bude tag
  • - rufe tag

HTML markup tags

  • <b> - m font
    • misali: <b>жирный шрифт</b>
    • sakamako m font
  • <i> - rubutun
    • misali: <i>курсив</i>
    • sakamakon: rubutun
  • — моноширинный шрифт
    • misali: моноширинный шрифт
    • sakamakon: моноширинный шрифт

Baya ga rubutu, zaku iya aika wasu abun ciki ta amfani da hanyoyi na musamman:

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

Wadancan. misali ta amfani da hanyar sendPhoto() za ka iya aika jadawali da ka ƙirƙira ta amfani da kunshin, adana a matsayin hoto ggplot2.

Duba Jadawalin Aiki na Windows da aika sanarwa game da ayyukan da suka ƙare ba bisa ƙa'ida ba

Don aiki tare da Jadawalin Aiki na Windows kuna buƙatar shigar da kunshin taskscheduleR, kuma don dacewa da aiki tare da bayanai, shigar da kunshin dplyr.

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

Na gaba, yin amfani da aikin taskscheduler_ls() muna neman bayani game da ayyuka daga mai tsara tsarin mu. Amfani da aikin filter() daga kunshin dplyr Mun cire daga cikin jerin ayyukan waɗanda aka kammala cikin nasara kuma suna da matsayi na ƙarshe na 0, da waɗanda ba a taɓa ƙaddamar da su ba kuma suna da matsayi na 267011, ayyuka naƙasassu, da ayyukan da ke gudana a halin yanzu.

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

A cikin abu task Yanzu muna da jerin ayyukan da suka gaza, muna buƙatar aika wannan jerin zuwa Telegram.

Idan muka kalli kowace umarni daki-daki, to:

  • filter() - tace jerin ayyuka bisa ga yanayin da aka bayyana a sama
  • select() - ya bar filin guda ɗaya kawai a cikin tebur tare da sunan ayyukan
  • unique() - yana cire kwafin sunaye
  • unlist() - yana canza ginshiƙin tebur da aka zaɓa zuwa vector
  • paste0() - yana haɗa sunayen ayyuka zuwa layi ɗaya, kuma yana sanya ciyarwar layi azaman mai rarrabawa, watau. n.

Abin da ya rage mana shi ne aika wannan sakamakon ta hanyar telegram.

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

Don haka, a halin yanzu bot code yayi kama da haka:

bot code sake duba aiki

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

}

Lokacin amfani da misalin da ke sama, musanya alamar bot ɗin ku da ID ɗin taɗi a cikin lambar.

Kuna iya ƙara sharuɗɗa don tace ayyuka, misali, duba waɗannan ayyukan da kuka ƙirƙira kawai, ban da na tsarin.

Hakanan zaka iya sanya saituna daban-daban a cikin fayil ɗin sanyi daban, kuma adana id ɗin taɗi da alama a ciki. Kuna iya karanta saitin, misali, ta amfani da kunshin configr.

Misali ini config

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

Misali na karatun masu canji daga saiti a cikin 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

Saita jadawali don gudanar da ayyukan sikanin

An kwatanta tsarin ƙaddamar da rubutun a kan jadawalin dalla-dalla a cikin wannan labarin. Anan zan bayyana matakan da ake buƙatar bi don wannan kawai. Idan daya daga cikin matakan ba su bayyana a gare ku ba, to koma zuwa labarin da na ba da hanyar haɗi zuwa gare shi.

Bari mu ɗauka cewa mun adana lambar bot ɗin mu zuwa fayil check_bot.R. Don tsara wannan fayil ɗin don gudana akai-akai, bi waɗannan matakan:

  1. Rubuta hanyar zuwa babban fayil ɗin da aka shigar da R a cikin tsarin tsarin Hanyar; a cikin Windows, hanyar zata kasance kamar haka: C:Program FilesRR-4.0.2bin.
  2. Ƙirƙiri fayil ɗin jemage mai aiwatarwa tare da layi ɗaya kawai R CMD BATCH C:rscriptscheck_botcheck_bot.R. Sauya C:rscriptscheck_botcheck_bot.R zuwa cikakkiyar hanyar zuwa fayil ɗin R ɗinku.
  3. Na gaba, yi amfani da Jadawalin Aiki na Windows don saita jadawalin ƙaddamarwa, misali, kowane rabin sa'a.

ƙarshe

A cikin wannan labarin, mun gano yadda ake ƙirƙirar bot da amfani da shi don aika sanarwa daban-daban a cikin telegram.

Na yi bayanin aikin sa ido kan Jadawalin Ayyukan Windows, amma kuna iya amfani da kayan da ke cikin wannan labarin don aika kowane sanarwa, daga yanayin hasashen yanayi zuwa ƙididdige ƙima akan musayar hannun jari, saboda R yana baka damar haɗi zuwa ɗimbin hanyoyin bayanai.

A cikin labarin na gaba, za mu gano yadda ake ƙara umarni da maɓalli a kan bot don ba zai iya aika sanarwar kawai ba, har ma ya aiwatar da ayyuka masu rikitarwa.

source: www.habr.com

Add a comment