R میں ٹیلیگرام بوٹ لکھنا (حصہ 1): ایک بوٹ بنانا اور اسے ٹیلیگرام میں پیغامات بھیجنے کے لیے استعمال کرنا

ٹیلیگرام کے سامعین میں ہر روز تیزی سے اضافہ ہو رہا ہے، یہ میسنجر کی سہولت، چینلز، چیٹس کی موجودگی، اور یقیناً بوٹس بنانے کی صلاحیت سے آسان ہے۔

بوٹس کو مکمل طور پر مختلف مقاصد کے لیے استعمال کیا جا سکتا ہے، آپ کے گاہکوں کے ساتھ خودکار مواصلات سے لے کر آپ کے اپنے کاموں کا انتظام کرنے تک۔

بنیادی طور پر، آپ بوٹ کے ذریعے کوئی بھی آپریشن کرنے کے لیے ٹیلیگرام کا استعمال کر سکتے ہیں: ڈیٹا بھیجیں یا درخواست کریں، سرور پر کام چلائیں، ڈیٹا بیس میں معلومات جمع کریں، ای میلز بھیجیں، وغیرہ۔

میں اس کے ساتھ کام کرنے کے طریقہ پر مضامین کی ایک سیریز لکھنے کا ارادہ رکھتا ہوں۔ ٹیلیگرام بوٹ API، اور اپنی ضروریات کے مطابق بوٹس لکھیں۔

R میں ٹیلیگرام بوٹ لکھنا (حصہ 1): ایک بوٹ بنانا اور اسے ٹیلیگرام میں پیغامات بھیجنے کے لیے استعمال کرنا

اس پہلے مضمون میں ہم یہ جانیں گے کہ ٹیلیگرام بوٹ کیسے بنایا جائے اور اسے ٹیلی گرام میں اطلاعات بھیجنے کے لیے استعمال کیا جائے۔

نتیجے کے طور پر، ہمارے پاس ایک بوٹ ہوگا جو ونڈوز ٹاسک شیڈیولر میں تمام کاموں کے آخری ایگزیکیوشن کی حیثیت کو چیک کرے گا، اور اگر ان میں سے کوئی ناکام ہو گیا ہے تو آپ کو اطلاع بھیجے گا۔

لیکن مضامین کی اس سیریز کا مقصد آپ کو یہ سکھانا نہیں ہے کہ کسی مخصوص، تنگ کام کے لیے بوٹ کیسے لکھا جائے، بلکہ عام طور پر آپ کو پیکیج کی ترکیب سے متعارف کرانا ہے۔ telegram.bot، اور کوڈ کی مثالیں جن کے ساتھ آپ اپنے مسائل کو حل کرنے کے لیے بوٹس لکھ سکتے ہیں۔

مواد

اگر آپ ڈیٹا کے تجزیے میں دلچسپی رکھتے ہیں، تو آپ کو میری میں دلچسپی ہو سکتی ہے۔ تار и یو ٹیوب پر چینلز زیادہ تر مواد 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 آپ سے بوٹ کا نام درج کرنے اور لاگ ان کرنے کو کہے گا۔

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 ترقیاتی ماحول انسٹال ہے۔ اگر ایسا نہیں ہے تو آپ اس کو دیکھ سکتے ہیں۔ ویڈیو سبق ان کو انسٹال کرنے کے طریقے پر۔

Telegram Bot API کے ساتھ کام کرنے کے لیے ہم R پیکیج استعمال کریں گے۔ telegram.bot.

R میں پیکجز کو انسٹال کرنا فنکشن کا استعمال کرتے ہوئے کیا جاتا ہے۔ install.packages()، لہذا ہمیں جس پیکیج کی ضرورت ہے اسے انسٹال کرنے کے لیے کمانڈ استعمال کریں۔ install.packages("telegram.bot").

آپ مختلف پیکجوں کو انسٹال کرنے کے بارے میں مزید جان سکتے ہیں۔ یہ ویڈیو.

پیکیج کو انسٹال کرنے کے بعد، آپ کو اسے جوڑنے کی ضرورت ہے:

library(telegram.bot)

R سے ٹیلی گرام پر پیغامات بھیجنا

آپ نے جو بوٹ بنایا ہے وہ تخلیق کے دوران مخصوص لاگ ان کا استعمال کرتے ہوئے ٹیلیگرام میں پایا جا سکتا ہے، میرے معاملے میں ایسا ہے۔ @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()، یعنی اس طرح:

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

طریقہ۔ getUpdates()ہمیں بوٹ اپ ڈیٹس حاصل کرنے کی اجازت دیتا ہے، یعنی پیغامات جو اسے بھیجے گئے تھے۔ طریقہ from_chat_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()، جس میں آپ کو چیٹ آئی ڈی، میسج ٹیکسٹ، اور میسج ٹیکسٹ مارک اپ کی قسم پاس کرنے کی ضرورت ہے۔ مارک اپ کی قسم مارک ڈاؤن یا ایچ ٹی ایم ایل ہو سکتی ہے اور دلیل کے ذریعے سیٹ کی جاتی ہے۔ parse_mode.

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

مارک ڈاؤن فارمیٹنگ کی بنیادی باتیں:

  • بولڈ فونٹ کو * کے ساتھ نمایاں کیا گیا ہے:
    • مثال: *жирный шритф*
    • نتیجہ: بولڈ فونٹ
  • ترچھے کو انڈر سکور سے ظاہر کیا جاتا ہے:
    • مثال: _курсив_
    • نتیجہ: ترچھا
  • مونو اسپیس فونٹ، جو عام طور پر پروگرام کے کوڈ کو نمایاں کرنے کے لیے استعمال ہوتا ہے، اس کی وضاحت apostrophes کے ذریعے کی جاتی ہے - `:
    • مثال: 'monospace فونٹ'
    • نتیجہ: моноширинный шрифт

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"
  )

}

اوپر دی گئی مثال استعمال کرتے وقت، اپنے بوٹ ٹوکن اور اپنی چیٹ آئی ڈی کو کوڈ میں تبدیل کریں۔

آپ فلٹرنگ کاموں کے لیے شرائط شامل کر سکتے ہیں، مثال کے طور پر، سسٹم والے کو چھوڑ کر، صرف ان کاموں کو چیک کرنا جو آپ نے بنائے ہیں۔

آپ مختلف سیٹنگز کو الگ کنفیگریشن فائل میں بھی رکھ سکتے ہیں، اور اس میں چیٹ آئی ڈی اور ٹوکن کو اسٹور کر سکتے ہیں۔ آپ ترتیب پڑھ سکتے ہیں، مثال کے طور پر، پیکیج کا استعمال کرتے ہوئے 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 انسٹال ہے اس کا پاتھ لکھیں؛ ونڈوز میں پاتھ کچھ اس طرح ہوگا: 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

نیا تبصرہ شامل کریں