ПисанС Π½Π° Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π² R (част 2): ДобавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

Π’ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π° публикация Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° създадСм Π±ΠΎΡ‚, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ СкзСмпляр Π½Π° класа Bot ΠΈ сС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ… с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‡Ρ€Π΅Π· Π½Π΅Π³ΠΎ.

Π’ Ρ‚Π°Π·ΠΈ статия ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ статия само слСд ΠΊΠ°Ρ‚ΠΎ я ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° част.

Π’ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ Ρ‰Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° съТивим нашия Π±ΠΎΡ‚ ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ към Π½Π΅Π³ΠΎ, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ с класа Updater.

По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° статията Ρ‰Π΅ напишСм няколко прости Π±ΠΎΡ‚Π°, ΠΊΠ°Ρ‚ΠΎ послСднитС Ρ‰Π΅ опрСдСлят Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π΄Π°Π΄Π΅Π½Π° Π΄Π°Ρ‚Π° ΠΈ ΠΊΠΎΠ΄ Π½Π° Π΄ΡŠΡ€ΠΆΠ°Π²Π°Ρ‚Π° Π΄Π°Π»ΠΈ Π΄Π°Π΄Π΅Π½ Π΄Π΅Π½ Π² Π΄Π°Π΄Π΅Π½Π° Π΄ΡŠΡ€ΠΆΠ°Π²Π° Π΅ ΡƒΠΈΠΊΠ΅Π½Π΄ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΄Π΅Π½ спорСд производствСния ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€. Но, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄ΠΈ, Ρ†Π΅Π»Ρ‚Π° Π½Π° статията Π΅ Π΄Π° Π²ΠΈ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ с интСрфСйса Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° telegram.bot Π·Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ собствСнитС си ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

ПисанС Π½Π° Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π² R (част 2): ДобавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

Всички статии ΠΎΡ‚ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π°Ρ‚Π° β€œΠŸΠΈΡΠ°Π½Π΅ Π½Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚ Π² R”

  1. НиС създавамС Π±ΠΎΡ‚ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π² telegram
  2. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅

Ако сС интСрСсуватС ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС интСрСсуватС ΠΎΡ‚ моя Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° ΠΈ YouTube ΠΊΠ°Π½Π°Π»ΠΈ. По-голямата част ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ посвСтСно Π½Π° Π΅Π·ΠΈΠΊΠ° R.

  1. Клас Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€
  2. Π₯Π΅Π½Π΄Π»Π΅Ρ€ΠΈ - ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ
  3. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° към Π±ΠΎΡ‚Π°, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
  4. ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ€ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° тСкстови ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  5. ДобавянС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ
  6. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ Π±ΠΎΡ‚Π° във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ
  7. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Клас Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

Updater Π΅ клас, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ улСснява Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° класа ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ° Dispetcher. Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° класа Updater Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Π±ΠΎΡ‚Π° (Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° статия ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π° Ρ‚Π°Π·ΠΈ Ρ†Π΅Π» getUpdates()), ΠΈ Π³ΠΈ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Ρ‚Π΅ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ към Dispetcher.

На свой Ρ€Π΅Π΄ Dispetcher ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ стС създали, Ρ‚.Π΅. клас ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Handler.

Π₯Π΅Π½Π΄Π»Π΅Ρ€ΠΈ - ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ

Π‘ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, към ΠΊΠΎΠΈΡ‚ΠΎ добавятС Dispetcher Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° Π±ΠΎΡ‚ към Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° писанС Π½Π° Ρ‚Π°Π·ΠΈ статия Π² telegram.bot Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са слСднитС Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ:

  • MessageHandler β€” ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • CommandHandler β€” ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
  • CallbackQueryHandler β€” ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΈ, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΠΎΡ‚ Inline
  • 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()

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ примСрния ΠΊΠΎΠ΄ ΠΏΠΎ-Π³ΠΎΡ€Π΅, слСд ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ β€žYOUR BOT TOKENβ€œ с истинския Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡ‚ΠΎ стС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΎΡ‚Π° Ρ‡Ρ€Π΅Π· Π‘ΠΎΡ‚ Π±Π°Ρ‰Π° (Π“ΠΎΠ²ΠΎΡ€ΠΈΡ… Π·Π° създаванС Π½Π° Π±ΠΎΡ‚ Π² ΠΏΡŠΡ€Π²Π° статия).

ΠΌΠ΅Ρ‚ΠΎΠ΄ start_polling() клас Updater, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² края Π½Π° ΠΊΠΎΠ΄Π°, стартира Π±Π΅Π·ΠΊΡ€Π°Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» Π½Π° исканС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Π±ΠΎΡ‚Π°.

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ Telegram ΠΈ напишСм ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° нашия Π±ΠΎΡ‚ /hi.

ПисанС Π½Π° Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π² R (част 2): ДобавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

Π‘Π΅Π³Π° Π½Π°ΡˆΠΈΡΡ‚ Π±ΠΎΡ‚ Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° /hi, ΠΈ Π·Π½Π°Π΅ ΠΊΠ°ΠΊ Π΄Π° Π½ΠΈ ΠΏΠΎΠ·Π΄Ρ€Π°Π²ΠΈ.

Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΊΡŠΠ² прост Π±ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΎΠ±Ρ€Π°Π·Π΅Π½ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½.

ПисанС Π½Π° Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π² R (част 2): ДобавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

  1. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ СкзСмпляр Π½Π° класа Updater;
  2. НиС създавамС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Ρ‚.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ Π±ΠΎΡ‚ Ρ‰Π΅ изпълнява. Π’ примСрния ΠΊΠΎΠ΄ Ρ‚ΠΎΠ²Π° Π΅ функция say_hello(). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠ°Ρ‚ΠΎ Π±ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚ Π΄Π²Π° Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° - Π±ΠΎΡ‚ ΠΈ актуализацияи Π΅Π΄Π½ΠΎ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ - Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ. АргумСнт Π±ΠΎΡ‚, Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΡˆΠΈΡΡ‚ Π±ΠΎΡ‚, с Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ‰ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° отговарятС Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ всякакви Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° Π±ΠΎΡ‚Π°. АргумСнт актуализация Ρ‚ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΎΡ‚ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΎΡ‚ потрСбитСля, Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ Π² ΠΏΡŠΡ€Π²Π°Ρ‚Π° статия, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getUpdates(). АргумСнт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π²ΠΈ позволява Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΠΎΡ‚ потрСбитСля Π·Π°Π΅Π΄Π½ΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, Ρ‰Π΅ сС Π²ΡŠΡ€Π½Π΅ΠΌ към Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-късно;
  3. НиС създавамС ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, Ρ‚.Π΅. Π‘Π²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ някои потрСбитСлски дСйствия с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅, създадСни Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ°. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ Ρ‚Ρ€ΠΈΠ³Π΅Ρ€, ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π° някаква функция Π½Π° Π±ΠΎΡ‚. Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΡŠΠ² Ρ‚Ρ€ΠΈΠ³Π΅Ρ€ Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° /hi, ΠΈ сС изпълнява ΠΎΡ‚ Π΅ΠΊΠΈΠΏΠ° hi_hendler <- CommandHandler('hi', say_hello). ΠŸΡŠΡ€Π²ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π° функцията CommandHandler() Π²ΠΈ позволява Π΄Π° посочитС ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² нашия случай hi, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΎΡ‚ΡŠΡ‚ Ρ‰Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ. Вторият Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²ΠΈ позволява Π΄Π° посочитС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° Π±ΠΎΡ‚Π°, Π½ΠΈΠ΅ Ρ‰Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° say_hello, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС изпълнСн, Π°ΠΊΠΎ потрСбитСлят ΠΈΠ·Π²ΠΈΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, посочСна Π² ΠΏΡŠΡ€Π²ΠΈΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚;
  4. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° добавямС създадСния ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ към диспСчСра Π½Π° СкзСмпляра Π½Π° нашия клас Updater. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎ няколко Π½Π°Ρ‡ΠΈΠ½Π°; Π² горния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ… Π½Π°ΠΉ-простия, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π·Π½Π°ΠΊΠ° +, Ρ‚ΠΎΠ²Π° Π΅ updater <- updater + hi_hendler. Π‘ΡŠΡ‰ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° add_handler(), ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ към класа Dispatcher, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½: updater$dispatcher$add_handler();
  5. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ Π±ΠΎΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° start_polling().

ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ€ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° тСкстови ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ

Π Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΄ΠΎ Π±ΠΎΡ‚Π°, Π½ΠΎ понякога ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° Π±ΠΎΡ‚ΡŠΡ‚ Π΄Π° отговаря Π½Π΅ само Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π½ΠΎ ΠΈ Π½Π° някои ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ тСкстови ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ βˆ’ MessageHandler.

ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ MessageHandler Ρ‰Π΅ отговаря Π½Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всички входящи ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ чСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π°Π΅Π΄Π½ΠΎ с Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ. НСка Π½Π°ΡƒΡ‡ΠΈΠΌ Π±ΠΎΡ‚Π° Π΄Π° ΠΊΠ°Π·Π²Π° Π·Π΄Ρ€Π°Π²Π΅ΠΉ Π½Π΅ само ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° /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()

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ примСрния ΠΊΠΎΠ΄ ΠΏΠΎ-Π³ΠΎΡ€Π΅, слСд ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ β€žYOUR BOT TOKENβ€œ с истинския Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡ‚ΠΎ стС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΎΡ‚Π° Ρ‡Ρ€Π΅Π· Π‘ΠΎΡ‚ Π±Π°Ρ‰Π° (Π“ΠΎΠ²ΠΎΡ€ΠΈΡ… Π·Π° създаванС Π½Π° Π±ΠΎΡ‚ Π² ΠΏΡŠΡ€Π²Π° статия).

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ Π½Π° Π±ΠΎΡ‚Π° няколко ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ ΠΏΠΎΠ·Π΄Ρ€Π°Π²ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Π΄ΡƒΠΌΠΈ, ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΈ ΠΏΠΎ-Ρ€Π°Π½ΠΎ:
ПисанС Π½Π° Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π² R (част 2): ДобавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

И Ρ‚Π°ΠΊΠ°, ΠΏΡŠΡ€Π²ΠΎ, Π½Π°ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ Π±ΠΎΡ‚Π° Π½Π΅ просто Π΄Π° ΠΊΠ°Π·Π²Π° Π·Π΄Ρ€Π°Π²Π΅ΠΉ, Π½ΠΎ ΠΈ Π΄Π° отговаря Π½Π° ΠΏΠΎΠ·Π΄Ρ€Π°Π². НаправихмС Ρ‚ΠΎΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° reply_to_message_id, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sendMessage(), Π² ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ искатС Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½: update$message$message_id.

Но основното Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅, бСшС Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ към Π±ΠΎΡ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ функцията BaseFilter():

# создаём Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹
MessageFilters$hi <- BaseFilter( 

  # анонимная Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰Π°Ρ функция
  function(message) {

    # провСряСм, встрСчаСтся Π»ΠΈ Π² тСкстС сообщСния слова привСтствия
    grepl(x           = message$text, 
          pattern     = 'ΠΏΡ€ΠΈΠ²Π΅Ρ‚|здравствуй|ΡΠ°Π»ΡŽΡ‚|Ρ…Π°ΠΉ|Π±ΠΎΠ½ΠΆΡƒΡ€',
          ignore.case = TRUE)
  }

)

ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΠΈ стС забСлязали, към ΠΎΠ±Π΅ΠΊΡ‚Π° трябва Π΄Π° сС добавят Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ MessageFilters, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π²Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° малък Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ. Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ към ΠΎΠ±Π΅ΠΊΡ‚Π° MessageFilters Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ hi, Ρ‚ΠΎΠ²Π° Π΅ Π½ΠΎΠ² Ρ„ΠΈΠ»Ρ‚ΡŠΡ€.

Π’ΡŠΠ² функция BaseFilter() трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π½Π°Ρ‚Π° функция. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ΡŠΡ‚ Π΅ просто функция, която ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° СкзСмпляр Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ€ΡŠΡ‰Π° TRUE ΠΈΠ»ΠΈ FALSE. Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ написахмС проста функция, която ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ основната функция 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 ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ MessageFilters Π’Π΅Ρ‡Π΅ ΠΈΠΌΠ° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅:

  • всички β€” Всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • тСкст β€” ВСкстови ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” Команди, Ρ‚.Π΅. ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ с /
  • ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅
  • Π°ΡƒΠ΄ΠΈΠΎ β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ Π°ΡƒΠ΄ΠΈΠΎ Ρ„Π°ΠΉΠ»
  • Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ с ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚
  • снимка - Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ с ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ изобраТСния
  • стикСр β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ с ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ стикСр
  • Π²ΠΈΠ΄Π΅ΠΎ β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ с Π²ΠΈΠ΄Π΅ΠΎ
  • voice - Гласови ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Π½Π° потрСбитСля
  • мСстополоТСниС β€” Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ с гСолокация
  • място β€” ΠŸΡ€Π΅ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ
  • ΠΈΠ³Ρ€Π° β€” Π˜Π³Ρ€ΠΈ

Ако искатС Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ няколко Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€, просто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π·Π½Π°ΠΊΠ° | - ΠΊΠ°Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π˜Π›Π˜, ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡˆΠ΅Ρ‚Π΅ & ΠΊΠ°Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ И. НапримСр, Π°ΠΊΠΎ искатС Π±ΠΎΡ‚ΡŠΡ‚ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ° ΡΡŠΡ‰ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ слСдния ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ:

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

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ примСрния ΠΊΠΎΠ΄ ΠΏΠΎ-Π³ΠΎΡ€Π΅, слСд ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ β€žYOUR BOT TOKENβ€œ с истинския Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡ‚ΠΎ стС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΎΡ‚Π° Ρ‡Ρ€Π΅Π· Π‘ΠΎΡ‚ Π±Π°Ρ‰Π° (Π“ΠΎΠ²ΠΎΡ€ΠΈΡ… Π·Π° създаванС Π½Π° Π±ΠΎΡ‚ Π² ΠΏΡŠΡ€Π²Π° статия).

Π‘ΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Π±ΠΎΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° само Π΅Π΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² своя арсСнал check_date, Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡ‚ Π΅Π΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.

Но Π² допълнСниС към ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ изисква Π΄Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π°, ΠΊΠΎΠ΄Π° Π½Π° Π΄ΡŠΡ€ΠΆΠ°Π²Π°Ρ‚Π° ΠΈ Π΄Π°Ρ‚Π°Ρ‚Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π±ΠΎΡ‚ΡŠΡ‚ провСрява Π΄Π°Π»ΠΈ Π΄Π°Π΄Π΅Π½ Π΄Π΅Π½ Π² посочСната Π΄ΡŠΡ€ΠΆΠ°Π²Π° Π΅ ΡƒΠΈΠΊΠ΅Π½Π΄, ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½ Π΄Π΅Π½ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΄Π΅Π½ спорСд официалния производствСн ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€.

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ създавамС, Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π°Π΅Π΄Π½ΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° pass_args = TRUE във функция CommandHandler(), ΠΈ ΠΏΡ€ΠΈ създаванС Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄, Π² допълнСниС към Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π±ΠΎΡ‚, актуализация ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½ - Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ. Π‘ΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΡ‚ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚Π΅ Π½Π° Π±ΠΎΡ‚Π° слСд ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»; Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°Ρ‚ΠΎ тСкстов Π²Π΅ΠΊΡ‚ΠΎΡ€.

НСка стартирамС ΠΈ тСствамС нашия Π±ΠΎΡ‚.

ПисанС Π½Π° Π±ΠΎΡ‚ Π·Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π² R (част 2): ДобавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ към Π±ΠΎΡ‚Π°

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ Π±ΠΎΡ‚Π° във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ

ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ°, която трябва Π΄Π° изпълним, Π΅ Π΄Π° стартирамС Π±ΠΎΡ‚Π° във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ.

Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, слСдвайтС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ°, описан ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

  1. Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ ΠΊΠΎΠ΄Π° Π½Π° Π±ΠΎΡ‚Π° във Ρ„Π°ΠΉΠ» с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ R. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² RStudio Ρ‚ΠΎΠ²Π° става ΠΏΡ€Π΅Π· ΠΌΠ΅Π½ΡŽΡ‚ΠΎ досиС, Π΅ΠΊΠΈΠΏ Π—Π°ΠΏΠ°Π·ΠΈ ΠΊΠ°Ρ‚ΠΎ.
  2. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΡŠΡ‚Ρ към ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° bin, която ΠΎΡ‚ своя страна сС Π½Π°ΠΌΠΈΡ€Π° Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π°, Π² която стС инсталирали Π΅Π·ΠΈΠΊΠ° R, към ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Path, инструкции Ρ‚ΡƒΠΊ.
  3. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ тСкстов Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ 1 Ρ€Π΅Π΄: R CMD BATCH C:UsersAlseyDocumentsmy_bot.R... ВмСсто C:UsersAlseyDocumentsmy_bot.R Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡŠΡ‚Ρ Π΄ΠΎ вашия Π±ΠΎΡ‚ скрипт. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° няма кирилски Π·Π½Π°Ρ†ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΏΠΎ ΠΏΡŠΡ‚Ρ, Ρ‚.ΠΊ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ стартиранС Π½Π° Π±ΠΎΡ‚Π°. Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ Π³ΠΎ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Ρ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ с TXT Π½Π° НДНВ.
  4. ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Windows Task Scheduler, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ която ΠΈ Π΄Π° Π΅ ΠΏΠ°ΠΏΠΊΠ° ΠΈ Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ адрСса %windir%system32taskschd.msc /s. ΠœΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° стартиранС Ρ‚ΡƒΠΊ.
  5. Π’ Π³ΠΎΡ€Π½ΠΎΡ‚ΠΎ дясно мСню Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ° Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡Π°...β€œ.
  6. Π’ Ρ€Π°Π·Π΄Π΅Π»Π° β€žΠžΠ±Ρ‰ΠΈβ€œ Π΄Π°ΠΉΡ‚Π΅ потрСбитСлско ΠΈΠΌΠ΅ Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° си ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅Π»Ρ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ β€žΠ˜Π·ΠΏΡŠΠ»Π½ΠΈ Π·Π° всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈβ€œ.
  7. ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π° β€žΠ”Π΅ΠΉΡΡ‚Π²ΠΈΡβ€œ, Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žΠ‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅β€œ. Π’ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ "ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈΠ»ΠΈ скрипт" Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ "ΠŸΡ€Π΅Π³Π»Π΅Π΄", Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ създадСния във Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° НДНВ Ρ„Π°ΠΉΠ» ΠΈ Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ OK.
  8. Π©Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ OK ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° Π·Π° вашия Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма.
  9. НамСрСтС ΡΡŠΠ·Π΄Π°Π΄Π΅Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ°, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ я ΠΈ Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ Π±ΡƒΡ‚ΠΎΠ½Π° β€žΠ˜Π·ΠΏΡŠΠ»Π½ΠΈβ€œ Π² долния дСсСн ъгъл.

ΠΠ°ΡˆΠΈΡΡ‚ Π±ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ спрСтС Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ стартиран.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ‚Π°Π·ΠΈ статия Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° напишСм ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π΅Π½ Π±ΠΎΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π½Π΅ само Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π΄Π° отговаря Π½Π° входящи ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. ΠŸΡ€ΠΈΠ΄ΠΎΠ±ΠΈΡ‚ΠΈΡ‚Π΅ знания Π²Π΅Ρ‡Π΅ са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Π·Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° статия Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° към Π±ΠΎΡ‚Π° Π·Π° ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

АбонирайтС сС Π·Π° ΠΌΠΎΠΈΡ‚Π΅ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° ΠΈ YouTube ΠΊΠ°Π½Π°Π»ΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€