په R کې د ټیلیګرام بوټ لیکل (دوهمه برخه): بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کول

В پخوانۍ خپرونه موږ معلومه کړه چې څنګه یو بوټ جوړ کړو، د ټولګي یوه بیلګه یې پیل کړه Bot او د دې په کارولو سره د پیغامونو لیږلو میتودونو سره آشنا شو.

په دې مقاله کې زه دې موضوع ته ادامه ورکوم، نو زه وړاندیز کوم چې یوازې د لوستلو وروسته د دې مقالې لوستل پیل کړئ لومړی برخه.

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

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

په R کې د ټیلیګرام بوټ لیکل (دوهمه برخه): بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کول

د لړۍ ټولې مقالې "په R کې د ټیلیګرام بوټ لیکل"

  1. موږ یو بوټ جوړوو او په ټیلیګرام کې د پیغامونو لیږلو لپاره یې کاروو
  2. بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کړئ

منځپانګې

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

  1. تازه کوونکی ټولګی
  2. سمبالونکي - سمبالونکي
  3. بوټ ته لومړی کمانډ اضافه کړئ ، کمانډ هینډلر
  4. د متن پیغام پروسیسر او فلټرونه
  5. د پیرامیټونو سره د قوماندې اضافه کول
  6. بوټ په شالید کې چل کړئ
  7. پایلې

تازه کوونکی ټولګی

Updater یو ټولګی دی چې ستاسو لپاره د ټیلیګرام بوټ رامینځته کول اسانه کوي ، او د هود لاندې ټولګي کاروي Dispetcher. د ټولګي دنده Updater د بوټ څخه تازه معلومات ترلاسه کول دي (په تیرو مقاله کې موږ د دې هدف لپاره میتود کارولی و getUpdates())، او نورو ته یې انتقال کړئ Dispetcher.

په خپل وار Dispetcher هغه هینډلرونه لري چې تاسو جوړ کړي، د بیلګې په توګه ټولګي توکي Handler.

سمبالونکي - سمبالونکي

د لاس لرونکو سره چې تاسو یې اضافه کوئ Dispetcher د مختلفو پیښو لپاره د بوټ غبرګون. د دې مقالې لیکلو په وخت کې telegram.bot لاندې ډولونه سمبالونکي اضافه شوي:

  • MessageHandler - د پیغام اداره کوونکی
  • کمانډ هینډلر - د کمانډ هینډلر
  • CallbackQueryHandler - د انلاین څخه لیږل شوي کیبورډونو لپاره ډیټا هینډلر
  • ErrorHandler - د تېروتنې اداره کونکی کله چې د بوټ څخه د تازه معلوماتو غوښتنه کوي

بوټ ته لومړی کمانډ اضافه کړئ ، کمانډ هینډلر

که تاسو مخکې هیڅکله بوټونه ندي کارولي او نه پوهیږئ چې کمانډ څه شی دی ، نو بوټو ته کمانډونه باید د فارورډ سلیش په کارولو سره واستول شي / د مختګ په توګه.

موږ به د ساده حکمونو سره پیل وکړو، د بیلګې په توګه. راځئ چې خپل بوټ ته لارښوونه وکړو چې په کمانډ کې سلام ووایی /hi.

کوډ 1: بوټ ته د سلام ویلو ښوونه

library(telegram.bot)

# создаём экземпляр класса Updater
updater <- Updater('ТОКЕН ВАШЕГО БОТА')

# Пишем метод для приветсвия
say_hello <- function(bot, update) {

  # Имя пользователя с которым надо поздароваться
  user_name <- update$message$from$first_name

  # Отправка приветственного сообщения
  bot$sendMessage(update$message$chat_id, 
                  text = paste0("Моё почтение, ", user_name, "!"), 
                  parse_mode = "Markdown")

}

# создаём обработчик 
hi_hendler <- CommandHandler('hi', say_hello)

# добаляем обработчик в диспетчер
updater <- updater + hi_hendler

# запускаем бота
updater$start_polling()

پورته د کوډ مثال پرمخ وړئ ، د ریښتیني نښه سره د 'ستاسو بوټ ټوکن' ځای په ځای کولو وروسته چې تاسو د دې له لارې د بوټ رامینځته کولو پرمهال ترلاسه کوئ. بوټ فیتر (ما د بوټ جوړولو په اړه خبرې وکړې لومړۍ مقاله).

میتود start_polling() کلونه Updater، کوم چې د کوډ په پای کې کارول کیږي ، د بوټ څخه د تازه معلوماتو غوښتنه او پروسس کولو نه ختمیدونکي لوپ پیل کوي.

اوس راځئ چې ټیلیګرام خلاص کړو او زموږ بوټ ته لومړی کمانډ ولیکئ /hi.

په R کې د ټیلیګرام بوټ لیکل (دوهمه برخه): بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کول

اوس زموږ بوټ په قومانده پوهیږي /hi، او پوهیږي چې څنګه موږ ته ښه راغلاست ووایو.

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

په R کې د ټیلیګرام بوټ لیکل (دوهمه برخه): بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کول

  1. د ټولګي یوه بیلګه جوړه کړئ Updater;
  2. موږ میتودونه جوړوو، د بیلګې په توګه هغه دندې چې زموږ بوټ به یې ترسره کړي. د کوډ مثال کې دا یو فعالیت دی say_hello(). هغه دندې چې تاسو به یې د بوټو میتودونو په توګه کاروئ باید دوه اړین دلیلونه ولري - bot и تازه، او یو اختیاري - ارګونه. استدلال bot، دا ستاسو بوټ دی، د دې په مرسته تاسو کولی شئ پیغامونو ته ځواب ووایاست، پیغامونه واستوئ، یا بوټ ته کوم بل میتودونه وکاروئ. استدلال تازه دا هغه څه دي چې بوټ د کارونکي څخه ترلاسه کړي ، په حقیقت کې ، هغه څه چې موږ د میتود په کارولو سره په لومړۍ مقاله کې ترلاسه کړل getUpdates(). استدلال ارګونه تاسو ته اجازه درکوي د کمانډ سره د کارونکي لخوا لیږل شوي اضافي معلومات پروسس کړئ، موږ به یو څه وروسته دې موضوع ته راستون شو؛
  3. موږ سمبالونکي پیدا کوو، د بیلګې په توګه موږ د کارونکي ځینې کړنې په تیرو مرحلو کې رامینځته شوي میتودونو سره شریک کوو. په لازمي ډول ، یو هینډلر یو محرک دی ، یوه پیښه چې د بوټو ځینې فعالیت بولي. زموږ په مثال کې، دا ډول محرک د قوماندې لیږل دي /hi، او د ټیم لخوا پلي کیږي hi_hendler <- CommandHandler('hi', say_hello). لومړی فعالیت دلیل CommandHandler() تاسو ته اجازه درکوي یو کمانډ مشخص کړئ، زموږ په قضیه کې hi، کوم چې بوټ به ځواب ووایی. دوهم دلیل تاسو ته اجازه درکوي د بوټ میتود مشخص کړئ ، موږ به میتود ته زنګ ووهو say_hello، کوم چې به اجرا شي که چیرې کارونکي په لومړي دلیل کې مشخص شوي کمانډ ته زنګ ووهي؛
  4. بیا ، موږ رامینځته شوی هینډلر زموږ د ټولګي مثال لیږدونکي ته اضافه کوو Updater. تاسو کولی شئ په څو لارو کې سمبالونکي اضافه کړئ؛ په پورته مثال کې، ما د نښې په کارولو سره ترټولو ساده کارولې +, i.e. updater <- updater + hi_hendler. ورته د میتود په کارولو سره ترسره کیدی شي add_handler()، کوم چې په ټولګي پورې اړه لري Dispatcherتاسو کولی شئ دا طریقه په لاندې ډول ومومئ: updater$dispatcher$add_handler();
  5. د کمانډ په کارولو سره بوټ لانچ کړئ start_polling().

د متن پیغام پروسیسر او فلټرونه

موږ معلومه کړه چې څنګه بوټ ته کمانډونه واستوو ، مګر ځینې وختونه موږ بوټ ته اړتیا لرو چې نه یوازې امرونو ته ځواب ووایی ، بلکه ځینې منظم متن پیغامونو ته هم. د دې کولو لپاره تاسو اړتیا لرئ د پیغام سمبالونکي وکاروئ - د پیغام هینډلر.

عادي د پیغام هینډلر په بشپړ ډول ټولو راتلونکو پیغامونو ته ځواب ورکوي. له همدې امله، د پیغام سمبالونکي اکثرا د فلټرونو سره یوځای کارول کیږي. راځئ چې بوټ ته درس ورکړو چې سلام ووایی نه یوازې په قوماندې /hi، مګر هرکله چې بوټ ته لیږل شوي پیغام کې د لاندې ټکو څخه یو څرګند شي: سلام ، سلام ، سلام ، های ، بونجور.

د اوس لپاره موږ به کومه نوې طریقه ونه لیکو، ځکه چې ... موږ دمخه یو میتود لرو چې له مخې یې بوټ موږ ته ښه راغلاست وايي. ټول هغه څه چې موږ یې کولو ته اړتیا لرو د اړتیا وړ فلټر او پیغام سمبالونکی رامینځته کول دي.

کوډ 2: د متن پیغام سمبالونکی او فلټر اضافه کړئ

library(telegram.bot)

# создаём экземпляр класса Updater
updater <- Updater('ТОКЕН ВАШЕГО БОТА')

# Пишем метод для приветсвия
## команда приветвия
say_hello <- function(bot, update) {

  # Имя пользователя с которым надо поздароваться
  user_name <- update$message$from$first_name

  # Отправляем приветсвенное сообщение
  bot$sendMessage(update$message$chat_id, 
                  text = paste0("Моё почтение, ", user_name, "!"),
                  parse_mode = "Markdown",
                  reply_to_message_id = update$message$message_id)

}

# создаём фильтры
MessageFilters$hi <- BaseFilter(function(message) {

  # проверяем, встречается ли в тексте сообщения слова: привет, здравствуй, салют, хай, бонжур
  grepl(x           = message$text, 
        pattern     = 'привет|здравствуй|салют|хай|бонжур',
        ignore.case = TRUE)
  }
)

# создаём обработчик 
hi_hendler <- CommandHandler('hi', say_hello) # обработчик команды hi
hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi)

# добаляем обработчики в диспетчер
updater <- updater + 
             hi_hendler +
             hi_txt_hnd

# запускаем бота
updater$start_polling()

پورته د کوډ مثال پرمخ وړئ ، د ریښتیني نښه سره د 'ستاسو بوټ ټوکن' ځای په ځای کولو وروسته چې تاسو د دې له لارې د بوټ رامینځته کولو پرمهال ترلاسه کوئ. بوټ فیتر (ما د بوټ جوړولو په اړه خبرې وکړې لومړۍ مقاله).

اوس راځئ هڅه وکړو چې بوټ ته څو پیغامونه واستوو چې مخکې لیست شوي د مبارکۍ کلمې لري:
په R کې د ټیلیګرام بوټ لیکل (دوهمه برخه): بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کول

نو ، له هرڅه دمخه ، موږ بوټ ته نه یوازې د سلام ویلو لپاره ، بلکې سلام ته ځواب ویلو ته درس ورکړ. موږ دا د دلیل په کارولو سره ترسره کړل ځواب_to_message_id، کوم چې په میتود کې شتون لري sendMessage()په کوم کې چې تاسو اړتیا لرئ د هغه پیغام ID لیږدئ چې تاسو یې ځواب غواړئ. تاسو کولی شئ د پیغام id په لاندې ډول ترلاسه کړئ: update$message$message_id.

مګر اصلي شی چې موږ یې وکړل د فنکشن په کارولو سره بوټ ته فلټر اضافه کول وو BaseFilter():

# создаём фильтры
MessageFilters$hi <- BaseFilter( 

  # анонимная фильтрующая функция
  function(message) {

    # проверяем, встречается ли в тексте сообщения слова приветствия
    grepl(x           = message$text, 
          pattern     = 'привет|здравствуй|салют|хай|бонжур',
          ignore.case = TRUE)
  }

)

لکه څنګه چې تاسو شاید لیدلي وي، فلټرونه باید اعتراض ته اضافه شي د پیغام فلټرونه، کوم چې په پیل کې دمخه د چمتو شوي فلټرونو کوچنۍ سیټ لري. زموږ په مثال کې، اعتراض ته د پیغام فلټرونه موږ یو عنصر اضافه کړ hiدا یو نوی فلټر دی.

د فعالیت لپاره BaseFilter() تاسو اړتیا لرئ د فلټر فعالیت تیر کړئ. په اصل کې، فلټر یوازې یو فعالیت دی چې د پیغام مثال ترلاسه کوي او بیرته راستنیږي مهال True او یا غلط. زموږ په مثال کې، موږ یو ساده فنکشن لیکلی چې د بنسټیز فعالیت په کارولو سره grepl() د پیغام متن چک کوي او که دا د منظم بیان سره سمون خوري привет|здравствуй|салют|хай|бонжур بیرته راګرځي مهال True.

بیا موږ یو پیغام سمبالونکی جوړوو hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi). لومړی فعالیت دلیل MessageHandler() هغه میتود دی چې هینډلر ته به زنګ ووهي، او دوهم دلیل هغه فلټر دی چې له مخې به یې ویل کیږي. زموږ په قضیه کې، دا هغه فلټر دی چې موږ یې جوړ کړی MessageFilters$hi.

ښه ، په پای کې ، موږ لیږونکي ته رامینځته شوی هینډلر اضافه کوو hi_txt_hnd.

updater <- updater + 
             hi_hendler +
             hi_txt_hnd

لکه څنګه چې ما پورته لیکلي، په بسته کې telegram.bot او اعتراض د پیغام فلټرونه دلته دمخه د جوړ شوي فلټرونو سیټ شتون لري چې تاسو یې کارولی شئ:

  • ټول - ټول پیغامونه
  • متن - متن پیغامونه
  • کمانډ - کمانډونه، i.e. هغه پیغامونه چې پیل کیږي /
  • ځواب - هغه پیغامونه چې بل پیغام ته ځواب وي
  • آډیو - پیغامونه چې د آډیو فایل لري
  • سند - د لیږل شوي سند سره پیغامونه
  • عکس - د لیږل شوي عکسونو سره پیغامونه
  • سټیکر - د لیږل شوي سټیکر سره پیغامونه
  • ویډیو - د ویډیو سره پیغامونه
  • غږ - غږیز پیغامونه
  • اړیکه - هغه پیغامونه چې د کارونکي ټیلیګرام مینځپانګې لري
  • موقعیت - د جیو ځای سره پیغامونه
  • ځای - لیږل شوي پیغامونه
  • لوبه - لوبې

که تاسو غواړئ په یو هینډلر کې ځینې فلټرونه یوځای کړئ یوازې نښه وکاروئ | - د منطقي په توګه یا، او لاسلیک & لکه منطقي И. د مثال په توګه ، که تاسو غواړئ بوټ ورته ورته میتود ته زنګ ووهئ کله چې دا ویډیو ، عکس یا سند ترلاسه کوي ، د پیغام هینډلر رامینځته کولو لپاره لاندې مثال وکاروئ:

handler <- MessageHandler(callback, 
  MessageFilters$video | MessageFilters$photo | MessageFilters$document
)

د پیرامیټونو سره د قوماندې اضافه کول

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

لاندې د بوټ مثال دی چې ټاکل شوې نیټه او هیواد په پام کې نیولو سره تاسو ته د تولید کیلنڈر څخه د ورځې ډول بیرته راګرځوي.

لاندې بوټ د تولید کیلنڈر API کاروي isdayoff.ru.

کوډ 3: بوټ چې د نیټې او هیواد له مخې راپور ورکوي

library(telegram.bot)

# создаём экземпляр класса Updater
updater <- Updater('1165649194:AAFkDqIzQ6Wq5GV0YU7PmEZcv1gmWIFIB_8')

# Пишем метод для приветсвия
## команда приветвия
check_date <- function(bot, update, args) {

  # входящие данные
  day     <- args[1]  # дата
  country <- args[2]  # страна

  # проверка введённых параметров
  if ( !grepl('\d{4}-\d{2}-\d{2}', day) ) {

    # Send Custom Keyboard
    bot$sendMessage(update$message$chat_id, 
                    text = paste0(day, " - некорреткная дата, введите дату в формате ГГГГ-ММ-ДД"),
                    parse_mode = "Markdown")

  } else {
    day <- as.Date(day)
    # переводим в формат POSIXtl
    y <- format(day, "%Y")
    m <- format(day, "%m")
    d <- format(day, "%d")

  }

  # страна для проверки
  ## проверяем задана ли страна
  ## если не задана устанавливаем ru
  if ( ! country %in% c('ru', 'ua', 'by', 'kz', 'us') ) {

    # Send Custom Keyboard
    bot$sendMessage(update$message$chat_id, 
                    text = paste0(country, " - некорретктный код страны, возможнные значения: ru, by, kz, ua, us. Запрошены данные по России."),
                    parse_mode = "Markdown")

    country <- 'ru'

  }

  # запрос данных из API
  # компоновка HTTP запроса
  url <- paste0("https://isdayoff.ru/api/getdata?",
                "year=",  y, "&",
                "month=", m, "&",
                "day=",   d, "&",
                "cc=",    country, "&",
                "pre=1&",
                "covid=1")

  # получаем ответ
  res <- readLines(url)

  # интрепретация ответа
  out <- switch(res, 
                "0"   = "Рабочий день",
                "1"   = "Нерабочий день",
                "2"   = "Сокращённый рабочий день",
                "4"   = "covid-19",
                "100" = "Ошибка в дате",
                "101" = "Данные не найдены",
                "199" = "Ошибка сервиса")

  # отправляем сообщение
  bot$sendMessage(update$message$chat_id, 
                  text = paste0(day, " - ", out),
                  parse_mode = "Markdown")

}

# создаём обработчик 
date_hendler <- CommandHandler('check_date', check_date, pass_args = TRUE)

# добаляем обработчик в диспетчер
updater <- updater + date_hendler

# запускаем бота
updater$start_polling()

پورته د کوډ مثال پرمخ وړئ ، د ریښتیني نښه سره د 'ستاسو بوټ ټوکن' ځای په ځای کولو وروسته چې تاسو د دې له لارې د بوټ رامینځته کولو پرمهال ترلاسه کوئ. بوټ فیتر (ما د بوټ جوړولو په اړه خبرې وکړې لومړۍ مقاله).

موږ یو بوټ رامینځته کړی چې په ارسنال کې یوازې یو میتود لري check_date، دا طریقه د ورته نوم قوماندې لخوا ویل کیږي.

مګر، د قوماندې نوم سربیره، دا طریقه تاسو ته اړتیا لري چې دوه پیرامیټونه، د هیواد کوډ او نیټه داخل کړئ. بیا ، بوټ ګوري چې ایا په ټاکل شوي هیواد کې ورکړل شوې ورځ د اونۍ پای ، لنډه ورځ ، یا د رسمي تولید کیلنڈر سره سم کاري ورځ ده.

د هغه میتود لپاره چې موږ د کمانډ سره اضافي پیرامیټرې منلو لپاره رامینځته کوو ، دلیل وکاروئ pass_args = TRUE په فعالیت کې CommandHandler()، او کله چې یو میتود رامینځته کړئ ، د اړین دلیلونو سربیره bot, تازه یو اختیاري جوړ کړئ - ارګونه. په دې ډول رامینځته شوی میتود به هغه پیرامیټونه ومني چې تاسو د کمانډ نوم وروسته بوټ ته لیږدئ. پیرامیټونه باید د ځای په واسطه جلا شي؛ دوی به میتود ته د متن ویکتور په توګه واستول شي.

راځئ چې زموږ بوټ لانچ او ازموینه وکړو.

په R کې د ټیلیګرام بوټ لیکل (دوهمه برخه): بوټ ته د کمانډ ملاتړ او پیغام فلټرونه اضافه کول

بوټ په شالید کې چل کړئ

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

د دې کولو لپاره، لاندې تشریح شوي الګوریتم تعقیب کړئ:

  1. د بوټ کوډ په فایل کې د تمدید R سره خوندي کړئ. کله چې په RStudio کې کار کوي، دا د مینو له لارې ترسره کیږي د دوتنې، ټیم د دې په توګه خوندي کړئ ....
  2. بن فولډر ته لاره اضافه کړئ، کوم چې په بدل کې په هغه فولډر کې موقعیت لري چې تاسو یې د R ژبه نصب کړې، د لارې متغیر ته، لارښوونې دلته.
  3. یو منظم متن فایل جوړ کړئ په کوم کې چې 1 کرښه ولیکئ: R CMD BATCH C:UsersAlseyDocumentsmy_bot.R... پرځای د C:UsersAlseyDocumentsmy_bot.R خپل بوټ سکریپټ ته لاره ولیکئ. په ورته وخت کې، دا مهمه ده چې د لارې په اوږدو کې هیڅ سیریلیک حروف یا ځایونه شتون نلري، ځکه چې دا ممکن د بوټ چلولو پرمهال ستونزې رامینځته کړي. دا خوندي کړئ، او د هغې توسیع یې بدل کړئ په ډایلولو سره په پچه.
  4. د وینډوز ټاسک شیډولر خلاص کړئ ، د دې کولو لپاره ډیری لارې شتون لري ، د مثال په توګه ، کوم فولډر خلاص کړئ او پته دننه کړئ %windir%system32taskschd.msc /s. د لانچ نورې لارې موندل کیدی شي دلته.
  5. د مهالویش په پورتنۍ ښیې مینو کې ، کلیک وکړئ "کار جوړ کړئ ...".
  6. په "عمومي" ټب کې، خپل کار ته یو دودیز نوم ورکړئ، او سویچ د "ټولو کاروونکو لپاره چلول" حالت ته واړوئ.
  7. د "عمل" ټب ته لاړ شئ، "جوړ کړئ" کلیک وکړئ. په "برنامه یا سکریپټ" ساحه کې، "براؤز" کلیک وکړئ، په دویم ګام کې جوړ شوی ومومئ پچه فایل او په OK کلیک وکړئ.
  8. په OK کلیک وکړئ او که اړتیا وي، د خپل عملیاتي سیسټم حساب لپاره پټنوم دننه کړئ.
  9. په مهالویش کې رامینځته شوی دنده ومومئ ، غوره یې کړئ او په ښکته ښیې کونج کې د "چلولو" تڼۍ کلیک وکړئ.

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

پایلې

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

راتلونکی مقاله به د لا اسانه کار لپاره بوټ ته د کیبورډ اضافه کولو څرنګوالي په اړه وغږیږي.

زما سره ګډون وکړئ telegram и یوتیوب چینلونه

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

Add a comment