اسان آر ٻولي ۾ ٽيليگرام بوٽ لکون ٿا (حصو 1): هڪ بوٽ ٺاهيو ۽ ان کي استعمال ڪندي ٽيليگرام تي پيغام موڪليو

ٽيليگرام سامعين هر روز تيزي سان وڌي رهيا آهن، اهو ميسينجر جي سهولت، چينلن جي موجودگي، چيٽ، ۽ يقيناً بوٽ ٺاهڻ جي صلاحيت سان آسان آهي.

بوٽ مڪمل طور تي مختلف مقصدن لاءِ استعمال ڪري سگھجن ٿا، توهان جي گراهڪن سان خودڪار رابطي کان وٺي توهان جي پنهنجي ڪمن کي منظم ڪرڻ تائين.

لازمي طور تي، توهان ٽيليگرام استعمال ڪري سگهو ٿا بوٽ ذريعي ڪنهن به عمل کي انجام ڏيڻ لاءِ: ڊيٽا موڪلڻ يا درخواست ڪرڻ، سرور تي ڪم هلائڻ، ڊيٽابيس ۾ معلومات گڏ ڪرڻ، اي ميلون موڪلڻ وغيره وغيره.

مون کي ڪيئن ڪم ڪرڻ تي مضمونن جو هڪ سلسلو لکڻ جو منصوبو ٽيليگرام بوٽ API، ۽ توهان جي ضرورتن کي پورو ڪرڻ لاءِ بوٽ لکو.

اسان آر ٻولي ۾ ٽيليگرام بوٽ لکون ٿا (حصو 1): هڪ بوٽ ٺاهيو ۽ ان کي استعمال ڪندي ٽيليگرام تي پيغام موڪليو

هن پهرين آرٽيڪل ۾ اسان اهو معلوم ڪنداسين ته ٽيليگرام بوٽ ڪيئن ٺاهيو ۽ ان کي ٽيليگرام ۾ اطلاع موڪلڻ لاءِ استعمال ڪيو.

نتيجي طور، اسان وٽ ھڪڙو بوٽ ھوندو جيڪو ونڊوز ٽاسڪ شيڊيولر ۾ سڀني ڪمن جي آخري عمل جي حالت کي جانچيندو، ۽ جيڪڏھن انھن مان ڪو ناڪام ٿيو ته توھان کي اطلاع موڪليندو.

پر مضمونن جي هن سيريز جو مقصد توهان کي اهو سيکارڻ نه آهي ته هڪ مخصوص، تنگ ڪم لاءِ بوٽ ڪيئن لکجي، پر عام طور تي توهان کي پيڪيج جي نحو سان متعارف ڪرائڻ آهي. telegram.bot، ۽ ڪوڊ جا مثال جنهن سان توهان پنهنجا پنهنجا مسئلا حل ڪرڻ لاءِ بوٽ لکي سگهو ٿا.

Contents

جيڪڏهن توهان ڊيٽا جي تجزيي ۾ دلچسپي رکو ٿا، توهان کي شايد دلچسپي وٺندي منهنجي ٽيليگرام и يوٽيوب چينلز. گهڻو ڪري مواد آر ٻولي لاء وقف آهي.

  1. ٽيليگرام بوٽ ٺاهڻ
  2. آر ۾ ٽيليگرام بوٽ سان ڪم ڪرڻ لاءِ پيڪيج انسٽال ڪرڻ
  3. آر کان ٽيليگرام تائين پيغام موڪلڻ
  4. ٽاسڪ اسڪين هلائڻ لاءِ شيڊول قائم ڪرڻ
  5. ٿڪل

ٽيليگرام بوٽ ٺاهڻ

پهرين، اسان کي هڪ بوٽ ٺاهڻ جي ضرورت آهي. اهو هڪ خاص بوٽ استعمال ڪندي ڪيو ويندو آهي بوٽو ايفٽر، ڏانهن وڃو لنڪ ۽ bot ڏانهن لکو /start.

جنهن کان پوءِ توهان حڪمن جي فهرست سان هڪ پيغام وصول ڪندا:

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

ھڪڙو نئون بوٽ ٺاھڻ لاء، حڪم موڪليو /newbot.

BotFather توهان کي بوٽ جو نالو داخل ڪرڻ ۽ لاگ ان ڪرڻ لاءِ چوندو.

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 ٻولي ۽ RStudio ڊولپمينٽ ماحول نصب آهي. جيڪڏهن اهو معاملو نه آهي، ته پوء توهان هن کي ڏسي سگهو ٿا وڊيو سبق ان کي ڪيئن انسٽال ڪجي.

ٽيليگرام بوٽ API سان ڪم ڪرڻ لاءِ اسان استعمال ڪنداسين R پيڪيج telegram.bot.

آر ۾ پيڪيجز کي انسٽال ڪرڻ فنڪشن استعمال ڪندي ڪيو ويندو آهي install.packages()، تنهنڪري اسان کي گهربل پيڪيج کي انسٽال ڪرڻ لاءِ، ڪمانڊ استعمال ڪريو install.packages("telegram.bot").

توھان مختلف پيڪيجز کي انسٽال ڪرڻ بابت وڌيڪ سکي سگھو ٿا مان هي وڊيو.

پيڪيج کي نصب ڪرڻ کان پوء، توهان کي ان کي ڳنڍڻ جي ضرورت آهي:

library(telegram.bot)

آر کان ٽيليگرام تائين پيغام موڪلڻ

جيڪو بوٽ توهان ٺاهيو آهي اهو ڳولهي سگهجي ٿو ٽيليگرام ۾ استعمال ڪندي لاگ ان استعمال ڪندي ٺاھڻ دوران، منهنجي صورت ۾ اهو آهي @my_test_bot.

بوٽ کي ڪو به پيغام موڪليو، جهڙوڪ "اي بوٽ." هن وقت، اسان کي هن جي ضرورت آهي توهان جي چيٽ جي سڃاڻپ حاصل ڪرڻ لاءِ بوٽ سان.

هاڻي اسان هيٺ ڏنل ڪوڊ لکون ٿا 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، پيغام جو متن، ۽ پيغام ٽيڪسٽ مارڪ اپ قسم. مارڪ اپ جو قسم مارڪ ڊائون يا HTML ٿي سگهي ٿو ۽ دليل سان ترتيب ڏنل آهي parse_mode.

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

مارڪ ڊائون فارميٽنگ جا بنيادي اصول:

  • بولڊ فونٽ سان نمايان ٿيل آهي *:
    • مثال: *жирный шритф*
    • نتيجو: بولڊ فونٽ
  • اطالوي انڊر اسڪور ذريعي ظاهر ڪيا ويا آهن:
    • مثال: _курсив_
    • نتيجو: اطالوي
  • مونو اسپيس فونٽ، جيڪو عام طور تي پروگرام ڪوڊ کي نمايان ڪرڻ لاءِ استعمال ڪيو ويندو آهي، استعمال ڪيو ويندو آهي apostrophes - `:
    • مثال: 'monospace font'
    • نتيجو: моноширинный шрифт

HTML مارڪ اپ فارميٽ ڪرڻ جا بنيادي اصول:
HTML ۾، توهان متن جو حصو لپيندا آهيو جنهن کي ٽيگ ۾ نمايان ٿيڻ جي ضرورت آهي، مثال طور <тег>текст</тег>.

  • <tag> - اوپننگ ٽيگ
  • - بند ڪرڻ وارو ٽيگ

HTML مارڪ اپ ٽيگ

  • <b> - بولڊ فونٽ
    • مثال: <b>жирный шрифт</b>
    • اثر بولڊ فونٽ
  • <i> - ترڪي
    • مثال: <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 ۽ ٽوڪن کي ذخيرو ڪريو. توھان پڙھي سگھوٿا config، مثال طور، پيڪيج استعمال ڪندي configr.

مثال ini config

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

آر ۾ ترتيب کان متغير پڙهڻ جو هڪ مثال

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 انسٽال ٿيل آهي Path system variable؛ ونڊوز ۾، رستو ڪجهه هن طرح هوندو: C:Program FilesRR-4.0.2bin.
  2. صرف ھڪڙي لائن سان ھڪڙي قابل عمل بيٽ فائل ٺاھيو R CMD BATCH C:rscriptscheck_botcheck_bot.R. بدلائڻ C:rscriptscheck_botcheck_bot.R توھان جي آر فائل ڏانھن مڪمل رستو.
  3. اڳيون، ونڊوز ٽاسڪ شيڊيولر استعمال ڪريو لانچ شيڊول قائم ڪرڻ لاءِ، مثال طور، هر اڌ ڪلاڪ.

ٿڪل

هن آرٽيڪل ۾، اسان اهو معلوم ڪيو ته هڪ بوٽ ڪيئن ٺاهيو ۽ ٽيليگرام ۾ مختلف نوٽيفڪيشن موڪلڻ لاءِ استعمال ڪيو.

مون ونڊوز ٽاسڪ شيڊيولر جي نگراني جي ڪم کي بيان ڪيو، پر توهان هن آرٽيڪل ۾ مواد استعمال ڪري سگهو ٿا ڪنهن به اطلاع موڪلڻ لاءِ، موسم جي اڳڪٿي کان وٺي اسٽاڪ ايڪسچينج تي اسٽاڪ ڪوٽس تائين، ڇاڪاڻ ته آر توهان کي ڊيٽا ذريعن جي وڏي انگ سان ڳنڍڻ جي اجازت ڏئي ٿي.

ايندڙ آرٽيڪل ۾، اسان اهو معلوم ڪنداسين ته بوٽ ۾ ڪمانڊ ۽ ڪيبورڊ ڪيئن شامل ڪجي ته جيئن اهو نه رڳو نوٽيفڪيشن موڪلي سگهي، پر وڌيڪ پيچيده عمل پڻ انجام ڏئي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو