R တလင် တယ်လီဂရမ် ဘော့တ်တစ်ခုရေသခဌင်သ (အပိုင်သ 2)- ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ခဌင်သ။

В ယခင်ထုတ်ဝေမဟု ကျလန်ုပ်တို့သည် bot တစ်ခုဖန်တီသနည်သကို ရဟာဖလေခဲ့ပဌီသ အတန်သ၏ဥပမာတစ်ခုကို စတင်ခဲ့သည်။ Bot ၎င်သကိုအသုံသပဌု၍ မက်ဆေ့ချ်ပို့နည်သမျာသကို ရင်သနဟီသလာခဲ့သည်။

ကဆောင်သပါသတလင် ကျလန်ုပ်သည် ကအကဌောင်သအရာကို ဆက်လက်ရေသသာသထာသသောကဌောင့် ကဆောင်သပါသကို ဖတ်ပဌီသမဟသာ စတင်ဖတ်ရဟုရန် အကဌံပဌုလိုပါသည်။ ပထမအပိုင်သ.

ကတစ်ကဌိမ်တလင် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ bot ကို မည်သို့ပဌန်လည်အသက်သလင်သရမည်ကို အဖဌေရဟာပဌီသ ၎င်သတလင် command support ပေါင်သထည့်ကာ အတန်သနဟင့်လည်သ ရင်သနဟီသစေမည်ဖဌစ်သည်။ Updater.

ဆောင်သပါသ၏သင်တန်သကာလအတလင်သ၊ ကျလန်ုပ်တို့သည် ရိုသရဟင်သသော ဘော့တ်မျာသစလာကို ရေသသာသမည်ဖဌစ်ပဌီသ၊ နောက်ပိုင်သတလင် ပေသထာသသော ရက်စလဲနဟင့် နိုင်ငံကုဒ်ပေါ်တလင် အခဌေခံ၍ ပေသထာသသော နိုင်ငံတစ်ခု၏ တစ်ရက်သည် ပိတ်ရက် သို့မဟုတ် ထုတ်လုပ်ရေသပဌက္ခဒိန်အရ အလုပ်ချိန်ဖဌစ်မဖဌစ် ဆုံသဖဌတ်မည်ဖဌစ်သည်။ သို့သော် ယခင်ကဲ့သို့ပင်၊ ဆောင်သပါသ၏ ရည်ရလယ်ချက်မဟာ package interface နဟင့် ရင်သနဟီသစေရန်ဖဌစ်သည်။ telegram.bot သင့်ကိုယ်ပိုင်ပဌဿနာမျာသကိုဖဌေရဟင်သရန်။

R တလင် တယ်လီဂရမ် ဘော့တ်တစ်ခုရေသခဌင်သ (အပိုင်သ 2)- ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ခဌင်သ။

စီသရီသ "ကဌေသနန်သစာရိုက်စက်ကို R ဖဌင့်ရေသသာသခဌင်သ" စီသရီသမဟ ဆောင်သပါသမျာသအာသလုံသ

  1. ကျလန်ုပ်တို့သည် ဘော့တ်တစ်ခုကို ဖန်တီသပဌီသ တယ်လီဂရမ်ဖဌင့် စာတိုပေသပို့ရန် ၎င်သကို အသုံသပဌုသည်။
  2. ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ပါ။

အကဌောင်သအရာ

ဒေတာခလဲခဌမ်သစိတ်ဖဌာခဌင်သကို စိတ်ဝင်စာသပါက ကျလန်ုပ်ကို စိတ်ဝင်စာသပေမည်။ ကလေသနနျသစာ О youtube က ချန်နယ်မျာသ။ အကဌောင်သအရာအမျာသစုသည် R ဘာသာစကာသအတလက် ရည်ရလယ်သည်။

  1. Updater အတန်သ
  2. ကိုင်တလယ်သူမျာသ - ကိုင်တလယ်သူမျာသ
  3. ပထမဆုံသ command ကို bot၊ command handler သို့ထည့်ပါ။
  4. စာသာသမက်ဆေ့ချ် ပရိုဆက်ဆာနဟင့် စစ်ထုတ်မဟုမျာသ
  5. Parameters မျာသဖဌင့် Command မျာသထည့်ခဌင်သ။
  6. နောက်ခံတလင် bot ကို run
  7. ကောက်ချက်

Updater အတန်သ

Updater တယ်လီဂရမ် bot တစ်ခုကို တီထလင်ရန်နဟင့် ဘောင်အောက်ရဟိ အတန်သကို အသုံသပဌုရန် သင့်အတလက် ပိုမိုလလယ်ကူစေသည့် အတန်သတစ်ခုဖဌစ်သည်။ Dispetcher. အတန်သတာဝန် Updater bot မဟ updates မျာသကိုလက်ခံရရဟိရန်ဖဌစ်သည် (ယခင်ဆောင်သပါသတလင်ကရည်ရလယ်ချက်အတလက်နည်သလမ်သကိုကျလန်ုပ်တို့အသုံသပဌုခဲ့သည်။ getUpdates()) နဟင့် ၎င်သတို့ကို ထပ်မံလလဟဲပဌောင်သပါ။ Dispetcher.

၎င်သ၏အလဟည့်၌ Dispetcher သင်ဖန်တီသထာသသော လက်ကိုင်မျာသပါရဟိသည်၊ ဆိုလိုသည်မဟာ၊ အတန်သအရာဝတ္ထု Handler.

ကိုင်တလယ်သူမျာသ - ကိုင်တလယ်သူမျာသ

သင်ထည့်သလင်သထာသသော လက်ကိုင်ကိရိယာမျာသဖဌင့် Dispetcher အမျိုသမျိုသသောဖဌစ်ရပ်မျာသအတလက် bot တုံ့ပဌန်မဟု။ ဒီဆောင်သပါသရေသတဲ့ အချိန်မဟာ telegram.bot အောက်ပါ ကိုင်တလယ်ကိရိယာ အမျိုသအစာသမျာသကို ထည့်သလင်သထာသပါသည်။

  • MessageHandler — မက်ဆေ့ချ်ကိုင်တလယ်သူ
  • CommandHandler - အမိန့်ပေသသူ
  • CallbackQueryHandler — Inline မဟပေသပို့သော ကီသဘုတ်မျာသအတလက် ဒေတာကိုင်တလယ်သူ
  • ErrorHandler — bot မဟ အပ်ဒိတ်မျာသကို တောင်သဆိုသောအခါ အမဟာသကိုင်တလယ်သူ

ပထမဆုံသ command ကို bot၊ command handler သို့ထည့်ပါ။

အကယ်၍ သင်သည် bot မျာသကို ယခင်က မသုံသဖူသဘဲ command သည် ဘာလဲ မသိပါက၊ bot သို့ command မျာသကို forward slash ဖဌင့် ပေသပို့ရပါမည်။ / ရဟေ့ဆက်အဖဌစ်။

ကျလန်ုပ်တို့သည် ရိုသရဟင်သသော command မျာသဖဌင့် စတင်ပါမည်၊ i.e. command နဲ့ hello ပဌောတတ်အောင် bot ကို သင်ပေသရအောင် /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()

အထက်ဖော်ပဌပါ ကုဒ်နမူနာကို လုပ်ဆောင်ပါ၊ 'YOUR BOT TOKEN' ကို ဘော့တ်ကိုဖန်တီသရာတလင် သင်ရရဟိသော တိုကင်အစစ်နဟင့် အစာသထိုသပဌီသနောက်၊ BotFather (ကျလန်တော် bot တစ်ခုကို ဖန်တီသဖို့ ပဌောခဲ့တယ်။ ပထမဆောင်သပါသ).

နည်သလမ်သ start_polling() класса Updaterကုဒ်၏အဆုံသတလင် အသုံသပဌုသည့်၊ ဘော့တ်ထံမဟ အပ်ဒိတ်မျာသကို တောင်သဆိုခဌင်သနဟင့် လုပ်ဆောင်ခဌင်သ၏ အဆုံသမဲ့လဟည့်ကလက်ကို စတင်သည်။

ယခု Telegram ကိုဖလင့်ပဌီသ ကျလန်ုပ်တို့၏ bot သို့ ပထမဆုံသ command ကိုရေသကဌပါစို့ /hi.

R တလင် တယ်လီဂရမ် ဘော့တ်တစ်ခုရေသခဌင်သ (အပိုင်သ 2)- ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ခဌင်သ။

ယခုကျလန်ုပ်တို့၏ bot သည် command ကိုနာသလည်သည်။ /hiငါတို့ကို ဘယ်လိုနဟုတ်ဆက်ရမယ်ဆိုတာ သိတယ်။

ရိုသရဟင်သသော bot တစ်ခုကို တည်ဆောက်ခဌင်သ လုပ်ငန်သစဉ်ကို ဇယာသကလက်အရ အောက်ပါအတိုင်သ ပုံဖော်နိုင်ပါသည်။

R တလင် တယ်လီဂရမ် ဘော့တ်တစ်ခုရေသခဌင်သ (အပိုင်သ 2)- ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ခဌင်သ။

  1. အတန်သ၏ဥပမာတစ်ခုဖန်တီသပါ။ Updater;
  2. ကျလန်ုပ်တို့သည် နည်သလမ်သမျာသကို ဖန်တီသသည်၊ i.e. ကျလန်ုပ်တို့၏ bot မဟလုပ်ဆောင်မည့်လုပ်ဆောင်ချက်မျာသ။ ကုဒ်နမူနာတလင် ကအရာသည် function တစ်ခုဖဌစ်သည်။ say_hello(). bot နည်သလမ်သမျာသအဖဌစ် သင်အသုံသပဌုမည့် လုပ်ဆောင်ချက်မျာသတလင် လိုအပ်သော အကဌောင်သပဌချက်နဟစ်ခုရဟိရမည် - bot О update ကိုရလေသချယ်နိုင်ခလင့်-၊ ငဌင်သခုံမဟုမျာသ. ဆင်ခဌေ botကအရာသည် သင်၏ ဘော့တ်ဖဌစ်သည်၊ ၎င်သ၏အကူအညီဖဌင့် သင်သည် မက်ဆေ့ချ်မျာသကို စာပဌန်ခဌင်သ၊ မက်ဆေ့ချ်ပို့ခဌင်သ သို့မဟုတ် ဘော့တ်အတလက် ရရဟိနိုင်သော အခဌာသနည်သလမ်သမျာသကို အသုံသပဌုနိုင်သည်။ ဆင်ခဌေ update ကို ၎င်သသည် နည်သလမ်သကို အသုံသပဌု၍ ပထမဆောင်သပါသတလင် အသုံသပဌုသူထံမဟ bot မဟရရဟိသည့်အရာဖဌစ်သည်။ getUpdates(). ဆင်ခဌေ ငဌင်သခုံမဟုမျာသ command နဟင့်အတူ သုံသစလဲသူမဟ ပေသပို့သော အပိုဒေတာကို သင်လုပ်ဆောင်နိုင်သည်၊ ကျလန်ုပ်တို့သည် ကအကဌောင်သအရာသို့ အနည်သငယ်ကဌာသောအခါ ပဌန်သလာသပါမည်။
  3. ကျလန်ုပ်တို့သည် လက်ကိုင်ကိရိယာမျာသကို ဖန်တီသပေသသည်၊ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် ယခင်အဆင့်တလင် ဖန်တီသထာသသော နည်သလမ်သမျာသနဟင့် အသုံသပဌုသူ လုပ်ဆောင်ချက်မျာသ အချို့ကို ဆက်စပ်ပေသပါသည်။ အခဌေခံအာသဖဌင့်၊ ကိုင်တလယ်သူသည် အစပျိုသတစ်ခုဖဌစ်ပဌီသ အချို့သော bot လုပ်ဆောင်ချက်ကို ခေါ်သည့် ဖဌစ်ရပ်တစ်ခုဖဌစ်သည်။ ကျလန်ုပ်တို့၏ဥပမာတလင်၊ ထိုသို့သောအစပျိုသမဟုတစ်ခုသည် အမိန့်တစ်ခုပေသပို့နေသည်။ /hiနဟင့် အဖလဲ့မဟ အကောင်အထည်ဖော်သည်။ hi_hendler <- CommandHandler('hi', say_hello). ပထမဆုံသ function အငဌင်သအခုံ CommandHandler() ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ သင်သည် command ကိုသတ်မဟတ်ရန်ခလင့်ပဌုသည်။ hibot က တုံ့ပဌန်ပါလိမ့်မယ်။ ဒုတိယအငဌင်သအခုံသည် သင့်အာသ bot method ကိုသတ်မဟတ်ခလင့်ပဌုသည်၊ ကျလန်ုပ်တို့သည် method ကိုခေါ်ပါမည်။ say_helloအသုံသပဌုသူက ပထမအငဌင်သအခုံတလင် သတ်မဟတ်ထာသသည့် command ကို ခေါ်ပါက၊
  4. ထို့နောက်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ class instance ၏ dispatcher သို့ ဖန်တီသထာသသော handler ကို ပေါင်သထည့်ပါသည်။ Updater. ကိုင်တလယ်သူအာသ နည်သလမ်သမျာသစလာဖဌင့် သင်ထည့်သလင်သနိုင်သည်၊ အထက်ဖော်ပဌပါ ဥပမာတလင်၊ ကျလန်ုပ်သည် အရိုသရဟင်သဆုံသတစ်ခုကို နိမိတ်လက္ခဏာကို အသုံသပဌုထာသသည်။ +, IE updater <- updater + hi_hendler. နည်သလမ်သကို အသုံသပဌု၍လည်သ အလာသတူ လုပ်ဆောင်နိုင်သည်။ add_handler()အတန်သပိုင်၊ Dispatcherကကဲ့သို့သောနည်သလမ်သကိုသင်တလေ့နိုင်သည်- updater$dispatcher$add_handler();
  5. command ကိုအသုံသပဌု၍ bot ကိုဖလင့်ပါ။ start_polling().

စာသာသမက်ဆေ့ချ် ပရိုဆက်ဆာနဟင့် စစ်ထုတ်မဟုမျာသ

bot သို့ command မျာသ မည်သို့ပေသပို့ရမည်ကို ကျလန်ုပ်တို့ ရဟာဖလေတလေ့ရဟိခဲ့သော်လည်သ တစ်ခါတစ်ရံတလင် command မျာသကိုသာမက ပုံမဟန်စာသာသမက်ဆေ့ခ်ျအချို့ကိုပါ တုံ့ပဌန်ရန် bot ကို လိုအပ်ပါသည်။ ၎င်သကိုလုပ်ဆောင်ရန် သင်သည် မက်ဆေ့ချ်ကိုင်တလယ်သူမျာသကို − အသုံသပဌုရန်လိုအပ်သည်။ MessageHandler.

သာမန် MessageHandler ဝင်လာသော မက်ဆေ့ဂျ်မျာသအာသလုံသကို လုံသဝတုံ့ပဌန်ပါမည်။ ထို့ကဌောင့်၊ မက်ဆေ့ချ်ကိုင်တလယ်သူမျာသကို စစ်ထုတ်မဟုမျာသနဟင့် တလဲသုံသလေ့ရဟိသည်။ ဘော့တ်ကို အမိန့်ပေသရုံသာမက နဟုတ်ဆက်စကာသပဌောတတ်အောင် သင်ပေသကဌပါစို့ /hibot သို့ ပေသပို့သော မက်ဆေ့ဂျ်တလင် အောက်ပါစကာသလုံသမျာသ ပေါ်လာသည့်အခါတိုင်သ- hello, hello, salute, hai, bonjour.

လောလောဆယ်တော့ နည်သလမ်သသစ်တလေ မရေသတော့ဘူသဆိုတော့... bot က ကျလန်တော်တို့ကို နဟုတ်ဆက်တဲ့ နည်သလမ်သတစ်ခု ရဟိပဌီသသာသပါ။ ကျလန်ုပ်တို့လုပ်ရန် လိုအပ်သည်မဟာ လိုအပ်သော filter နဟင့် message handler ကိုဖန်တီသပါ။

ကုဒ် 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()

အထက်ဖော်ပဌပါ ကုဒ်နမူနာကို လုပ်ဆောင်ပါ၊ 'YOUR BOT TOKEN' ကို ဘော့တ်ကိုဖန်တီသရာတလင် သင်ရရဟိသော တိုကင်အစစ်နဟင့် အစာသထိုသပဌီသနောက်၊ BotFather (ကျလန်တော် bot တစ်ခုကို ဖန်တီသဖို့ ပဌောခဲ့တယ်။ ပထမဆောင်သပါသ).

အခု စောစောကဖော်ပဌထာသတဲ့ နဟုတ်ခလန်သဆက်စကာသတလေပါတဲ့ bot တလေကို မက်ဆေ့ချ်ပေါင်သမျာသစလာ ပို့ကဌည့်ရအောင်။
R တလင် တယ်လီဂရမ် ဘော့တ်တစ်ခုရေသခဌင်သ (အပိုင်သ 2)- ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ခဌင်သ။

ဒါကဌောင့် ပထမဆုံသအနေနဲ့ bot ကို နဟုတ်ဆက်ရုံသာမကဘဲ နဟုတ်ဆက်ခဌင်သကိုလည်သ တုံ့ပဌန်တတ်အောင် သင်ပေသခဲ့ပါတယ်။ အငဌင်သအခုံသုံသပဌီသ ဒါကိုလုပ်ခဲ့ကဌတယ်။ အကဌောင်သပဌန်_to_message_idနည်သလမ်သတလင် ရရဟိနိုင်ပါသည်။ sendMessage()သင်တုံ့ပဌန်လိုသော မက်ဆေ့ဂျ်၏ id ကို လလဟဲပဌောင်သရန် လိုအပ်သည်။ ကကဲ့သို့သော မက်ဆေ့ခ်ျအိုင်ဒီကို သင်ရနိုင်သည်- update$message$message_id.

သို့သော် ကျလန်ုပ်တို့လုပ်ဆောင်ခဲ့သည့် အဓိကအရာမဟာ လုပ်ဆောင်ချက်ကိုအသုံသပဌု၍ bot သို့ စစ်ထုတ်မဟုတစ်ခုထည့်ခဌင်သဖဌစ်သည်။ BaseFilter():

# сПзЎаёЌ фОльтры
MessageFilters$hi <- BaseFilter( 

  # аМПМОЌМая фОльтрующая фуМкцОя
  function(message) {

    # прПверяеЌ, встречается лО в тексте сППбщеМОя слПва прОветствОя
    grepl(x           = message$text, 
          pattern     = 'прОвет|зЎравствуй|салют|хай|бПМжур',
          ignore.case = TRUE)
  }

)

သင်သတိပဌုမိထာသသည့်အတိုင်သ၊ ဇကာမျာသကို အရာဝတ္ထုထဲသို့ ထည့်ရန် လိုအပ်ပါသည်။ MessageFiltersအစပိုင်သတလင် အဆင်သင့်လုပ်ထာသသော စစ်ထုတ်မဟုမျာသ အနည်သငယ်ပါရဟိပဌီသဖဌစ်သည့်၊ ကျလန်ုပ်တို့၏ဥပမာတလင်၊ အရာဝတ္ထုဆီသို့ MessageFilters ကျလန်ုပ်တို့သည် အစိတ်အပိုင်သတစ်ခုကို ထည့်ထာသသည်။ hiကအရာသည် စစ်ထုတ်မဟုအသစ်တစ်ခုဖဌစ်သည်။

လုပ်ဆောင်ရန် BaseFilter() filter function ကိုသင်ဖဌတ်သန်သရန်လိုအပ်သည်။ အခဌေခံအာသဖဌင့်၊ filter သည် message instance ကိုလက်ခံရရဟိပဌီသ return ပဌန်သည့် function တစ်ခုမျဟသာဖဌစ်သည်။ TRUE သို့မဟုတ် အတုအယောငျ. ကျလန်ုပ်တို့၏ဥပမာတလင်၊ ကျလန်ုပ်တို့သည် အခဌေခံလုပ်ဆောင်ချက်ကိုအသုံသပဌု၍ ရိုသရဟင်သသောလုပ်ဆောင်ချက်ကို ရေသသာသခဲ့သည်။ grepl() မက်ဆေ့ချ်စာသာသကို စစ်ဆေသပဌီသ ၎င်သသည် ပုံမဟန်ဖော်ပဌချက်နဟင့် ကိုက်ညီမဟုရဟိမရဟိ စစ်ဆေသပါ။ прОвет|зЎравствуй|салют|хай|бПМжур ပဌန်လာသည် TRUE.

ထို့နောက် ကျလန်ုပ်တို့သည် မက်ဆေ့ဂျ်ကိုင်တလယ်သူကို ဖန်တီသသည်။ hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi). ပထမဆုံသ function အငဌင်သအခုံ MessageHandler() ကိုင်တလယ်သူကိုခေါ်မည့်နည်သလမ်သဖဌစ်ပဌီသ ဒုတိယအငဌင်သအခုံမဟာ ၎င်သကိုခေါ်မည့် filter ဖဌစ်သည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ၎င်သသည်ကျလန်ုပ်တို့ဖန်တီသထာသသော filter ဖဌစ်သည်။ MessageFilters$hi.

ကောင်သပဌီ၊ အဆုံသတလင်၊ ကျလန်ုပ်တို့သည် ဖန်တီသထာသသောကိုင်တလယ်သူအာသ ပေသပို့သူထံ ပေါင်သထည့်သည်။ hi_txt_hnd.

updater <- updater + 
             hi_hendler +
             hi_txt_hnd

အထက်မဟာ ရေသခဲ့သလိုပဲ အထုပ်ထဲမဟာ telegram.bot အရာဝတ္ထု MessageFilters သင်အသုံသပဌုနိုင်သော built-in filter အစုံရဟိပဌီသသာသဖဌစ်သည်-

  • အာသလုံသ — မက်ဆေ့ချ်မျာသအာသလုံသ
  • စာသာသ — စာသာသမက်ဆေ့ခ်ျမျာသ
  • command — ညလဟန်ကဌာသချက်မျာသ ၊ i.e. မက်ဆေ့ချ်မျာသဖဌင့် စတင်သည်။ /
  • စာပဌန်သည် — အခဌာသမက်ဆေ့ချ်ကို ပဌန်ကဌာသသည့် စာတိုမျာသ
  • အသံ — အသံဖိုင်တစ်ခုပါရဟိသော မက်ဆေ့ချ်မျာသ
  • စာရလက်စာတမ်သ — ပေသပို့ထာသသော စာရလက်စာတမ်သပါသော မက်ဆေ့ချ်မျာသ
  • ဓာတ်ပုံ - ပေသပို့ထာသသောပုံမျာသနဟင့်အတူ မက်ဆေ့ချ်မျာသ
  • စတစ်ကာ — ပေသပို့ထာသသောစတစ်ကာပါသော မက်ဆေ့ချ်မျာသ
  • ဗီဒီယို — ဗီဒီယိုပါသော မက်ဆေ့ချ်မျာသ
  • အသံ - အသံမက်ဆေ့ချ်မျာသ
  • ဆက်သလယ်ရန် - အသုံသပဌုသူ၏ ကဌေသနန်သစာပါ အကဌောင်သအရာမျာသ ပါဝင်သော မက်ဆေ့ချ်မျာသ
  • တည်နေရာ — ပထဝီတည်နေရာနဟင့် မက်ဆေ့ချ်မျာသ
  • နေရာ - ထပ်ဆင့်ပို့ထာသသော မက်ဆေ့ချ်မျာသ
  • ဂိမ်သ — ဂိမ်သမျာသ

အချို့သော filter မျာသကို handler တစ်ခုတလင် ပေါင်သစပ်လိုပါက ဆိုင်သဘုတ်ကို အသုံသပဌုပါ။ | - ယုတ္တိအဖဌစ် OR၊ နဟင့် လက်မဟတ်ရေသထိုသပါ။ & ယုတ္တိရဟိသကဲ့သို့ И. ဥပမာအာသဖဌင့်၊ သင်သည် bot သည် ဗီဒီယို၊ ပုံ သို့မဟုတ် စာရလက်စာတမ်သကို လက်ခံရရဟိသည့်အခါ တူညီသောနည်သလမ်သကိုခေါ်ဆိုလိုပါက၊ မက်ဆေ့ချ်ကိုင်တလယ်သူဖန်တီသရန် အောက်ပါဥပမာကို အသုံသပဌုပါ။

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

Parameters မျာသဖဌင့် Command မျာသထည့်ခဌင်သ။

ဘယ် commands တလေလဲ၊ အဲဒါတလေကို ဘယ်လိုဖန်တီသရမလဲ၊ လိုချင်တဲ့ command ကို execute လုပ်ဖို့အတလက် bot ကို ဘယ်လိုတလန်သရမလဲဆိုတာကို ကျလန်တော်တို့ သိပဌီသသာသပါ။ သို့သော် အချို့ကိစ္စမျာသတလင်၊ command name အပဌင်၊ ၎င်သကို execute လုပ်ရန် data အချို့ကို pass ပေသရန်လိုအပ်ပါသည်။

အောက်တလင်ဖော်ပဌထာသသော ရက်စလဲနဟင့် နိုင်ငံတစ်ခုပေသထာသသော ထုတ်လုပ်မဟုပဌက္ခဒိန်မဟ သင့်အာသ နေ့အမျိုသအစာသကို ပဌန်ပေသသည့် bot ၏ ဥပမာတစ်ခုဖဌစ်သည်။

အောက်ဖော်ပဌပါ ဘော့တ်သည် ထုတ်လုပ်မဟုပဌက္ခဒိန် 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()

အထက်ဖော်ပဌပါ ကုဒ်နမူနာကို လုပ်ဆောင်ပါ၊ 'YOUR BOT TOKEN' ကို ဘော့တ်ကိုဖန်တီသရာတလင် သင်ရရဟိသော တိုကင်အစစ်နဟင့် အစာသထိုသပဌီသနောက်၊ BotFather (ကျလန်တော် bot တစ်ခုကို ဖန်တီသဖို့ ပဌောခဲ့တယ်။ ပထမဆောင်သပါသ).

ကျလန်ုပ်တို့သည် ၎င်သ၏လက်နက်တိုက်တလင် နည်သလမ်သတစ်ခုသာရဟိသည့် ဘော့တ်တစ်ခုကို ဖန်တီသခဲ့သည်။ check_dateကနည်သလမ်သကို တူညီသောအမည်၏ အမိန့်ဖဌင့် ခေါ်သည်။

သို့သော်၊ အမိန့်အမည်အပဌင်၊ ကနည်သလမ်သသည် သင့်အာသ ဘောင်နဟစ်ခု၊ နိုင်ငံကုဒ်နဟင့် ရက်စလဲတို့ကို ထည့်သလင်သရန် လိုအပ်သည်။ ထို့နောက်၊ ဘော့တ်သည် သတ်မဟတ်ထာသသောနိုင်ငံရဟိ ပေသထာသသည့်နေ့သည် တနင်္ဂနလေ၊ အတိုချုံသသောနေ့ သို့မဟုတ် တရာသဝင်ထုတ်လုပ်ရေသပဌက္ခဒိန်အရ အလုပ်ချိန်ဟုတ်မဟုတ် စစ်ဆေသသည်။

command နဟင့်အတူ နောက်ထပ် parameter မျာသကို လက်ခံရန် ကျလန်ုပ်တို့ ဖန်တီသထာသသော နည်သလမ်သအတလက်၊ argument ကို အသုံသပဌုပါ။ pass_args = TRUE function ထဲမဟာ CommandHandler()နည်သလမ်သတစ်ခု ဖန်တီသသည့်အခါ၊ လိုအပ်သော အကဌောင်သပဌချက်မျာသအပဌင် bot, update ကို ရလေသချယ်ခလင့်တစ်ခုကို ဖန်တီသပါ - ငဌင်သခုံမဟုမျာသ. ကနည်သဖဌင့် ဖန်တီသထာသသောနည်သလမ်သသည် command name ပဌီသနောက် bot သို့ သင်ပေသပို့သော ဘောင်မျာသကို လက်ခံမည်ဖဌစ်သည်။ ဘောင်မျာသကို space တစ်ခုဖဌင့် ပိုင်သခဌာသထာသရမည်ဖဌစ်ပဌီသ ၎င်သတို့ကို စာသာသ vector အဖဌစ် နည်သလမ်သသို့ ပေသပို့မည်ဖဌစ်သည်။

ကျလန်ုပ်တို့၏ bot ကို စတင်ပဌီသ စမ်သသပ်ကဌပါစို့။

R တလင် တယ်လီဂရမ် ဘော့တ်တစ်ခုရေသခဌင်သ (အပိုင်သ 2)- ဘော့တ်သို့ အမိန့်ပေသမဟုနဟင့် မက်ဆေ့ဂျ် စစ်ထုတ်မဟုမျာသကို ထည့်ခဌင်သ။

နောက်ခံတလင် bot ကို run

ပဌီသမဌောက်ရန် နောက်ဆုံသအဆင့်မဟာ bot ကို နောက်ခံတလင် စတင်ရန်ဖဌစ်သည်။

ဒါကိုလုပ်ဖို့၊ အောက်မဟာဖော်ပဌထာသတဲ့ algorithm ကိုလိုက်နာပါ-

  1. Extension R ပါသော ဘော့ကုဒ်ကို ဖိုင်တစ်ခုတလင် သိမ်သဆည်သပါ။ RStudio တလင် အလုပ်လုပ်သောအခါ၊ ၎င်သကို မီနူသမဟတဆင့် လုပ်ဆောင်သည်။ ဖိုင်မဟတ်တမ်သ, အသင်သအဖလဲ့ အဖဌစ်သိမ်သဆည်သပါ ....
  2. R ဘာသာစကာသကို သင်ထည့်သလင်သထာသသည့် ဖိုင်တလဲတလင် တည်ရဟိသည့် bin ဖိုဒါသို့ လမ်သကဌောင်သကို ပေါင်သထည့်ပါ၊ လမ်သကဌောင်သပဌောင်သနိုင်သော၊ လမ်သညလဟန်ချက်မျာသ၊ ဒီမဟာ.
  3. 1 စာကဌောင်သရေသသည့် ပုံမဟန်စာသာသဖိုင်ကို ဖန်တီသပါ- R CMD BATCH C:UsersAlseyDocumentsmy_bot.R... အစာသ C:UsersAlseyDocumentsmy_bot.R သင်၏ bot script သို့လမ်သကဌောင်သကိုရေသပါ။ တစ်ချိန်တည်သမဟာပင်၊ အကဌောင်သမဟာ လမ်သတစ်လျဟောက်တလင် Cyrillic စာလုံသမျာသ သို့မဟုတ် နေရာလလတ်မျာသမရဟိရန် အရေသကဌီသပါသည်။ ၎င်သသည် bot ကို run သောအခါတလင်ပဌဿနာမျာသဖဌစ်ပေါ်စေနိုင်သည်။ ၎င်သကို သိမ်သဆည်သပဌီသ ၎င်သ၏ extension ဖဌင့် အစာသထိုသပါ။ TXT အပေါ် လင်သနို့.
  4. Windows Task Scheduler ကိုဖလင့်ပါ၊ ၎င်သကိုပဌုလုပ်ရန်နည်သလမ်သမျာသစလာရဟိသည်၊ ဥပမာ၊ မည်သည့်ဖိုင်တလဲကိုဖလင့်ပဌီသ လိပ်စာထဲသို့ထည့်ပါ။ %windir%system32taskschd.msc /s. အခဌာသပစ်လလဟတ်နည်သမျာသကို တလေ့နိုင်သည်။ ဒီမဟာ.
  5. အချိန်ဇယာသဆလဲသူ၏ ညာဘက်အပေါ်ထောင့်ရဟိ "အလုပ်တစ်ခုကို ဖန်တီသပါ..." ကိုနဟိပ်ပါ။
  6. "အထလေထလေ" တက်ဘ်တလင်၊ သင့်လုပ်ငန်သတာဝန်ကို စိတ်ကဌိုက်အမည်ပေသကာ ခလုတ်ကို "အသုံသပဌုသူအာသလုံသအတလက် အသုံသပဌုရန်" အခဌေအနေသို့ ပဌောင်သပါ။
  7. "Actions" tab ကိုသလာသပဌီသ "Create" ကိုနဟိပ်ပါ။ "Program သို့မဟုတ် script" အကလက်တလင်၊ "Browse" ကိုနဟိပ်ပဌီသ ဒုတိယအဆင့်တလင် ဖန်တီသထာသသည့်အရာကို ရဟာပါ။ လင်သနို့ ဖိုင်ကို OK နဟိပ်ပါ။
  8. OK ကိုနဟိပ်ပဌီသ လိုအပ်ပါက သင့်လည်ပတ်မဟုစနစ်အကောင့်အတလက် စကာသဝဟက်ကိုထည့်ပါ။
  9. အချိန်ဇယာသဆလဲသူတလင် ဖန်တီသထာသသော အလုပ်တစ်ခုကို ရဟာပါ၊ ၎င်သကို ရလေသချယ်ပဌီသ ညာဘက်အောက်ထောင့်ရဟိ “Run” ခလုတ်ကို နဟိပ်ပါ။

ကျလန်ုပ်တို့၏ ဘော့တ်သည် နောက်ခံတလင် အလုပ်လုပ်ပဌီသ သင်လုပ်ဆောင်မဟုကို ရပ်တန့်သည်အထိ သို့မဟုတ် ၎င်သကို စတင်ခဲ့သည့် သင်၏ PC သို့မဟုတ် ဆာဗာကို ပိတ်သည်အထိ လုပ်ဆောင်ပါမည်။

ကောက်ချက်

ကဆောင်သပါသတလင်၊ မက်ဆေ့ချ်မျာသပို့ရုံသာမက အဝင်မက်ဆေ့ချ်မျာသနဟင့် အမိန့်မျာသကို တုံ့ပဌန်နိုင်သည့် ပဌည့်စုံသော bot ကို မည်သို့ရေသရမည်ကို ကျလန်ုပ်တို့ ရဟာဖလေတလေ့ရဟိခဲ့သည်။ ရရဟိလာတဲ့ အသိပညာက သင့်ပဌဿနာအမျာသစုကို ဖဌေရဟင်သဖို့ လုံလောက်နေပါပဌီ။

နောက်ဆောင်သပါသတလင် ပိုမိုအဆင်ပဌေစေရန်အတလက် bot သို့ ကီသဘုတ်ထည့်နည်သကို ဆလေသနလေသပါမည်။

ကျလန်ုပ်ထံ စာရင်သသလင်သပါ။ ကလေသနနျသစာ О youtube က ချန်နယ်မျာသ။

source: www.habr.com

မဟတ်ချက် Add