Te tuhi i te karetao waea i roto i te R (waahanga 2): Te taapiri i te tautoko whakahau me nga whiriwhiringa karere ki te karetao

В Tuhinga o mua I whakaaro matou me pehea te hanga karetao, i arawhitia he tauira o te karaehe Bot me te mohio ki nga tikanga tuku karere ma te whakamahi.

I roto i tenei tuhinga ka haere tonu ahau i tenei kaupapa, no reira ka tūtohu ahau kia timata koe ki te panui i tenei tuhinga i muri i te panui te waahanga tuatahi.

I tenei wa ka whakaaro tatou me pehea te whakaora i to tatou bot me te taapiri i te tautoko whakahau ki a ia, me te mohio ano ki te akomanga Updater.

I te wa o te tuhinga, ka tuhia e matou etahi bots ngawari, ko te mea whakamutunga, i runga i te ra me te waehere whenua, ka whakatau mena he wiki te ra i tetahi whenua, he ra mahi ranei e ai ki te maramataka whakaputa. Engari, pera i mua, ko te kaupapa o te tuhinga ko te whakamohio ia koe ki te atanga o te kete telegram.bot ki te whakaoti i ou ake raruraru.

Te tuhi i te karetao waea i roto i te R (waahanga 2): Te taapiri i te tautoko whakahau me nga whiriwhiringa karere ki te karetao

Nga tuhinga katoa mai i te raupapa "Te tuhi i te karetao waea ki R"

  1. Ka hangaia e matou he karetao ka whakamahia hei tuku karere ma te waea waea
  2. Tāpirihia te tautoko whakahau me nga whiriwhiringa karere ki te karetao

Tuhinga

Mena kei te pirangi koe ki te tātari raraunga, ka aro pea koe ki taku waea и youtube hongere. Ko te nuinga o nga korero e whakatapua ana ki te reo R.

  1. Ko te akomanga kaiwhakahou
  2. Kaihautu - kaikawe
  3. Tāpirihia te whakahau tuatahi ki te karetao, te kaiwhakahaere whakahau
  4. Tukatuka karere kuputuhi me nga whiriwhiringa
  5. Te taapiri i nga tono me nga tawhā
  6. Whakahaerehia te karetao ki muri
  7. mutunga

Ko te akomanga kaiwhakahou

Updater he karaehe e ngawari ake ana ki a koe ki te whakawhanake i te karetao waea, me te whakamahi i te karaehe i raro i te awhi Dispetcher. Taumahi akomanga Updater Ko te whiwhi whakahōutanga mai i te karetao (i te tuhinga o mua i whakamahia e matou te tikanga mo tenei kaupapa getUpdates()), ka whakawhiti atu ki Dispetcher.

I tona hurihanga Dispetcher kei roto ko nga kaikawe i hanga e koe, ara. taonga akomanga Handler.

Kaihautu - kaikawe

Me nga kaihautu ka taapirihia e koe Dispetcher tauhohenga bot ki nga momo huihuinga. I te wa i tuhia ai tenei tuhinga i roto i telegram.bot Ko nga momo kaihautu e whai ake nei kua taapirihia:

  • MessageHandler — Kaihautu Karere
  • CommandHandler — Kaihautu whakahau
  • CallbackQueryHandler — Kaihautu Raraunga mo nga papapātuhi i tukuna mai i Roraina
  • ErrorHandler - Kaihautu hapa i te tono whakahōutanga mai i te karetao

Tāpirihia te whakahau tuatahi ki te karetao, te kaiwhakahaere whakahau

Mena kaore koe i whakamahi i nga karetao i mua atu karekau koe e mohio he aha te whakahau, katahi ka tukuna nga whakahau ki te karetao ma te whakamahi i te rītaha whakamua / hei prefix.

Ka timata tatou ki nga whakahau ngawari, i.e. kia ako tatou i to tatou bot ki te oha i runga i te whakahau /hi.

Waehere 1: Te whakaako i te karetao ki te oha

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

Whakahaerehia te tauira waehere i runga ake nei, i muri i te whakakapi i te 'TOKEN BOT TOKEN' ki te tohu pono i riro i a koe i te wa e hanga ana i te karetao ma Matua Matua (I korero ahau mo te hanga karetao ki roto tuhinga tuatahi).

Tikanga start_polling() akomanga Updater, e whakamahia ana i te mutunga o te waehere, ka timata i te waahi mutunga kore o te tono me te tukatuka i nga whakahou mai i te bot.

Inaianei me whakatuwhera a Telegram ka tuhi i te whakahau tuatahi ki ta maatau bot /hi.

Te tuhi i te karetao waea i roto i te R (waahanga 2): Te taapiri i te tautoko whakahau me nga whiriwhiringa karere ki te karetao

Inaianei kua mohio to tatou bot ki te whakahau /hi, e mohio ana ki te oha ki a matou.

Ko te tikanga, ka taea te whakaatu i te tikanga o te hanga karetao ngawari penei.

Te tuhi i te karetao waea i roto i te R (waahanga 2): Te taapiri i te tautoko whakahau me nga whiriwhiringa karere ki te karetao

  1. Waihangahia he tauira o te akomanga Updater;
  2. Ka hangaia e matou nga tikanga, i.e. nga mahi ka mahia e to maatau bot. I roto i te tauira waehere he mahi tenei say_hello(). Ko nga mahi ka whakamahia e koe hei tikanga bot me rua nga tohenga e hiahiatia ana - BOT и whakahou, me tetahi kowhiri - Tuhinga o mua. Tohenga BOT, Ko to bot tenei, me tana awhina ka taea e koe te whakautu ki nga karere, te tuku karere, te whakamahi ranei i etahi atu tikanga e waatea ana ki te bot. Tohenga whakahou koinei te mea i riro mai i te karetao mai i te kaiwhakamahi, inaa, ko ta matou i whiwhi i te tuhinga tuatahi ma te whakamahi i te tikanga getUpdates(). Tohenga Tuhinga o mua ka taea e koe te tukatuka i nga raraunga taapiri i tukuna e te kaiwhakamahi me te whakahau, ka hoki mai ano matou ki tenei kaupapa i muri mai;
  3. Ka hangaia e matou nga kaihautu, i.e. Ka honoa e matou etahi mahi a te kaiwhakamahi me nga tikanga i hangaia i te taahiraa o mua. Ko te mea nui, ko te kaikawe he keu, he huihuinga e kii ana i etahi mahi bot. I roto i ta maatau tauira, ko taua keu te tuku whakahau /hi, ka whakatinanahia e te roopu hi_hendler <- CommandHandler('hi', say_hello). Tohenga mahi tuatahi CommandHandler() ka taea e koe ki te whakapūtā he whakahau, i roto i to tatou take hi, ka whakautu te bot. Ko te tautohetohe tuarua ka taea e koe te tohu i te tikanga bot, ka karangahia e matou te tikanga say_hello, ka mahia mena ka karangahia e te kaiwhakamahi te whakahau i tohua i te tohenga tuatahi;
  4. I muri mai, ka taapirihia e matou te kaihautu i hangaia ki te kaikawe o ta maatau akomanga Updater. Ka taea e koe te taapiri i nga kaikawe i roto i nga huarahi maha; i roto i te tauira i runga ake nei, i whakamahia e au te mea ngawari, ma te whakamahi i te tohu +, i.e. updater <- updater + hi_hendler. Ka taea ano te mahi ma te whakamahi i te tikanga add_handler(), no te karaehe Dispatcher, ka kitea e koe tenei tikanga penei: updater$dispatcher$add_handler();
  5. Whakarewahia te karetao ma te whakamahi i te whakahau start_polling().

Tukatuka karere kuputuhi me nga whiriwhiringa

I whakaaro matou me pehea te tuku whakahau ki te karetao, engari i etahi wa ka hiahia matou ki te karetao ki te whakautu kaua ki nga whakahau anake, engari ki etahi karere kuputuhi auau. Hei mahi i tenei me whakamahi koe i nga kaikawe karere − Kaihautu Karere.

noa Kaihautu Karere ka whakautu ki nga karere taumai katoa. Na reira, ka whakamahia nga kaikawe karere me nga whiriwhiringa. Me whakaako te karetao ki te oha ehara i te whakahau anake /hi, engari ina puta tetahi o nga kupu e whai ake nei i roto i te karere i tukuna ki te bot: tena koe, tena koe, tena koe, hai, bonjour.

Inaianei e kore matou e tuhi tikanga hou, na te mea... Kei a matou he tikanga e mihi ai te karetao ki a matou. Ko nga mea katoa hei mahi maatau ko te hanga i te tātari me te kaikawe karere e hiahiatia ana.

Waehere 2: Tāpirihia he kaikawe karere kuputuhi me te tātari

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

Whakahaerehia te tauira waehere i runga ake nei, i muri i te whakakapi i te 'TOKEN BOT TOKEN' ki te tohu pono i riro i a koe i te wa e hanga ana i te karetao ma Matua Matua (I korero ahau mo te hanga karetao ki roto tuhinga tuatahi).

Inaianei me ngana ki te tuku i te karetao etahi karere kei roto nga kupu mihi kua whakarārangihia i mua ake nei:
Te tuhi i te karetao waea i roto i te R (waahanga 2): Te taapiri i te tautoko whakahau me nga whiriwhiringa karere ki te karetao

Na, ko te tuatahi, i whakaakona te karetao kia kaua e oha noa, engari ki te whakautu ki te mihi. I mahia e matou ma te whakamahi i te tautohetohe whakautu_ki_karere_id, e wātea ana i roto i te tikanga sendMessage(), ka hiahia koe ki te whakawhiti i te id o te karere e hiahia ana koe ki te whakautu. Ka taea e koe te tiki i te id karere penei: update$message$message_id.

Engari ko te mea nui i mahia e matou ko te taapiri i tetahi tātari ki te karetao ma te whakamahi i te mahi BaseFilter():

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

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

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

)

Kua kite pea koe, me taapiri nga whiriwhiringa ki te ahanoa MessageFilters, i te tuatahi kei roto he huinga iti o nga whiriwhiringa kua rite. I roto i to tatou tauira, ki te ahanoa MessageFilters i tapiritia e matou he huānga hi, he tātari hou tenei.

Ki te mahi BaseFilter() me tuku e koe te mahi tātari. Ko te tikanga, he mahi noa te tātari ka whiwhi tauira karere ka hoki mai Tuhinga ranei FALSE. I roto i to maatau tauira, i tuhia e matou he mahi ngawari, ma te whakamahi i te mahi taketake grepl() ka taki i te tuhinga o te karere me te mea e rite ana ki te korero o ia wa привет|здравствуй|салют|хай|бонжур hoki mai Tuhinga.

I muri mai ka hanga e matou he kaikawe korero hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi). Tohenga mahi tuatahi MessageHandler() Ko te tikanga ka karanga i te kaihautu, ko te tohenga tuarua ko te tātari e kiia ai. I a maatau, koinei te tātari i hangaia e matou MessageFilters$hi.

Ana, i te mutunga, ka taapirihia e matou ki te kaikawe te kaihautu i hangaia hi_txt_hnd.

updater <- updater + 
             hi_hendler +
             hi_txt_hnd

Ka rite ki taku tuhituhi i runga ake nei, i roto i te kete telegram.bot me te whakahee MessageFilters He huinga whiriwhiringa hanga-roto ka taea e koe te whakamahi:

  • katoa — Karere katoa
  • kuputuhi — Karere kuputuhi
  • whakahau — Commands, i.e. karere ka timata ki /
  • whakautu — Nga Karere he whakautu ki tetahi atu karere
  • ororongo — Nga Karere kei roto he konae oro
  • tuhinga — Nga Karere me te tuhinga kua tukuna
  • whakaahua - Karere me nga whakaahua kua tukuna
  • whakapiri — Karere me te whakapiri whakapiri
  • ataata — Karere me te ataata
  • reo - Karere reo
  • whakapā - Nga Karere kei roto nga korero waea a te kaiwhakamahi
  • wāhi - Karere me te geolocation
  • te waahi - Nga Karere Whakamua
  • kēmu — Games

Mena kei te pirangi koe ki te whakakotahi i etahi whiriwhiringa ki tetahi kaihautu me whakamahi noa i te tohu | - hei arorau Or, me te haina & rite arorau И. Hei tauira, ki te hiahia koe ki te karetao ki te karanga i te tikanga ano ka whiwhi ia i tetahi ataata, whakaahua, tuhinga ranei, whakamahia te tauira e whai ake nei hei hanga i tetahi kaikawe karere:

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

Te taapiri i nga tono me nga tawhā

Kua mohio tatou he aha nga whakahau, me pehea te hanga, me pehea te akiaki i te bot ki te whakatutuki i te whakahau e hiahiatia ana. Engari i etahi wa, hei taapiri i te ingoa whakahau, me tuku etahi raraunga hei mahi.

Kei raro nei he tauira o te karetao, i homai he ra me te whenua, ka whakahoki mai ki a koe te momo ra mai i te maramataka whakaputa.

Ka whakamahia e te karetao i raro te API maramataka whakaputa isdayoff.ru.

Waehere 3: Bot e whakaatu ana i te ra me te whenua

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

Whakahaerehia te tauira waehere i runga ake nei, i muri i te whakakapi i te 'TOKEN BOT TOKEN' ki te tohu pono i riro i a koe i te wa e hanga ana i te karetao ma Matua Matua (I korero ahau mo te hanga karetao ki roto tuhinga tuatahi).

I hanga e matou he karetao he kotahi noa te tikanga kei roto i tana taonga check_date, ka karangahia tenei tikanga e te whakahau o taua ingoa.

Engari, hei taapiri i te ingoa whakahau, ko tenei tikanga me whakauru koe kia rua nga taapiri, te waehere whenua me te ra. Whai muri, ka tirohia e te karetao mena he wiki te ra i te whenua kua tohua, he ra poto, he ra mahi ranei e ai ki te maramataka whakaputa mana.

Kia taea ai e te tikanga ka hangaia e matou te whakaae ki etahi taapiri me te whakahau, whakamahia te tautohe pass_args = TRUE i roto i te mahi CommandHandler(), me te wa e hanga ana i tetahi tikanga, i tua atu i nga tautohetohe e hiahiatia ana BOT, whakahou hanga he kōwhiringa - Tuhinga o mua. Ko te tikanga i hangaia penei ka whakaae ki nga tawhā ka tukuna e koe ki te bot i muri i te ingoa whakahau. Ko nga tawhā me wehe ma te mokowā, ka tukuna ki te tikanga hei vector kuputuhi.

Ka whakarewahia, ka whakamatau i ta tatou karetao.

Te tuhi i te karetao waea i roto i te R (waahanga 2): Te taapiri i te tautoko whakahau me nga whiriwhiringa karere ki te karetao

Whakahaerehia te karetao ki muri

Ko te mahi whakamutunga hei whakaoti ko te whakarewa i te karetao ki muri.

Ki te mahi i tenei, whai i te algorithm e whakaahuatia ana i raro nei:

  1. Tiakina te waehere bot ki tetahi konae me te toronga R. I te wa e mahi ana i RStudio, ka mahia tenei ma te tahua kōnae, kapa Tiaki Hei ....
  2. Tāpirihia te ara ki te kōpaki ipu, kei roto i te kōpaki i whakauruhia e koe te reo R, ki te taurangi Ara, nga tohutohu konei.
  3. Waihangahia he konae kupu tuhi 1 rarangi: R CMD BATCH C:UsersAlseyDocumentsmy_bot.R... Engari o C:UsersAlseyDocumentsmy_bot.R tuhia te ara ki to tuhinga karetao. I te wa ano, he mea nui kia kore he tohu Cyrillic, he waahi ranei i te huarahi, no te mea ka raru pea tenei i te wa e whakahaere ana te bot. Tiakina, ka whakakapi i tona toronga ki TXT i runga i potae.
  4. Whakatuwherahia te Kaihōtaka Mahi Windows, he maha nga huarahi hei mahi i tenei, hei tauira, whakatuwhera tetahi kōpaki ka uru ki te wahitau %windir%system32taskschd.msc /s. Ka kitea etahi atu tikanga whakarewa konei.
  5. I te tahua matau o runga o te kaihōtaka, pawhiria "Waihanga mahi...".
  6. I runga i te ripa "General", hoatu he ingoa ritenga mo to mahi, ka huri i te whakawhiti ki te ahua "Run for all users".
  7. Haere ki te ripa "Mahinga", pawhiria te "Waihanga". I roto i te mara "Pataka, tuhinga ranei", panui "Tirotiro", kimihia te mea i hangaia i te waahanga tuarua potae kōnae ka pāwhiri OK.
  8. Patohia te OK a, ki te tika, whakauruhia te kupuhipa mo to putea punaha whakahaere.
  9. Kimihia te mahi i hangaia i roto i te raarangi, tohua ka paato i te paatene "Oma" i te kokonga matau o raro.

Ka rere to tatou karetao ki muri ka mahi kia mutu ra ano i a koe te mahi, whakawetohia ranei to PC me to tūmau i whakarewahia ai.

mutunga

I roto i tenei tuhinga, i whakaarohia e matou me pehea te tuhi i te karetao katoa e kore e taea te tuku karere anake, engari ano hoki te whakautu ki nga karere me nga whakahau taumai. Ko nga matauranga kua riro mai kua ranea hei whakaoti i te nuinga o o raru.

Ko te tuhinga e whai ake nei ka korero mo te taapiri i te papapātuhi ki te karetao kia pai ake te mahi.

Ohauru ki taku waea и youtube hongere.

Source: will.com

Tāpiri i te kōrero