موږ په R ژبه کې د ټیلیګرام بوټ لیکو (1 برخه): یو بوټ جوړ کړئ او د دې په کارولو سره ټیلیګرام ته پیغامونه واستوئ

د ټیلیګرام لیدونکي هره ورځ په ګړندۍ توګه وده کوي ، دا د میسینجر اسانتیا ، د چینلونو شتون ، چیټونو او البته د بوټونو رامینځته کولو وړتیا لخوا اسانه شوی.

بوټونه د بشپړ مختلف اهدافو لپاره کارول کیدی شي ، ستاسو د پیرودونکو سره د مخابراتو اتومات کولو څخه ستاسو د خپلو دندو اداره کولو پورې.

په لازمي ډول ، تاسو کولی شئ د بوټ له لارې هر ډول عملیاتو ترسره کولو لپاره ټیلګرام وکاروئ: ډیټا واستوئ یا غوښتنه وکړئ ، په سرور کې دندې پرمخ وړئ ، ډیټابیس کې معلومات راټول کړئ ، بریښنالیکونه واستوئ او داسې نور.

زه پلان لرم چې د کار کولو څرنګوالي په اړه یو لړ مقالې ولیکم د ټیلیګرام بوټ API، او ستاسو د اړتیاو سره سم بوټونه ولیکئ.

موږ په R ژبه کې د ټیلیګرام بوټ لیکو (1 برخه): یو بوټ جوړ کړئ او د دې په کارولو سره ټیلیګرام ته پیغامونه واستوئ

پدې لومړۍ مقاله کې به موږ معلومه کړو چې څنګه د ټیلیګرام بوټ رامینځته کړو او په ټیلیګرام کې د خبرتیاو لیږلو لپاره یې وکاروو.

د پایلې په توګه، موږ به یو بوټ ولرو چې د وینډوز ټاسک شیډولر کې به د ټولو دندو وروستي اجرا کولو حالت وګوري، او تاسو ته خبرتیاوې واستوي که چیرې کوم یو ناکام شوی وي.

مګر د مقالو د دې لړۍ موخه دا نه ده چې تاسو ته د یو ځانګړي، تنګ کار لپاره د بوټ لیکلو څرنګوالی زده کړئ، مګر په عمومي توګه تاسو د کڅوړې ترکیب ته معرفي کول دي. telegram.bot، او د کوډ مثالونه چې ورسره تاسو کولی شئ د خپلو ستونزو حل کولو لپاره بوټونه ولیکئ.

منځپانګې

که تاسو د معلوماتو تحلیل سره علاقه لرئ ، تاسو ممکن زما سره علاقه ولرئ telegram и یوتیوب چینلونه ډیری مینځپانګه د R ژبې ته وقف شوې ده.

  1. د ټیلیګرام بوټ رامینځته کول
  2. په R کې د ټیلیګرام بوټ سره کار کولو لپاره د کڅوړې نصب کول
  3. له R څخه ټیلیګرام ته د پیغامونو لیږل
  4. د کاري سکینونو چلولو لپاره مهالویش تنظیم کول
  5. پایلې

د ټیلیګرام بوټ رامینځته کول

لومړی، موږ باید یو بوټ جوړ کړو. دا د ځانګړي بوټ په کارولو سره ترسره کیږي بوټ فیتر، ورتګ مخونه او بوټ ته ولیکئ /start.

له هغې وروسته به تاسو د امرونو لیست سره یو پیغام ترلاسه کړئ:

د بوټ فادر څخه پیغام

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

د نوي بوټ رامینځته کولو لپاره ، کمانډ واستوئ /newbot.

بوټ فادر به تاسو څخه وغواړي چې د بوټ نوم دننه کړئ او ننوتل.

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

تاسو کولی شئ هر نوم داخل کړئ، مګر ننوتل باید پای ته ورسیږي bot.

که تاسو هرڅه سم ترسره کړي، تاسو به لاندې پیغام ترلاسه کړئ:

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

بل تاسو به د ترلاسه شوي API نښه ته اړتیا ولرئ، زما په مثال کې دا دی 123456789:abcdefghijklmnopqrstuvwxyz.

په دې مرحله کې، د بوټ جوړولو لپاره چمتووالی کار بشپړ شوی.

په R کې د ټیلیګرام بوټ سره کار کولو لپاره د کڅوړې نصب کول

زه فرض کوم چې تاسو دمخه د R ژبه او د RStudio پراختیا چاپیریال نصب کړی. که دا قضیه نه وي، نو تاسو کولی شئ دا وګورئ ویډیو درس د دوی د نصبولو څرنګوالي په اړه.

د ټیلیګرام بوټ API سره کار کولو لپاره موږ به د R کڅوړه وکاروو telegram.bot.

په R کې د کڅوړو نصب کول د فنکشن په کارولو سره ترسره کیږي install.packages()نو د هغه بسته بندي نصبولو لپاره چې موږ ورته اړتیا لرو، کمانډ وکاروئ install.packages("telegram.bot").

تاسو کولی شئ د مختلف کڅوړو نصبولو په اړه نور معلومات له دې څخه زده کړئ دا ویډیو.

د بسته بندي نصبولو وروسته، تاسو اړتیا لرئ چې دا وصل کړئ:

library(telegram.bot)

له R څخه ټیلیګرام ته د پیغامونو لیږل

هغه بوټ چې تاسو رامینځته کړی په ټیلیګرام کې موندل کیدی شي د رامینځته کولو پرمهال مشخص شوي ننوتل په کارولو سره ، زما په قضیه کې دا دی @my_test_bot.

بوټ ته کوم پیغام واستوئ، لکه "ای بوټ." په اوس وخت کې، موږ دې ته اړتیا لرو ترڅو د بوټ سره ستاسو د چیٹ ID ترلاسه کړو.

اوس موږ لاندې کوډ په R کې لیکو.

library(telegram.bot)

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

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

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

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

په پیل کې، موږ د فنکشن سره زموږ د بوټ مثال جوړوو Bot()، مخکې ترلاسه شوی نښه باید د دلیل په توګه دې ته واستول شي.

په کوډ کې د ټوکن ذخیره کول غوره عمل نه ګڼل کیږي، نو تاسو کولی شئ دا د چاپیریال متغیر کې ذخیره کړئ او له هغې څخه یې ولولئ. په ډیفالټ بسته کې telegram.bot د لاندې نومونو د چاپیریال متغیرونو لپاره ملاتړ پلي شوی: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА... پرځای د ИМЯ_ВАШЕГО_БОТА هغه نوم بدل کړئ چې تاسو یې د جوړولو پر مهال مشخص کړی، زما په قضیه کې دا به یو متغیر وي R_TELEGRAM_BOT_My Test Bot.

د چاپیریال متغیر رامینځته کولو لپاره ډیری لارې شتون لري؛ زه به تاسو ته د خورا نړیوال او کراس پلیټ فارم په اړه ووایم. په خپل کور لارښود کې جوړ کړئ (تاسو کولی شئ دا د کمانډ په کارولو سره ومومئ path.expand("~")د نوم سره د متن فایل .رینویرون. تاسو کولی شئ دا د کمانډ په کارولو سره هم وکړئ file.edit(path.expand(file.path("~", ".Renviron"))).

او لاندې کرښه ورته اضافه کړئ.

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

بیا ، تاسو کولی شئ د فنکشن په کارولو سره د چاپیریال متغیر کې خوندي شوي نښه وکاروئ bot_token(), i.e. لکه دغه:

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

میتود getUpdates()موږ ته اجازه راکوي چې د بوټ تازه معلومات ترلاسه کړو، د بیلګې په توګه هغه پیغامونه چې هغه ته لیږل شوي وو. طریقه from_chat_id()، تاسو ته اجازه درکوي د هغه چټ ID ترلاسه کړئ له کوم ځای څخه چې پیغام لیږل شوی و. موږ دې ID ته اړتیا لرو ترڅو له بوټ څخه پیغامونه واستوو.

د میتود لخوا ترلاسه شوي اعتراض څخه د چیٹ ID سربیره getUpdates() تاسو ځینې نور ګټور معلومات هم ترلاسه کوئ. د مثال په توګه، د هغه کارونکي په اړه معلومات چې پیغام یې لیږلی.

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"

نو ، پدې مرحله کې موږ دمخه هرڅه لرو چې موږ ورته اړتیا لرو له بوټ څخه ټیلیګرام ته پیغام واستوو. راځئ چې طریقه وکاروو sendMessage()په کوم کې چې تاسو اړتیا لرئ د چیټ ID، د پیغام متن، او د پیغام متن مارک اپ ډول انتقال کړئ. د مارک اپ ډول کیدای شي Markdown یا HTML وي او د دلیل لخوا تنظیم شوی وي parse_mode.

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

د نښه کولو فارمیټ کولو اساسات:

  • بولډ فونټ د * سره روښانه شوی:
    • مثال: *жирный шритф*
    • پایله: بولډ فونټ
  • ایټالیکونه د انډر سکور لخوا ښودل شوي:
    • مثال: _курсив_
    • پایله: ایټالیک
  • د مونوسپیس فونټ، چې معمولا د پروګرام کوډ روښانه کولو لپاره کارول کیږي، د apostrophes په کارولو سره مشخص شوی - `:
    • مثال: د مونو اسپیس فونټ
    • پایله: моноширинный шрифт

د HTML مارک اپ فارمیټ کولو اساسات:
په HTML کې، تاسو د متن هغه برخه وتړئ چې په ټګونو کې روښانه کولو ته اړتیا لري، مثال <тег>текст</тег>.

  • <tag> - د پرانیستلو ټګ
  • - د تړلو نښه

د HTML مارک اپ ټګونه

  • <b> - بولډ فونټ
    • مثال: <b>жирный шрифт</b>
    • اغیزه بولډ فونټ
  • <i> - italics
    • مثال: <i>курсив</i>
    • پایله: ایټالیک
  • — моноширинный шрифт
    • مثال: моноширинный шрифт
    • پایله: моноширинный шрифт

د متن سربیره، تاسو کولی شئ د ځانګړو میتودونو په کارولو سره نور مینځپانګې واستوئ:

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

هغوی. د مثال په توګه د میتود کارول sendPhoto() تاسو کولی شئ د عکس په توګه خوندي شوی ګراف ولیږئ چې تاسو د کڅوړې په کارولو سره رامینځته کړی ggplot2.

د وینډوز ټاسک مهالویش چیک کول او د دندو په اړه خبرتیاوې لیږل چې په غیر معمولي ډول پای ته رسیدلي

د وینډوز ټاسک شیډولر سره کار کولو لپاره تاسو اړتیا لرئ بسته نصب کړئ taskscheduleR، او د معلوماتو سره د کار کولو اسانتیا لپاره ، کڅوړه نصب کړئ dplyr.

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

بیا، د فنکشن په کارولو سره taskscheduler_ls() موږ له خپل مهالویش څخه د دندو په اړه معلومات غوښتنه کوو. د فنکشن کارول filter() له کڅوړې څخه dplyr موږ د هغو دندو له لیست څخه لرې کوو چې په بریالیتوب سره بشپړ شوي او د وروستۍ پایلې حالت 0 لري، او هغه چې هیڅکله نه دي پیل شوي او د 267011 حیثیت لري، معلول شوي دندې، او هغه دندې چې دا مهال روانې دي.

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

په اعتراض کې task موږ اوس د دندو لیست لرو چې ناکام شوي، موږ باید دا لیست ټیلیګرام ته واستوو.

که موږ هره کمانډ په ډیر تفصیل سره وګورو، نو:

  • filter() - د پورته بیان شوي شرایطو سره سم د دندو لیست فلټر کوي
  • select() - د دندو نوم سره په جدول کې یوازې یوه ساحه پریږدي
  • unique() - نقل شوي نومونه لرې کوي
  • unlist() - د ټاکل شوي میز کالم په ویکتور بدلوي
  • paste0() - د دندو نومونه په یوه کرښه کې نښلوي، او د لاین فیډ د جلا کونکي په توګه اچوي، د بیلګې په توګه. n.

ټول هغه څه چې زموږ لپاره پاتې دي دا پایلې د ټیلیګرام له لارې لیږل دي.

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

نو، دا مهال د بوټ کوډ داسې ښکاري:

د کاري بیاکتنې بوټ کوډ

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

}

کله چې پورته مثال وکاروئ ، خپل د بوټ نښه او ستاسو د چیٹ ID په کوډ کې ځای په ځای کړئ.

تاسو کولی شئ د فلټر کولو دندو لپاره شرایط اضافه کړئ ، د مثال په توګه ، یوازې هغه دندې چیک کړئ چې تاسو رامینځته کړي ، د سیسټم پرته.

تاسو کولی شئ مختلف ترتیبات په جلا ترتیب فایل کې هم واچوئ، او د چیټ ID او نښه یې په کې ذخیره کړئ. تاسو کولی شئ ترتیب ولولئ، د بیلګې په توګه، د کڅوړې په کارولو سره configr.

د ini config بېلګه

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

په 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

د کاري سکینونو چلولو لپاره مهالویش تنظیم کول

په مهالویش کې د سکریپټونو لانچ تنظیم کولو پروسه پدې کې په ډیر تفصیل سره بیان شوې مقالې. دلته زه به یوازې هغه ګامونه تشریح کړم چې د دې لپاره باید تعقیب شي. که کوم مرحلې تاسو ته روښانه نه وي ، نو بیا مقالې ته مراجعه وکړئ چې ما لینک چمتو کړی.

راځئ فرض کړو چې موږ خپل بوټ کوډ په فایل کې خوندي کړی check_bot.R. د دې فایل د منظم چلولو مهالویش لپاره، دا ګامونه تعقیب کړئ:

  1. هغه فولډر ته لاره ولیکئ په کوم کې چې R د پاټ سیسټم متغیر کې نصب شوی؛ په وینډوز کې ، لاره به داسې وي: C:Program FilesRR-4.0.2bin.
  2. یوازې د یوې کرښې سره د اجرا وړ بټ فایل جوړ کړئ R CMD BATCH C:rscriptscheck_botcheck_bot.R. پر ځای C:rscriptscheck_botcheck_bot.R ستاسو R فایل ته بشپړې لارې ته.
  3. بیا ، د لانچ مهالویش تنظیم کولو لپاره د وینډوز ټاسک شیډولر وکاروئ ، د مثال په توګه ، هر نیم ساعت.

پایلې

پدې مقاله کې، موږ معلومه کړه چې څنګه یو بوټ جوړ کړو او په ټیلیګرام کې د مختلف خبرتیاو لیږلو لپاره یې وکاروو.

ما د وینډوز ټاسک شیډولر نظارت کولو دنده تشریح کړه ، مګر تاسو کولی شئ پدې مقاله کې مواد وکاروئ ترڅو کوم خبرتیاوې واستوئ ، د هوا وړاندوینې څخه د سټاک ایکسچینج کې د سټاک نرخونو پورې ، ځکه چې R تاسو ته اجازه درکوي د ډیټا سرچینو لوی شمیر سره وصل شئ.

په راتلونکې مقاله کې، موږ به معلومه کړو چې څنګه په بوټ کې کمانډونه او کیبورډ اضافه کړو ترڅو دا نه یوازې خبرتیاوې واستوي، بلکې نور پیچلي کړنې هم ترسره کړي.

سرچینه: www.habr.com

Add a comment