Kami nyerat bot telegram dina basa Sunda (bagian 1): Jieun bot sareng ngirim pesen ka telegram nganggo éta

Panongton Telegram ngembang sacara éksponénsial unggal dinten, ieu difasilitasi ku genah utusan, ayana saluran, obrolan, sareng tangtosna kamampuan nyiptakeun bot.

Bot tiasa dianggo pikeun tujuan anu béda-béda, ti ngotomatisasi komunikasi sareng palanggan anjeun pikeun ngatur tugas anjeun nyalira.

Intina, anjeun tiasa nganggo telegram pikeun ngalakukeun operasi naon waé ngalangkungan bot: ngirim atanapi nyuhunkeun data, ngajalankeun tugas dina server, ngumpulkeun inpormasi kana database, ngirim email, sareng sajabana.

Kuring rencanana nulis runtuyan artikel ngeunaan cara digawekeun ku telegram bot API, jeung nulis bot pikeun nyocogkeun ka kabutuhan Anjeun.

Kami nyerat bot telegram dina basa Sunda (bagian 1): Jieun bot sareng ngirim pesen ka telegram nganggo éta

Dina tulisan munggaran ieu kami bakal terang kumaha cara nyiptakeun bot telegram sareng dianggo pikeun ngirim béwara dina telegram.

Hasilna, urang bakal boga bot nu bakal pariksa status palaksanaan panungtungan sadaya tugas dina Windows Task Scheduler, sarta ngirimkeun bewara lamun salah sahiji gagal.

Tapi tujuan tina séri tulisan ieu sanés pikeun ngajarkeun anjeun kumaha cara nyerat bot pikeun tugas khusus anu sempit, tapi pikeun umumna ngenalkeun anjeun kana sintaksis bungkusan. telegram.bot, sareng conto kode anu anjeun tiasa nyerat bot pikeun ngabéréskeun masalah anjeun nyalira.

eusi

Lamun museurkeun analisis data, Anjeun bisa jadi kabetot dina abdi telegram и youtube saluran. Seuseueurna eusina dikhususkeun kanggo basa Sunda.

  1. Nyiptakeun bot telegram
  2. Masang pakét pikeun gawé bareng bot telegram di R
  3. Ngirim pesen ti Sunda ka Telegram
  4. Nyetél jadwal pikeun ngajalankeun tugas scan
  5. kacindekan

Nyiptakeun bot telegram

Kahiji, urang kudu nyieun bot. Hal ieu dilakukeun nganggo bot khusus BotBapa, indit ka link jeung nulis ka bot /start.

Saatos éta anjeun bakal nampi pesen kalayan daptar paréntah:

Pesen ti 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

Pikeun nyieun bot anyar, kirimkeun paréntah /newbot.

BotFather bakal naroskeun anjeun ngalebetkeun nami bot sareng login.

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

Anjeun tiasa ngalebetkeun nami naon waé, tapi login kedah ditungtungan ku bot.

Upami anjeun ngalakukeun sadayana leres, anjeun bakal nampi pesen ieu:

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

Salajengna anjeun peryogi token API anu ditampi, dina conto kuring éta 123456789:abcdefghijklmnopqrstuvwxyz.

Dina léngkah ieu, pagawéan persiapan pikeun nyiptakeun bot parantos réngsé.

Masang pakét pikeun gawé bareng bot telegram di R

Kuring nganggap yén anjeun parantos dipasang basa Sunda sareng lingkungan pangembangan RStudio. Upami ieu sanés masalahna, maka anjeun tiasa ningali ieu tutorial video on kumaha carana install aranjeunna.

Pikeun damel sareng Telegram Bot API kami bakal nganggo pakét R telegram.bot.

Masang bungkusan dina basa Sunda dipigawé ngagunakeun fungsi install.packages(), ku kituna pikeun masang pakét anu urang peryogikeun, nganggo paréntah install.packages("telegram.bot").

Anjeun tiasa diajar langkung seueur ngeunaan masang sababaraha bungkusan tina video ieu.

Saatos masang pakét, anjeun kedah nyambungkeunana:

library(telegram.bot)

Ngirim pesen ti Sunda ka Telegram

Bot anu anjeun damel tiasa dipendakan dina Telegram nganggo login anu ditunjuk nalika nyiptakeun, bisi kuring éta @my_test_bot.

Kirim pesen naon waé ka bot, sapertos "Hei bot." Ayeuna, urang peryogi ieu pikeun kéngingkeun id obrolan anjeun sareng bot.

Ayeuna urang nulis kode di handap dina R.

library(telegram.bot)

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

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

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

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

Mimitina, urang nyiptakeun conto bot urang kalayan fungsina Bot(), token anu ditampi sateuacana kedah dilebetkeun kana éta salaku argumen.

Teu dianggap prakték pangalusna pikeun nyimpen token dina kode, jadi Anjeun bisa nyimpen eta dina variabel lingkungan jeung maca ti dinya. Sacara standar dina pakét telegram.bot Rojongan pikeun variabel lingkungan tina nami di handap ieu parantos dilaksanakeun: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТАKawasna dina lamunan. Tibatan ИМЯ_ВАШЕГО_БОТА ngagantikeun ngaran anjeun dieusian nalika nyieun, bisi kuring eta bakal variabel R_TELEGRAM_BOT_My Test Bot.

Aya sababaraha cara pikeun nyiptakeun variabel lingkungan; Kuring bakal nyarioskeun ka anjeun ngeunaan anu paling universal sareng cross-platform. Jieun diréktori asal anjeun (anjeun tiasa mendakanana nganggo paréntah path.expand("~")) file téks kalawan ngaran .Renviron. Anjeun ogé tiasa ngalakukeun ieu nganggo paréntah file.edit(path.expand(file.path("~", ".Renviron"))).

Sareng tambahkeun garis di handap ieu.

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

Salajengna, anjeun tiasa nganggo token anu disimpen dina variabel lingkungan nganggo fungsina bot_token(), i.e. resep ieu:

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

Metode getUpdates()ngamungkinkeun urang pikeun meunangkeun apdet bot, i.e. pesen anu dikirim ka anjeunna. Métode from_chat_id(), ngidinan Anjeun pikeun meunangkeun ID obrolan ti mana pesen dikirim. Urang peryogi ID ieu pikeun ngirim pesen ti bot.

Salian obrolan id ti obyék diala ku métode getUpdates() anjeun ogé nampi sababaraha émbaran mangpaat séjén. Salaku conto, inpormasi ngeunaan pangguna anu ngirim pesen.

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"

Janten, dina tahap ieu urang parantos gaduh sadayana anu urang peryogikeun pikeun ngirim pesen ti bot ka Telegram. Hayu urang nganggo metodeu sendMessage(), dimana anjeun kedah ngalebetkeun ID obrolan, téks pesen, sareng jinis markup téks pesen. Jinis markup tiasa Markdown atanapi HTML sareng diatur ku argumen parse_mode.

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

Dasar pormat markdown:

  • Font kandel disorot ku *:
    • conto: *жирный шритф*
    • hasilna: font kandel
  • Miring dituduhkeun ku garis handap:
    • conto: _курсив_
    • hasilna: miring
  • Font monospace, anu biasana dianggo pikeun nyorot kode program, ditunjuk nganggo tanda kutip - `:
    • conto: `fonspasi monospace`
    • hasilna: моноширинный шрифт

Dasar-dasar pormat markup HTML:
Dina HTML, anjeun mungkus bagian tina téks anu kedah disorot dina tag, contona <тег>текст</тег>.

  • <tag> - tag pambuka
  • - tag panutupanana

tag markup HTML

  • <b> - font kandel
    • conto: <b>жирный шрифт</b>
    • hasil font kandel
  • <i> - miring
    • conto: <i>курсив</i>
    • hasilna: miring
  • — моноширинный шрифт
    • conto: моноширинный шрифт
    • hasilna: моноширинный шрифт

Salian téks, anjeun tiasa ngirim eusi sanés nganggo metode khusus:

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

Jelema. contona ngagunakeun métode sendPhoto() anjeun tiasa ngirim grafik anu disimpen salaku gambar anu anjeun damel nganggo pakét ggplot2.

Mariksa Windows Task Scheduler sareng ngirim béwara ngeunaan tugas anu ditungtungan sacara teu normal

Pikeun damel sareng Windows Task Scheduler anjeun kedah masang pakét taskscheduleR, sarta pikeun genah gawé bareng data, install pakét dplyr.

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

Salajengna, ngagunakeun fungsi taskscheduler_ls() urang menta informasi ngeunaan tugas ti scheduler urang. Ngagunakeun fungsi filter() ti iket dplyr Urang miceun tina daptar tugas nu geus hasil réngsé sarta boga status hasil panungtungan 0, jeung nu teu kungsi dibuka jeung statusna 267011, tugas ditumpurkeun, jeung tugas nu ayeuna jalan.

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

Dina obyék task Urang ayeuna gaduh daptar tugas anu gagal, urang kedah ngirim daptar ieu ka Telegram.

Upami urang ningali unggal paréntah sacara langkung rinci, maka:

  • filter() - nyaring daptar tugas dumasar kana kaayaan anu dijelaskeun di luhur
  • select() - daun ngan hiji widang dina tabel kalawan nami tugas
  • unique() - miceun duplikat ngaran
  • unlist() - ngarobah kolom tabel dipilih ka vektor
  • paste0() - nyambungkeun ngaran tugas kana hiji garis, sarta nempatkeun feed garis salaku separator a, i.e. n.

Sadaya anu tetep pikeun urang nyaéta ngirim hasil ieu via telegram.

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

Janten, ayeuna kode bot sapertos kieu:

Kode bot review tugas

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

}

Nalika nganggo conto di luhur, gentoskeun token bot anjeun sareng ID obrolan anjeun kana kodeu.

Anjeun tiasa nambihan kaayaan pikeun nyaring tugas, contona, mariksa ngan ukur tugas anu anjeun damel, teu kalebet sistem.

Anjeun oge bisa nempatkeun rupa setélan kana file konfigurasi misah, tur nyimpen obrolan id na token di dinya. Anjeun tiasa maca config, contona, ngagunakeun pakét configr.

Conto ieu config

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

Conto maca variabel tina config dina 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

Nyetél jadwal pikeun ngajalankeun tugas scan

Prosés nyetel peluncuran naskah dina jadwal dijelaskeun dina leuwih jéntré dina ieu artikel. Di dieu kuring ngan ukur ngajelaskeun léngkah-léngkah anu kedah dilaksanakeun pikeun ieu. Upami aya léngkah-léngkah anu teu jelas pikeun anjeun, teras tingal tulisan anu kuring nyayogikeun tautan.

Anggap urang nyimpen kode bot urang kana file check_bot.R. Pikeun ngajadwalkeun file ieu jalan rutin, tuturkeun léngkah ieu:

  1. Tulis jalur ka folder dimana R dipasang dina variabel sistem Path; dina Windows, jalurna bakal sapertos kieu: C:Program FilesRR-4.0.2bin.
  2. Jieun file bat executable kalawan ngan hiji garis R CMD BATCH C:rscriptscheck_botcheck_bot.R. Ngaganti C:rscriptscheck_botcheck_bot.R ka jalur pinuh ka file Sunda Anjeun.
  3. Salajengna, paké Windows Task Scheduler pikeun nyetél jadwal peluncuran, contona, unggal satengah jam.

kacindekan

Dina tulisan ieu, urang terang kumaha cara nyiptakeun bot sareng dianggo pikeun ngirimkeun rupa-rupa bewara dina telegram.

Kuring ngajelaskeun tugas ngawaskeun Windows Task Scheduler, tapi anjeun tiasa nganggo bahan dina tulisan ieu pikeun ngirim béwara naon waé, ti ramalan cuaca ka kutipan saham di bursa saham, sabab R ngidinan Anjeun pikeun nyambung ka sajumlah badag sumber data.

Dina artikel salajengna, urang bakal terang kumaha carana nambihan paréntah sareng keyboard kana bot supados henteu ngan ukur ngirim béwara, tapi ogé ngalaksanakeun tindakan anu langkung kompleks.

sumber: www.habr.com

Tambahkeun komentar