Π¦Π΅ ΡΡΠ΅ΡΡ ΡΡΠ°ΡΡΡ ΡΠ· ΡΠ΅ΡΡΡ "ΠΠΈΡΠ΅ΠΌΠΎ telegram Π±ΠΎΡΠ° ΠΌΠΎΠ²ΠΎΡ R". Π£ ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΏΡΠ±Π»ΡΠΊΠ°ΡΡΡΡ ΠΌΠΈ Π½Π°Π²ΡΠΈΠ»ΠΈΡΡ ΡΡΠ²ΠΎΡΡΠ²Π°ΡΠΈ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ°, Π½Π°Π΄ΡΠΈΠ»Π°ΡΠΈ ΡΠ΅ΡΠ΅Π· Π½ΡΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ, Π΄ΠΎΠ΄Π°Π»ΠΈ Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ° ΡΡΠ»ΡΡΡΠΈ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Ρ. Π’ΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΌ ΡΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ Π΄ΠΎ ΡΠΈΡΠ°Π½Π½Ρ ΡΡΡΡ ΡΡΠ°ΡΡΡ Ρ Π²ΠΊΡΠ°ΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΎΠ·Π½Π°ΠΉΠΎΠΌΠΈΡΠΈΡΡ Π· , Ρ.ΠΊ. ΡΡΡ Ρ Π²ΠΆΠ΅ Π½Π΅ Π·ΡΠΏΠΈΠ½ΡΡΠΈΠΌΡ Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π½ΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Ρ Π±ΠΎΡΠΎΠ±ΡΠ΄ΡΠ²Π°Π½Π½Ρ.
Π£ ΡΡΠΉ ΡΡΠ°ΡΡΡ ΠΌΠΈ ΠΏΡΠ΄Π²ΠΈΡΠΈΠΌΠΎ ΡΠ·Π°Π±ΡΠ»ΡΡΡ Π½Π°ΡΠΎΠ³ΠΎ Π±ΠΎΡ Π·Π° ΡΠ°Ρ ΡΠ½ΠΎΠΊ Π΄ΠΎΠ΄Π°Π²Π°Π½Π½Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ, ΡΠΊΠ° Π·ΡΠΎΠ±ΠΈΡΡ ΡΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΠΎΡ ΡΠ½ΡΡΡΡΠΈΠ²Π½ΠΎ Π·ΡΠΎΠ·ΡΠΌΡΠ»ΠΈΠΌ, Ρ ΠΏΡΠΎΡΡΠΈΠΌ Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ.

ΠΡΡ ΡΡΠ°ΡΡΡ ΡΠ· ΡΠ΅ΡΡΡ "ΠΠΈΡΠ΅ΠΌΠΎ telegram Π±ΠΎΡΠ° ΠΌΠΎΠ²ΠΎΡ R"
ΠΠΌΡΡΡ
Π―ΠΊΡΠΎ Π²ΠΈ ΡΡΠΊΠ°Π²ΠΈΡΠ΅ΡΡ Π°Π½Π°Π»ΡΠ·ΠΎΠΌ Π΄Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Π²Π°ΠΌ Π±ΡΠ΄ΡΡΡ ΡΡΠΊΠ°Π²Ρ ΠΌΠΎΡ ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ. ΠΡΠ»ΡΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡ ΡΠΊΠΈΡ ΠΏΡΠΈΡΠ²ΡΡΠ΅Π½Ρ ΠΌΠΎΠ²Ρ R.
3.1.
3.2.
3.3.
Π―ΠΊΡ ΡΠΈΠΏΠΈ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡ ΠΏΡΠ΄ΡΡΠΈΠΌΡΡ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡ
ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π½Ρ ΡΡΠ°ΡΡΡ telegram.bot Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΡΠ²ΠΎΡΠΈΡΠΈ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Π΄Π²ΠΎΡ
ΡΠΈΠΏΡΠ²:
- Reply β ΠΡΠ½ΠΎΠ²Π½Π°, Π·Π²ΠΈΡΠ°ΠΉΠ½Π° ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ°, ΡΠΊΠ° Π·Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΡΠ΄ ΠΏΠ°Π½Π΅Π»Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ. Π’Π°ΠΊΠ° ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° ΠΏΡΠΎΡΡΠΎ Π½Π°Π΄ΡΠΈΠ»Π°Ρ Π±ΠΎΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ, Ρ ΡΠΊ ΡΠ΅ΠΊΡΡ Π²ΡΠ΄ΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΠΉ ΡΠ΅ΠΊΡΡ, ΡΠΊΠΈΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΉ Π½Π° ΠΊΠ½ΠΎΠΏΡΡ.
- Inline β ΠΠ»Π°Π²ΡΠ°ΡΡΡΠ°, ΠΏΡΠΈΠ²'ΡΠ·Π°Π½Π° Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ ΡΠΎΠ±ΠΎΡΠ°. Π¦Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° Π²ΡΠ΄ΠΏΡΠ°Π²Π»ΡΡ ΡΠΎΠ±ΠΎΡΡ Π΄Π°Π½Ρ, ΠΏΡΠΈΠ²'ΡΠ·Π°Π½Ρ Π΄ΠΎ Π½Π°ΡΠΈΡΠ½ΡΡΠΎΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΡ Π΄Π°Π½Ρ ΠΌΠΎΠΆΡΡΡ Π²ΡΠ΄ΡΡΠ·Π½ΡΡΠΈΡΡ Π²ΡΠ΄ ΡΠ΅ΠΊΡΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ°ΠΌΡΠΉ ΠΊΠ½ΠΎΠΏΡΡ. Π ΠΎΠ±ΡΠΎΠ±Π»ΡΡΡΡΡΡ ΡΠ°ΠΊΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ΅ΡΠ΅Π· CallbackQueryHandler.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΠΎΠ± Π±ΠΎΡ Π²ΡΠ΄ΠΊΡΠΈΠ² ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ ΠΏΡΠΈ Π²ΡΠ΄ΠΏΡΠ°Π²ΡΡ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ sendMessage()ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΡΠ²ΠΎΡΠ΅Π½Ρ ΡΠ°Π½ΡΡΠ΅ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ reply_markup.
ΠΠΈΠΆΡΠ΅ ΠΌΠΈ ΡΠΎΠ·Π±Π΅ΡΠ΅ΠΌΠΎ ΠΊΡΠ»ΡΠΊΠ° ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ².
Reply ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ°
Π―ΠΊ Ρ Π²ΠΆΠ΅ ΠΏΠΈΡΠ°Π² Π²ΠΈΡΠ΅, ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ ΡΠΎΠ±ΠΎΡΠΎΠΌ.
ΠΡΠΈΠΊΠ»Π°Π΄ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Reply Π· ΠΎΡΡΡΡΠΉΠ½ΠΎΡ Π΄ΠΎΠ²ΡΠ΄ΠΊΠΈ
bot <- Bot(token = "TOKEN")
chat_id <- "CHAT_ID"
# Create Custom Keyboard
text <- "Aren't those custom keyboards cool?"
RKM <- ReplyKeyboardMarkup(
keyboard = list(
list(KeyboardButton("Yes, they certainly are!")),
list(KeyboardButton("I'm not quite sure")),
list(KeyboardButton("No..."))
),
resize_keyboard = FALSE,
one_time_keyboard = TRUE
)
# Send Custom Keyboard
bot$sendMessage(chat_id, text, reply_markup = RKM)ΠΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΡΠ· ΠΎΡΡΡΡΠΉΠ½ΠΎΡ Π΄ΠΎΠ²ΡΠ΄ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ telegram.bot. ΠΠ»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡΡΡ ΡΡΠ½ΠΊΡΡΡ ReplyKeyboardMarkup(), ΡΠΊΠ° Ρ ΡΠ²ΠΎΡ ΡΠ΅ΡΠ³Ρ ΠΏΡΠΈΠΉΠΌΠ°Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΡΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΠΎ ΡΡΠ²ΠΎΡΡΡΡΡΡΡ ΡΡΠ½ΠΊΡΡΡΡ KeyboardButton().
Π§ΠΎΠΌΡ Π² ReplyKeyboardMarkup() ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΠΈ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ, Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΡΠ²? Π‘ΠΏΡΠ°Π²Π° Π² ΡΠΎΠΌΡ, ΡΠΎ Π²ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ, Ρ Π² Π½ΡΠΎΠΌΡ ΠΎΠΊΡΠ΅ΠΌΠΈΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ Π²ΠΈ Π·Π°Π΄Π°Ρ ΠΊΠΎΠΆΠ΅Π½ ΡΡΠ΄ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Ρ.ΠΊ. Π² ΠΎΠ΄ΠΈΠ½ ΡΡΠ΄ ΠΌΠΎΠΆΠ½Π° ΡΠΎΠ·ΡΠ°ΡΡΠ²Π°ΡΠΈ ΠΊΡΠ»ΡΠΊΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ.
Π°ΡΠ³ΡΠΌΠ΅Π½Ρ resize_keyboard Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΄Π±ΠΈΡΠ°ΡΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΈΠΉ ΡΠΎΠ·ΠΌΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ, Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ one_time_keyboard Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΈΡ
ΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ ΠΏΡΡΠ»Ρ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΡΠΊΠ°Π½Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌΠΎ Π½Π°ΠΉΠΏΡΠΎΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°, ΡΠΊΠΈΠΉ ΠΌΠ°ΡΠΈΠΌΠ΅ 3 ΠΊΠ½ΠΎΠΏΠΊΠΈ:
- Π§Π°Ρ ID β ΠΠ°ΠΏΠΈΡΠ°ΡΠΈ ΡΠ°Ρ ID Π΄ΡΠ°Π»ΠΎΠ³Ρ Π· Π±ΠΎΡΠΎΠΌ
- ΠΠΎΡ ΡΠΌ'Ρ β ΠΠ°ΠΏΠΈΡΠ°ΡΠΈ ΡΠ²ΠΎΡ ΡΠΌ'Ρ
- ΠΡΠΉ Π»ΠΎΠ³ΡΠ½ β ΠΠ°ΠΏΠΈΡΠ°ΡΠΈ ΡΠ²ΠΎΡ ΡΠΌ'Ρ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ° Ρ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ
ΠΠΎΠ΄ 1: ΠΡΠΎΡΡΠΈΠΉ Π±ΠΎΡ Π· Reply ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΎΡ
library(telegram.bot)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Updater
updater <- Updater('Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π')
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ
## ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
start <- function(bot, update) {
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
RKM <- ReplyKeyboardMarkup(
keyboard = list(
list(KeyboardButton("Π§Π°Ρ ID")),
list(KeyboardButton("ΠΠΎΡ ΠΈΠΌΡ")),
list(KeyboardButton("ΠΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½"))
),
resize_keyboard = FALSE,
one_time_keyboard = TRUE
)
# ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
bot$sendMessage(update$message$chat_id,
text = 'ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ',
reply_markup = RKM)
}
## ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°Π·Π°ΡΡΠΈΠΉ id ΡΠ°ΡΠ°
chat_id <- function(bot, update) {
bot$sendMessage(update$message$chat_id,
text = paste0("Π§Π°Ρ id ΡΡΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π°: ", update$message$chat_id),
parse_mode = "Markdown")
}
## ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΈΠΌΡ
my_name <- function(bot, update) {
bot$sendMessage(update$message$chat_id,
text = paste0("ΠΠ°Ρ Π·ΠΎΠ²ΡΡ ", update$message$from$first_name),
parse_mode = "Markdown")
}
## ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ Π»ΠΎΠ³ΠΈΠ½
my_username <- function(bot, update) {
bot$sendMessage(update$message$chat_id,
text = paste0("ΠΠ°Ρ Π»ΠΎΠ³ΠΈΠ½ ", update$message$from$username),
parse_mode = "Markdown")
}
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΈΠ»ΡΡΡΡ
## ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ Π§Π°Ρ ID
MessageFilters$chat_id <- BaseFilter(function(message) {
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message$text == "Π§Π°Ρ ID"
}
)
## ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΠΎΡ ΠΈΠΌΡ
MessageFilters$name <- BaseFilter(function(message) {
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message$text == "ΠΠΎΡ ΠΈΠΌΡ"
}
)
## ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½
MessageFilters$username <- BaseFilter(function(message) {
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message$text == "ΠΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½"
)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
h_start <- CommandHandler('start', start)
h_chat_id <- MessageHandler(chat_id, filters = MessageFilters$chat_id)
h_name <- MessageHandler(my_name, filters = MessageFilters$name)
h_username <- MessageHandler(my_username, filters = MessageFilters$username)
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ
updater <- updater +
h_start +
h_chat_id +
h_name +
h_username
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π±ΠΎΡΠ°
updater$start_polling()ΠΠ°ΠΏΡΡΡΡΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π²ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Π°ΠΌΡΠ½ΠΈΠ²ΡΠΈ 'Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π' Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΈΠΉ ΡΠΎΠΊΠ΅Π½, ΡΠΊΠΈΠΉ Π²ΠΈ ΠΎΡΡΠΈΠΌΠ°Π»ΠΈ ΠΏΡΠ΄ ΡΠ°Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· BotFather (ΠΏΡΠΎ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° Ρ ΡΠΎΠ·ΠΏΠΎΠ²ΡΠ΄Π°Π² Ρ ).
ΠΡΡΠ»Ρ Π·Π°ΠΏΡΡΠΊΡ Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΠΎΠ±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ /start, Ρ.ΠΊ. ΡΠ°ΠΌΠ΅ ΡΡ ΠΌΠΈ Π²ΠΈΠ·Π½Π°ΡΠΈΠ»ΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΡ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ.

Π―ΠΊΡΠΎ Π½Π° Π΄Π°Π½ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π°ΠΌ ΡΠΊΠ»Π°Π΄Π½ΠΎ ΡΠΎΠ·ΡΠ±ΡΠ°ΡΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΠΊΠΎΠ΄Ρ, Π·Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΡΠ², ΡΡΠ»ΡΡΡΡΠ² ΡΠ° ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ², ΡΠ»ΡΠ΄ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΠΈΡΡ Π΄ΠΎ ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΎΡ , Π ΡΠΊΡΠΉ Ρ Π΄ΠΎΠΊΠ»Π°Π΄Π½ΠΎ Π²ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π².
ΠΠΈ ΡΡΠ²ΠΎΡΠΈΠ»ΠΈ 4 ΠΌΠ΅ΡΠΎΠ΄ΠΈ:
- start β ΠΠ°ΠΏΡΡΠΊ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ
- chat_id β ΠΠ°ΠΏΠΈΡ ΡΠ΄Π΅Π½ΡΠΈΡΡΠΊΠ°ΡΠΎΡΠ° ΡΠ°ΡΡ
- my_name - ΠΠ°ΠΏΠΈΡ ΡΠ²ΠΎΠ³ΠΎ ΡΠΌΠ΅Π½Ρ
- my_username - ΠΠ°ΠΏΠΈΡ ΡΠ²ΠΎΠ³ΠΎ Π»ΠΎΠ³ΡΠ½Ρ
Π ΠΎΠ±'ΡΠΊΡ MessageFilters Π΄ΠΎΠ΄Π°Π»ΠΈ 3 ΡΡΠ»ΡΡΡΠΈ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Ρ, Π·Π° ΡΡ ΡΠ΅ΠΊΡΡΠΎΠΌ:
- chat_id β ΠΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ Π· ΡΠ΅ΠΊΡΡΠΎΠΌ
"Π§Π°Ρ ID" - name β ΠΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ Π· ΡΠ΅ΠΊΡΡΠΎΠΌ
"ΠΠΎΡ ΠΈΠΌΡ" - username β ΠΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ Π· ΡΠ΅ΠΊΡΡΠΎΠΌ
"ΠΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½"
Π ΡΡΠ²ΠΎΡΠΈΠ»ΠΈ 4 ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΈ, ΡΠΊΡ Π·Π° Π·Π°Π΄Π°Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΡΠ° ΡΡΠ»ΡΡΡΠ°ΠΌΠΈ Π²ΠΈΠΊΠΎΠ½ΡΠ²Π°ΡΠΈΠΌΡΡΡ Π·Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ.
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
h_start <- CommandHandler('start', start)
h_chat_id <- MessageHandler(chat_id, filters = MessageFilters$chat_id)
h_name <- MessageHandler(my_name, filters = MessageFilters$name)
h_username <- MessageHandler(my_username, filters = MessageFilters$username)Π‘Π°ΠΌΠ° ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° ΡΡΠ²ΠΎΡΡΡΡΡΡΡ ΡΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ start() ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ ReplyKeyboardMarkup().
RKM <- ReplyKeyboardMarkup(
keyboard = list(
list(KeyboardButton("Π§Π°Ρ ID")),
list(KeyboardButton("ΠΠΎΡ ΠΈΠΌΡ")),
list(KeyboardButton("ΠΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½"))
),
resize_keyboard = FALSE,
one_time_keyboard = TRUE
)Π£ Π½Π°ΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ Π²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΈ ΡΠΎΠ·ΡΠ°ΡΡΠ²Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΄ ΠΎΠ΄Π½ΠΈΠΌ, Π°Π»Π΅ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΡΠΎΠ·ΡΠ°ΡΡΠ²Π°ΡΠΈ ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΡΠ΄, Π²Π½ΡΡΡΠΈ Π·ΠΌΡΠ½ΠΈ Π΄ΠΎ ΡΠΏΠΈΡΠΊΡ ΡΠΏΠΈΡΠΊΡΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’.ΠΊ. ΠΎΠ΄ΠΈΠ½ ΡΡΠ΄ ΡΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ ΡΡΠ²ΠΎΡΡΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π²ΠΊΠ»Π°Π΄Π΅Π½ΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΠΎΠ± Π²ΠΈΠ²Π΅ΡΡΠΈ Π½Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΡΡΠ΄ ΡΡΠ΅Π±Π° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΠΈ ΡΠ°ΡΡΠΈΠ½Ρ ΠΊΠΎΠ΄Ρ ΠΏΠΎ ΠΏΠΎΠ±ΡΠ΄ΠΎΠ²Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ ΠΎΡΡ ΡΠ°ΠΊ:
RKM <- ReplyKeyboardMarkup(
keyboard = list(
list(
KeyboardButton("Π§Π°Ρ ID"),
KeyboardButton("ΠΠΎΡ ΠΈΠΌΡ"),
KeyboardButton("ΠΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½")
)
),
resize_keyboard = FALSE,
one_time_keyboard = TRUE
)
ΠΡΠ΄ΠΏΡΠ°Π²Π»ΡΡΡΡΡΡ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° Π² ΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ sendMessage(), Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ reply_markup.
bot$sendMessage(update$message$chat_id,
text = 'ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ',
reply_markup = RKM)Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ°
Π―ΠΊ Ρ Π²ΠΆΠ΅ ΠΏΠΈΡΠ°Π², Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° ΠΏΡΠΈΠ²'ΡΠ·Π°Π½Π° Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ. Π Π½Π΅Ρ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ Π΄Π΅ΡΠΎ ΡΠΊΠ»Π°Π΄Π½ΡΡΠ΅, Π½ΡΠΆ Π· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΎΡ.
Π‘ΠΏΠΎΡΠ°ΡΠΊΡ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π΄ΠΎΠ΄Π°ΡΠΈ Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π²ΠΈΠΊΠ»ΠΈΠΊΡ Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ.
ΠΠ»Ρ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ Π½Π° Π½Π°ΡΠΈΡΠΊΠ°Π½Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ Inline ΡΠ°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π±ΠΎΡΠ° answerCallbackQuery(), ΡΠΊΠΈΠΉ ΠΌΠΎΠΆΠ΅ Π²ΠΈΠ²Π΅ΡΡΠΈ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ Π² ΡΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ telegram, ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΡ, ΡΠΎ Π½Π°ΡΠΈΡΠ½ΡΠ² ΠΊΠ½ΠΎΠΏΠΊΡ Inline.
ΠΠ°Π½Ρ Π²ΡΠ΄ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π· Inline ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π΅ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ, ΡΠΎΠΌΡ Π΄Π»Ρ ΡΡ
ΠΎΠ±ΡΠΎΠ±ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ ΡΡΠ²ΠΎΡΠΈΡΠΈ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½ΠΈΠΉ ΠΎΠ±ΡΠΎΠ±Π»ΡΠ²Π°Ρ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ CallbackQueryHandler().
ΠΠΎΠ΄ ΠΏΠΎΠ±ΡΠ΄ΠΎΠ²ΠΈ Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ, ΡΠΊΠΈΠΉ Π½Π°Π²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΡΡΡΡΠΉΠ½ΡΠΉ Π΄ΠΎΠ²ΡΠ΄ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ telegram.bot.
ΠΠΎΠ΄ ΠΏΠΎΠ±ΡΠ΄ΠΎΠ²ΠΈ Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Π· ΠΎΡΡΡΡΠΉΠ½ΠΎΡ Π΄ΠΎΠ²ΡΠ΄ΠΊΠΈ
# Initialize bot
bot <- Bot(token = "TOKEN")
chat_id <- "CHAT_ID"
# Create Inline Keyboard
text <- "Could you type their phone number, please?"
IKM <- InlineKeyboardMarkup(
inline_keyboard = list(
list(
InlineKeyboardButton(1),
InlineKeyboardButton(2),
InlineKeyboardButton(3)
),
list(
InlineKeyboardButton(4),
InlineKeyboardButton(5),
InlineKeyboardButton(6)
),
list(
InlineKeyboardButton(7),
InlineKeyboardButton(8),
InlineKeyboardButton(9)
),
list(
InlineKeyboardButton("*"),
InlineKeyboardButton(0),
InlineKeyboardButton("#")
)
)
)
# Send Inline Keyboard
bot$sendMessage(chat_id, text, reply_markup = IKM)ΠΡΠ΄ΡΠ²Π°ΡΠΈ Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ InlineKeyboardMarkup(), Π·Π° ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ, ΡΠΊ Ρ Reply ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ. Π£ InlineKeyboardMarkup() Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΏΠΈΡΠΊΡΠ² Inline ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΊΠΎΠΆΠ½Π° ΠΎΠΊΡΠ΅ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΡΠ²ΠΎΡΡΡΡΡΡΡ ΡΡΠ½ΠΊΡΡΡΡ InlineKeyboardButton().
Inline ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΌΠΎΠΆΠ΅ Π°Π±ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΠΈ Π±ΠΎΡΡ ΡΠΊΡΡΡ Π΄Π°Π½Ρ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ callback_data, Π°Π±ΠΎ Π²ΡΠ΄ΠΊΡΠΈΠ²Π°ΡΠΈ Π±ΡΠ΄Ρ-ΡΠΊΡ HTML ΡΡΠΎΡΡΠ½ΠΊΡ, Π·Π°Π΄Π°Π½Ρ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ url.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄Π΅ ΡΠΏΠΈΡΠΎΠΊ, Π² ΡΠΊΠΎΠΌΡ ΠΊΠΎΠΆΠ΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΡΠ°ΠΊ ΡΠ°ΠΌΠΎ Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ Inline, ΡΠΊΡ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ ΠΎΠ±'ΡΠ΄Π½Π°ΡΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΡΡΠ΄.
ΠΠ°Π»Ρ ΠΌΠΈ ΡΠΎΠ·Π³Π»ΡΠ½Π΅ΠΌΠΎ ΠΊΡΠ»ΡΠΊΠ° ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ² ΡΠΎΠ±ΠΎΡΡΠ² Π· ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Inline.
ΠΡΠΈΠΊΠ»Π°Π΄ Π½Π°ΠΉΠΏΡΠΎΡΡΡΡΠΎΠ³ΠΎ Π±ΠΎΡΠ° Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ InLine ΠΊΠ½ΠΎΠΏΠΎΠΊ
ΠΠ»Ρ ΠΏΠΎΡΠ°ΡΠΊΡ ΠΌΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌΠΎ Π±ΠΎΡΠ° Π΄Π»Ρ Π΅ΠΊΡΠΏΡΠ΅Ρ-ΡΠ΅ΡΡΡΠ²Π°Π½Π½Ρ Π½Π° covid-19. ΠΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ /test, Π²ΡΠ½ Π±ΡΠ΄Π΅ Π½Π°Π΄ΡΠΈΠ»Π°ΡΠΈ Π²Π°ΠΌ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ Π· Π΄Π²ΠΎΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ, Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²ΡΠ΄ Π½Π°ΡΠΈΡΠ½ΡΡΠΎΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΡΠ½ Π½Π°Π΄ΡΠΈΠ»Π°ΡΠΈΠΌΠ΅ Π²Π°ΠΌ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ Π· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ Π²Π°ΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΠ²Π°Π½Π½Ρ.
ΠΠΎΠ΄ 2: ΠΠ°ΠΉΠΏΡΠΎΡΡΡΡΠΈΠΉ Π±ΠΎΡ Π· Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΎΡ
library(telegram.bot)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Updater
updater <- Updater('Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π')
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ InLine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
test <- function(bot, update) {
# ΡΠΎΠ·Π΄Π°ΡΠΌ InLine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
IKM <- InlineKeyboardMarkup(
inline_keyboard = list(
list(
InlineKeyboardButton("ΠΠ°", callback_data = 'yes'),
InlineKeyboardButton("ΠΠ΅Ρ", callback_data = 'no')
)
)
)
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΡΠ°Ρ
bot$sendMessage(update$message$chat_id,
text = "ΠΡ Π±ΠΎΠ»Π΅ΡΠ΅ ΠΊΠΎΡΠΎΠ½Π°Π²ΠΈΡΡΡΠΎΠΌ?",
reply_markup = IKM)
}
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ
answer_cb <- function(bot, update) {
# ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ
data <- update$callback_query$data
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΆΠ°Π²ΡΠ΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ
uname <- update$effective_user()$first_name
# ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
if ( data == 'no' ) {
msg <- paste0(uname, ", ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ, Π²Π°Ρ ΡΠ΅ΡΡ Π½Π° covid-19 ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ.")
} else {
msg <- paste0(uname, ", ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈ Π²Π°Ρ ΡΠ΅ΡΡ Π½Π° covid-19 ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ.")
}
# ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
bot$sendMessage(chat_id = update$from_chat_id(),
text = msg)
# ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ Π±ΠΎΡΡ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠ½ΡΡ
bot$answerCallbackQuery(callback_query_id = update$callback_query$id)
}
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
inline_h <- CommandHandler('test', test)
query_handler <- CallbackQueryHandler(answer_cb)
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ
updater <- updater + inline_h + query_handler
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π±ΠΎΡΠ°
updater$start_polling()ΠΠ°ΠΏΡΡΡΡΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π²ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Π°ΠΌΡΠ½ΠΈΠ²ΡΠΈ 'Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π' Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΈΠΉ ΡΠΎΠΊΠ΅Π½, ΡΠΊΠΈΠΉ Π²ΠΈ ΠΎΡΡΠΈΠΌΠ°Π»ΠΈ ΠΏΡΠ΄ ΡΠ°Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· BotFather (ΠΏΡΠΎ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° Ρ ΡΠΎΠ·ΠΏΠΎΠ²ΡΠ΄Π°Π² Ρ ).
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:

ΠΠΈ ΡΡΠ²ΠΎΡΠΈΠ»ΠΈ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ:
- ΡΠ΅ΡΡ β ΠΠ»Ρ Π½Π°Π΄ΡΠΈΠ»Π°Π½Π½Ρ Π² ΡΠ°Ρ Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ
- answer_cb β ΠΠ»Ρ ΠΎΠ±ΡΠΎΠ±ΠΊΠΈ Π½Π°Π΄ΡΡΠ»Π°Π½ΠΈΡ Π· ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Π΄Π°Π½ΠΈΡ .
ΠΠ°Π½Ρ, ΡΠΊΡ Π±ΡΠ΄ΡΡΡ Π½Π°Π΄ΡΡΠ»Π°Π½Ρ Π· ΠΊΠΎΠΆΠ½ΠΎΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π·Π°Π΄Π°ΡΡΡΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ callback_dataΠΏΡΠΈ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΡΠΈΠΌΠ°ΡΠΈ Π½Π°Π΄ΡΡΠ»Π°Π½Ρ Π· ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π°Π½Ρ ΠΌΠΎΠΆΠ½Π° Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΡΡ update$callback_query$data, ΡΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ answer_cb.
Π©ΠΎ Π± Π±ΠΎΡ ΡΠ΅Π°Π³ΡΠ²Π°Π² Π½Π° Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄ answer_cb ΠΎΠ±ΡΠΎΠ±Π»ΡΡΡΡΡΡ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½ΠΈΠΌ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΎΠΌ: CallbackQueryHandler(answer_cb). Π―ΠΊΠΈΠΉ Π·Π°ΠΏΡΡΠΊΠ°Ρ Π²ΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°ΡΠΈΡΠΊΠ°Π½Π½Ρ Inline ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΠ±ΡΠΎΠ±Π½ΠΈΠΊ CallbackQueryHandler ΠΏΡΠΈΠΉΠΌΠ°Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ:
callbackβ ΠΠ΅ΡΠΎΠ΄, ΡΠΊΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠΈpatternβ Π€ΡΠ»ΡΡΡ Π·Π° Π΄Π°Π½ΠΈΠΌΠΈ, ΡΠΊΡ ΠΏΡΠΈΠ²'ΡΠ·Π°Π½Ρ Π΄ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡcallback_data.
ΠΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π½ΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ pattern ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΡΠ΄ Π½Π°ΡΠΈΡΠΊΠ°Π½Π½ΡΠΌ ΠΊΠΎΠΆΠ½ΠΎΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΠΈ ΠΎΠΊΡΠ΅ΠΌΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
ΠΠΎΠ΄ 3: Π ΠΎΠ·Π΄ΡΠ»ΡΡΠΌΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΏΡΠ΄ ΠΊΠΎΠΆΠ½Ρ ΠΊΠ½ΠΎΠΏΠΊΡ Inline
library(telegram.bot)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Updater
updater <- Updater('Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π')
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ InLine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
test <- function(bot, update) {
# ΡΠΎΠ·Π΄Π°ΡΠΌ InLine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
IKM <- InlineKeyboardMarkup(
inline_keyboard = list(
list(
InlineKeyboardButton("ΠΠ°", callback_data = 'yes'),
InlineKeyboardButton("ΠΠ΅Ρ", callback_data = 'no')
)
)
)
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΡΠ°Ρ
bot$sendMessage(update$message$chat_id,
text = "ΠΡ Π±ΠΎΠ»Π΅ΡΠ΅ ΠΊΠΎΡΠΎΠ½Π°Π²ΠΈΡΡΡΠΎΠΌ?",
reply_markup = IKM)
}
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ°
answer_cb_yes <- function(bot, update) {
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΆΠ°Π²ΡΠ΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ
uname <- update$effective_user()$first_name
# ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
msg <- paste0(uname, ", ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈ Π²Π°Ρ ΡΠ΅ΠΊΡΡ Π½Π° covid-19 ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ.")
# ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
bot$sendMessage(chat_id = update$from_chat_id(),
text = msg)
# ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ Π±ΠΎΡΡ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠ½ΡΡ
bot$answerCallbackQuery(callback_query_id = update$callback_query$id)
}
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ΅Ρ
answer_cb_no <- function(bot, update) {
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΆΠ°Π²ΡΠ΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ
uname <- update$effective_user()$first_name
msg <- paste0(uname, ", ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ, Π²Π°Ρ ΡΠ΅ΠΊΡΡ Π½Π° covid-19 ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ.")
# ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
bot$sendMessage(chat_id = update$from_chat_id(),
text = msg)
# ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ Π±ΠΎΡΡ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠ½ΡΡ
bot$answerCallbackQuery(callback_query_id = update$callback_query$id)
}
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
inline_h <- CommandHandler('test', test)
query_handler_yes <- CallbackQueryHandler(answer_cb_yes, pattern = 'yes')
query_handler_no <- CallbackQueryHandler(answer_cb_no, pattern = 'no')
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ
updater <- updater +
inline_h +
query_handler_yes +
query_handler_no
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π±ΠΎΡΠ°
updater$start_polling()ΠΠ°ΠΏΡΡΡΡΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π²ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Π°ΠΌΡΠ½ΠΈΠ²ΡΠΈ 'Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π' Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΈΠΉ ΡΠΎΠΊΠ΅Π½, ΡΠΊΠΈΠΉ Π²ΠΈ ΠΎΡΡΠΈΠΌΠ°Π»ΠΈ ΠΏΡΠ΄ ΡΠ°Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· BotFather (ΠΏΡΠΎ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° Ρ ΡΠΎΠ·ΠΏΠΎΠ²ΡΠ΄Π°Π² Ρ ).
Π’Π΅ΠΏΠ΅Ρ ΠΌΠΈ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ 2 ΠΎΠΊΡΠ΅ΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΡΠΎΠ±ΡΠΎ. Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΠΏΡΠ΄ Π½Π°ΡΠΈΡΠΊΠ°Π½Π½ΡΠΌ ΠΊΠΎΠΆΠ½ΠΎΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠ° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ patternΠΏΡΠΈ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡ
ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΡΠ²:
query_handler_yes <- CallbackQueryHandler(answer_cb_yes, pattern = 'yes')
query_handler_no <- CallbackQueryHandler(answer_cb_no, pattern = 'no')ΠΠ°ΠΊΡΠ½ΡΡΡΡΡΡΡ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Ρ answer_cb ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ bot$answerCallbackQuery(callback_query_id = update$callback_query$id), Π―ΠΊΠ° ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»ΡΡ Π±ΠΎΡΡ, ΡΠΎ Π΄Π°Π½Ρ Π· inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ ΠΎΡΡΠΈΠΌΠ°Π½Ρ.
ΠΡΠΈΠΊΠ»Π°Π΄ Π±ΠΎΡΠ°, ΡΠΊΠΈΠΉ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»ΡΡ ΠΏΠΎΡΠΎΡΠ½Ρ ΠΏΠΎΠ³ΠΎΠ΄Ρ ΠΏΠΎ Π²ΠΈΠ±ΡΠ°Π½ΠΎΠΌΡ ΠΌΡΡΡΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΏΡΠΎΠ±ΡΡΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΠΈ ΡΠΎΠ±ΠΎΡΠ°, ΡΠΊΠΈΠΉ Π·Π°ΠΏΠΈΡΡΡ Π΄Π°Π½Ρ ΠΏΡΠΎ ΠΏΠΎΠ³ΠΎΠ΄Ρ.
ΠΠΎΠ³ΡΠΊΠ° ΠΉΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠΈ Π±ΡΠ΄Π΅ ΡΠ°ΠΊΠΎΡ. Π‘ΠΏΠΎΡΠ°ΡΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ /start Π²ΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ, Π² ΡΠΊΡΠΉ Ρ Π»ΠΈΡΠ΅ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° "ΠΠΎΠ³ΠΎΠ΄Π°". ΠΠ°ΡΠΈΡΠ½ΡΠ²ΡΠΈ Π½Π° ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΠΈ ΠΎΡΡΠΈΠΌΡΡΡΠ΅ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ Π· Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΎΡ, Π΄Π»Ρ Π²ΠΈΠ±ΠΎΡΡ ΠΌΡΡΡΠ°, ΡΠΊΠΈΠΌ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π΄ΡΠ·Π½Π°ΡΠΈΡΡ ΠΏΠΎΡΠΎΡΠ½Ρ ΠΏΠΎΠ³ΠΎΠ΄Ρ. ΠΠΈΠ±ΠΈΡΠ°ΡΡΠ΅ ΠΎΠ΄Π½Π΅ Π· ΠΌΡΡΡ Ρ ΠΎΡΡΠΈΠΌΡΡΡΠ΅ ΠΏΠΎΡΠΎΡΠ½Ρ ΠΏΠΎΠ³ΠΎΠ΄Ρ.
Π£ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ ΠΌΠΈ Π±ΡΠ΄Π΅ΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΊΡΠ»ΡΠΊΠ° Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΡΠ²:
httrβ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ±ΠΎΡΠΈ Π· Π·Π°ΠΏΠΈΡΠ°ΠΌΠΈ HTTP, Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΊΠΈΡ ΠΏΠΎΠ±ΡΠ΄ΠΎΠ²Π°Π½Π° ΡΠΎΠ±ΠΎΡΠ° Π· Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΌ API. Π£ Π½Π°ΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ ΠΌΠΈ Π±ΡΠ΄Π΅ΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π±Π΅Π·ΠΊΠΎΡΡΠΎΠ²Π½ΠΈΠΉ API .stringrβ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ±ΠΎΡΠΈ Π· ΡΠ΅ΠΊΡΡΠΎΠΌ, Ρ Π½Π°ΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ ΠΌΠΈ ΠΉΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈΠΌΠ΅ΠΌΠΎ Π΄Π»Ρ ΡΠΎΡΠΌΡΠ²Π°Π½Π½Ρ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ ΠΏΡΠΎ ΠΏΠΎΠ³ΠΎΠ΄Ρ Ρ Π²ΠΈΠ±ΡΠ°Π½ΠΎΠΌΡ ΠΌΡΡΡΡ.
ΠΠΎΠ΄ 4: ΠΠΎΡ, ΡΠΊΠΈΠΉ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»ΡΡ ΠΏΠΎΡΠΎΡΠ½Ρ ΠΏΠΎΠ³ΠΎΠ΄Ρ ΠΏΠΎ Π²ΠΈΠ±ΡΠ°Π½ΠΎΠΌΡ ΠΌΡΡΡΡ
library(telegram.bot)
library(httr)
library(stringr)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Updater
updater <- Updater('Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π')
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ
## ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
start <- function(bot, update) {
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
RKM <- ReplyKeyboardMarkup(
keyboard = list(
list(
KeyboardButton("ΠΠΎΠ³ΠΎΠ΄Π°")
)
),
resize_keyboard = TRUE,
one_time_keyboard = TRUE
)
# ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
bot$sendMessage(update$message$chat_id,
text = 'ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ',
reply_markup = RKM)
}
## ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° Inine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
weather <- function(bot, update) {
IKM <- InlineKeyboardMarkup(
inline_keyboard = list(
list(
InlineKeyboardButton(text = 'ΠΠΎΡΠΊΠ²Π°', callback_data = 'New York,us'),
InlineKeyboardButton(text = 'Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³', callback_data = 'Saint Petersburg'),
InlineKeyboardButton(text = 'ΠΡΡ-ΠΠΎΡΠΊ', callback_data = 'New York')
),
list(
InlineKeyboardButton(text = 'ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³', callback_data = 'Yekaterinburg,ru'),
InlineKeyboardButton(text = 'ΠΠ΅ΡΠ»ΠΈΠ½', callback_data = 'Berlin,de'),
InlineKeyboardButton(text = 'ΠΠ°ΡΠΈΠΆ', callback_data = 'Paris,fr')
),
list(
InlineKeyboardButton(text = 'Π ΠΈΠΌ', callback_data = 'Rome,it'),
InlineKeyboardButton(text = 'ΠΠ΄Π΅ΡΡΠ°', callback_data = 'Odessa,ua'),
InlineKeyboardButton(text = 'ΠΠΈΠ΅Π²', callback_data = 'Kyiv,fr')
),
list(
InlineKeyboardButton(text = 'Π’ΠΎΠΊΠΈΠΎ', callback_data = 'Tokyo'),
InlineKeyboardButton(text = 'ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌ', callback_data = 'Amsterdam,nl'),
InlineKeyboardButton(text = 'ΠΠ°ΡΠΈΠ½Π³ΡΠΎΠ½', callback_data = 'Washington,us')
)
)
)
# Send Inline Keyboard
bot$sendMessage(chat_id = update$message$chat_id,
text = "ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π³ΠΎΡΠΎΠ΄",
reply_markup = IKM)
}
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ³ΠΎΠ΄Ρ
answer_cb <- function(bot, update) {
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ΄
city <- update$callback_query$data
# ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ
ans <- GET('https://api.openweathermap.org/data/2.5/weather',
query = list(q = city,
lang = 'ru',
units = 'metric',
appid = '4776568ccea136ffe4cda9f1969af340'))
# ΠΏΠ°ΡΡΠΈΠΌ ΠΎΡΠ²Π΅Ρ
result <- content(ans)
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
msg <- str_glue("{result$name} ΠΏΠΎΠ³ΠΎΠ΄Π°:n",
"Π’Π΅ΠΊΡΡΠ°Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°: {result$main$temp}n",
"Π‘ΠΊΠΎΡΠΎΡΡΡ Π²Π΅ΡΡΠ°: {result$wind$speed}n",
"ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: {result$weather[[1]]$description}")
# ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π΅
bot$sendMessage(chat_id = update$from_chat_id(),
text = msg)
bot$answerCallbackQuery(callback_query_id = update$callback_query$id)
}
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΈΠ»ΡΡΡΡ
## ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΠΎΠ³ΠΎΠ΄Π°
MessageFilters$weather <- BaseFilter(function(message) {
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message$text == "ΠΠΎΠ³ΠΎΠ΄Π°"
}
)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
h_start <- CommandHandler('start', start)
h_weather <- MessageHandler(weather, filters = MessageFilters$weather)
h_query_handler <- CallbackQueryHandler(answer_cb)
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ
updater <- updater +
h_start +
h_weather +
h_query_handler
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π±ΠΎΡΠ°
updater$start_polling()ΠΠ°ΠΏΡΡΡΡΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π²ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Π°ΠΌΡΠ½ΠΈΠ²ΡΠΈ 'Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π' Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΈΠΉ ΡΠΎΠΊΠ΅Π½, ΡΠΊΠΈΠΉ Π²ΠΈ ΠΎΡΡΠΈΠΌΠ°Π»ΠΈ ΠΏΡΠ΄ ΡΠ°Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· BotFather (ΠΏΡΠΎ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° Ρ ΡΠΎΠ·ΠΏΠΎΠ²ΡΠ΄Π°Π² Ρ ).
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π°Ρ Π±ΠΎΡ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈΠΌΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·Π½ΠΎ ΡΠ°ΠΊ:

Π‘Ρ
Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ° ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠ±ΡΠ°ΡΠΈ ΡΠ°ΠΊ:

ΠΠΈ ΡΡΠ²ΠΎΡΠΈΠ»ΠΈ 3 ΠΌΠ΅ΡΠΎΠ΄ΠΈ, Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ Π½Π°ΡΠΎΠ³ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°:
- ΡΡΠ°ΡΡ - ΠΠ°ΠΏΡΡΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ ΡΠΎΠ±ΠΎΡΠ°
- ΠΏΠΎΠ³ΠΎΠ΄Π° β ΠΠ°ΠΏΡΡΠΊ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Inline Π΄Π»Ρ Π²ΠΈΠ±ΠΎΡΡ ΠΌΡΡΡΠ°
- answer_cb - ΠΡΠ½ΠΎΠ²Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΊΠΈΠΉ ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΎΠΌΡ ΠΌΡΡΡΡ Π·Π°ΠΏΠΈΡΡΡ Π² API ΠΏΠΎΠ³ΠΎΠ΄Ρ, Ρ Π²ΡΠ΄ΠΏΡΠ°Π²Π»ΡΡ ΡΡ Π² ΡΠ°Ρ.
ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°ΡΡ Ρ Π½Π°Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ /start, ΡΠΎ ΡΠ΅Π°Π»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΎΠΌ CommandHandler('start', start).
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ³ΠΎΠ΄Π° ΠΌΠΈ ΡΡΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΉΠΌΠ΅Π½Π½ΠΈΠΉ ΡΡΠ»ΡΡΡ:
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΈΠ»ΡΡΡΡ
## ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΠΎΠ³ΠΎΠ΄Π°
MessageFilters$weather <- BaseFilter(function(message) {
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message$text == "ΠΠΎΠ³ΠΎΠ΄Π°"
}
)Π Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡΠΌΠΎ ΡΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°ΡΡΡΠΏΠ½ΠΈΠΌ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Ρ: MessageHandler(weather, filters = MessageFilters$weather).
Π Π·ΡΠ΅ΡΡΠΎΡ, ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΉ Π½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ answer_cb ΡΠ΅Π°Π³ΡΡ Π½Π° Π½Π°ΡΠΈΡΠΊΠ°Π½Π½Ρ Inline ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΠΎ ΡΠ΅Π°Π»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½ΠΈΠΌ ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΎΠΌ: CallbackQueryHandler(answer_cb).
Π£ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ answer_cb, ΠΌΠΈ Π·ΡΠΈΡΡΡΠΌΠΎ Π½Π°Π΄ΡΡΠ»Π°Π½Ρ Π· ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ Π΄Π°Π½Ρ ΡΠ° Π·Π°ΠΏΠΈΡΡΡΠΌΠΎ ΡΡ
Ρ Π·ΠΌΡΠ½Π½Ρ city: city <- update$callback_query$data. ΠΡΡΠ»Ρ ΡΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡΡΡΠΌΠΎ Π· API Π΄Π°Π½Ρ ΠΏΡΠΎ ΠΏΠΎΠ³ΠΎΠ΄Ρ, ΡΠΎΡΠΌΡΡΠΌΠΎ ΡΠ° Π½Π°Π΄ΡΠΈΠ»Π°ΡΠΌΠΎ ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠ»Π΅Π½Π½Ρ, Ρ Π·ΡΠ΅ΡΡΠΎΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΠΌΠΎ ΠΌΠ΅ΡΠΎΠ΄ answerCallbackQuery Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΠΎΠ± ΠΏΠΎΠ²ΡΠ΄ΠΎΠΌΠΈΡΠΈ ΡΠΎΠ±ΠΎΡΡ, ΠΏΡΠΎ ΡΠ΅, ΡΠΎ ΠΌΠΈ ΠΎΠ±ΡΠΎΠ±ΠΈΠ»ΠΈ Π½Π°ΡΠΈΡΠΊΠ°Π½Π½Ρ Inline ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ΠΡΠΈΠΊΠ»Π°Π΄ Π±ΠΎΡΠ°, ΡΠΊΠΈΠΉ Π²ΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΉΡΠ²ΡΠΆΡΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ Π· ΠΏΠΎΡΠΈΠ»Π°Π½Π½ΡΠΌΠΈ Π½Π° Π²ΠΊΠ°Π·Π°Π½Π΅ Π₯Π°Π±Ρ Π· .
Π¦ΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ° Ρ Π½Π°Π²ΠΎΠ΄ΠΆΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΠΎΠ± ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ Π²Π°ΠΌ, ΡΠΊ Π²ΠΈΠ²Π΅ΡΡΠΈ Inline ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΊΡ Π²Π΅Π΄ΡΡΡ Π½Π° Π²Π΅Π± ΡΡΠΎΡΡΠ½ΠΊΠΈ.
ΠΠΎΠ³ΡΠΊΠ° ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ° ΡΡ
ΠΎΠΆΠ° Π· ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΌ, ΡΠΏΠΎΡΠ°ΡΠΊΡ ΠΌΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½Ρ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ /start. ΠΠ°Π»Ρ Π±ΠΎΡ Π΄Π°Ρ Π½Π°ΠΌ Π½Π° Π²ΠΈΠ±ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π· 6 Ρ
Π°Π±ΡΠ², ΠΌΠΈ Π²ΠΈΠ±ΠΈΡΠ°ΡΠΌΠΎ ΡΡΠΊΠ°Π²ΠΈΠΉ Π΄Π»Ρ Π½Π°Ρ Ρ
Π°Π±, Ρ ΠΎΡΡΠΈΠΌΡΡΠΌΠΎ 5 Π½Π°ΠΉΡΠ²ΡΠΆΡΡΠΈΡ
ΠΏΡΠ±Π»ΡΠΊΠ°ΡΡΠΉ Π· ΠΎΠ±ΡΠ°Π½ΠΎΠ³ΠΎ Π₯Π°Π±Π°.
Π―ΠΊ Π²ΠΈ ΡΠΎΠ·ΡΠΌΡΡΡΠ΅, Ρ ΡΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ ΠΎΡΡΠΈΠΌΠ°ΡΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ, Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΈ Π±ΡΠ΄Π΅ΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ habR, ΡΠΊΠΈΠΉ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ Π²ΠΈΠΌΠ°Π³Π°ΡΠΈ Π· Ρ
Π°Π±ΡΠΈ ΡΡΠ°ΡΡΡ Ρ Π΄Π΅ΡΠΊΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π·Π° Π½ΠΈΠΌΠΈ R.
ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ habR ΠΌΠΎΠΆΠ½Π° ΡΡΠ»ΡΠΊΠΈ Π· github, Π΄Π»Ρ ΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π·Π½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ devtools. ΠΠ»Ρ Π²ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ ΡΠΊΠΎΡΠΈΡΡΠ°ΠΉΡΠ΅ΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΌ Π½ΠΈΠΆΡΠ΅ ΠΊΠΎΠ΄ΠΎΠΌ.
install.packages('devtools')
devtools::install_github('selesnow/habR')Π’Π΅ΠΏΠ΅Ρ ΡΠΎΠ·Π³Π»ΡΠ½Π΅ΠΌΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΠ±ΡΠ΄ΠΎΠ²ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΎΠ³ΠΎ Π²ΠΈΡΠ΅ Π±ΠΎΡΠ°:
ΠΠΎΠ΄ 5: ΠΠΎΡ ΡΠΊΠΈΠΉ Π²ΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΉΡΠ²ΡΠΆΡΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ Π²ΠΈΠ±ΡΠ°Π½ΠΎΠΌΡ Π₯Π°Π±Ρ
library(telegram.bot)
library(habR)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Updater
updater <- Updater('Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π')
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ
## ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
start <- function(bot, update) {
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
RKM <- ReplyKeyboardMarkup(
keyboard = list(
list(
KeyboardButton("Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ")
)
),
resize_keyboard = TRUE,
one_time_keyboard = TRUE
)
# ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
bot$sendMessage(update$message$chat_id,
text = 'ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ',
reply_markup = RKM)
}
## ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° Inine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
habs <- function(bot, update) {
IKM <- InlineKeyboardMarkup(
inline_keyboard = list(
list(
InlineKeyboardButton(text = 'R', callback_data = 'R'),
InlineKeyboardButton(text = 'Data Mining', callback_data = 'data_mining'),
InlineKeyboardButton(text = 'Data Engineering', callback_data = 'data_engineering')
),
list(
InlineKeyboardButton(text = 'Big Data', callback_data = 'bigdata'),
InlineKeyboardButton(text = 'Python', callback_data = 'python'),
InlineKeyboardButton(text = 'ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
', callback_data = 'data_visualization')
)
)
)
# Send Inline Keyboard
bot$sendMessage(chat_id = update$message$chat_id,
text = "ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π₯Π°Π±",
reply_markup = IKM)
}
# ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ³ΠΎΠ΄Ρ
answer_cb <- function(bot, update) {
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ΄
hub <- update$callback_query$data
# ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ
bot$answerCallbackQuery(callback_query_id = update$callback_query$id,
text = 'ΠΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ, Π·Π°ΠΏΡΠΎΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ')
# ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ ΠΏΠΎΠΊΠ° Π±ΠΎΡ ΠΏΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅
mid <- bot$sendMessage(chat_id = update$from_chat_id(),
text = "ΠΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ ΠΏΠΎΠΊΠ°, Ρ ΡΠΎΠ±Π΅ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ Π₯Π°Π±Ρ")
# ΠΏΠ°ΡΡΠΈΠΌ Π₯Π°Π±Ρ
posts <- head(habr_hub_posts(hub, 1), 5)
# ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ
bot$deleteMessage(update$from_chat_id(), mid$message_id)
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΎΠΊ
keys <- lapply(1:5, function(x) list(InlineKeyboardButton(posts$title[x], url = posts$link[x])))
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
IKM <- InlineKeyboardMarkup(
inline_keyboard = keys
)
# ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π΅
bot$sendMessage(chat_id = update$from_chat_id(),
text = paste0("5 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΡ
ΡΡΠ°ΡΠ΅ΠΉ ΠΈΠ· Π₯Π°Π±Π° ", hub),
reply_markup = IKM)
}
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΈΠ»ΡΡΡΡ
## ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΠΎΠ³ΠΎΠ΄Π°
MessageFilters$hubs <- BaseFilter(function(message) {
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message$text == "Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ"
}
)
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
h_start <- CommandHandler('start', start)
h_hubs <- MessageHandler(habs, filters = MessageFilters$hubs)
h_query_handler <- CallbackQueryHandler(answer_cb)
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ
updater <- updater +
h_start +
h_hubs +
h_query_handler
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π±ΠΎΡΠ°
updater$start_polling()ΠΠ°ΠΏΡΡΡΡΡΡ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π²ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Π°ΠΌΡΠ½ΠΈΠ²ΡΠΈ 'Π’ΠΠΠΠ ΠΠΠ¨ΠΠΠ ΠΠΠ’Π' Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΈΠΉ ΡΠΎΠΊΠ΅Π½, ΡΠΊΠΈΠΉ Π²ΠΈ ΠΎΡΡΠΈΠΌΠ°Π»ΠΈ ΠΏΡΠ΄ ΡΠ°Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· BotFather (ΠΏΡΠΎ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π±ΠΎΡΠ° Ρ ΡΠΎΠ·ΠΏΠΎΠ²ΡΠ΄Π°Π² Ρ ).
Π£ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΈ ΠΎΡΡΠΈΠΌΠ°ΡΠΌΠΎ ΡΠ°ΠΊΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:

Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ
Π΄Π»Ρ Π²ΠΈΠ±ΠΎΡΡ Π₯Π°Π±ΠΎΠ² ΠΌΠΈ Π²Π±ΠΈΠ»ΠΈ Ρ
Π°ΡΠ΄ΠΊΠΎΠ΄ΠΎΠΌ, Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ habs:
## ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° Inine ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
habs <- function(bot, update) {
IKM <- InlineKeyboardMarkup(
inline_keyboard = list(
list(
InlineKeyboardButton(text = 'R', callback_data = 'r'),
InlineKeyboardButton(text = 'Data Mining', callback_data = 'data_mining'),
InlineKeyboardButton(text = 'Data Engineering', callback_data = 'data_engineering')
),
list(
InlineKeyboardButton(text = 'Big Data', callback_data = 'bigdata'),
InlineKeyboardButton(text = 'Python', callback_data = 'python'),
InlineKeyboardButton(text = 'ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
', callback_data = 'data_visualization')
)
)
)
# Send Inline Keyboard
bot$sendMessage(chat_id = update$message$chat_id,
text = "ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π₯Π°Π±",
reply_markup = IKM)
}Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ ΡΠ· Π·Π°Π·Π½Π°ΡΠ΅Π½ΠΎΠ³ΠΎ Π₯Π°Π±Π° ΠΌΠΈ ΠΎΡΡΠΈΠΌΡΡΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΡ habr_hub_posts(), Π· ΠΏΠ°ΠΊΠ΅ΡΠ° habR. ΠΡΠΈ ΡΡΠΎΠΌΡ Π²ΠΊΠ°Π·ΡΡΠΌΠΎ, ΡΠΎ Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΡΡΡΠ±Π΅Π½ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ Π·Π° Π²Π΅ΡΡ ΡΠ°Ρ, Π° Π»ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠ° ΡΡΠΎΡΡΠ½ΠΊΠ°, Π½Π° ΡΠΊΡΠΉ ΡΠΎΠ·ΠΌΡΡΡΡΡΡΡΡ 20 ΡΡΠ°ΡΠ΅ΠΉ. Π ΠΎΡΡΠΈΠΌΠ°Π½ΠΎΡ ΡΠ°Π±Π»ΠΈΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ head() Π·Π°Π»ΠΈΡΠ°ΡΠΌΠΎ ΡΡΠ»ΡΠΊΠΈ 5 Π½Π°ΠΉΠ²ΠΈΡΠΈΡ
, ΡΠΊΡ Ρ Ρ Π½Π°ΠΉΡΠ²ΡΠΆΡΡΠΈΠΌΠΈ ΡΡΠ°ΡΡΡΠΌΠΈ.
# ΠΏΠ°ΡΡΠΈΠΌ Π₯Π°Π±Ρ
posts <- head(habr_hub_posts(hub, 1), 5)ΠΠΎΠ³ΡΠΊΠ° Π΄ΡΠΆΠ΅ ΡΡ
ΠΎΠΆΠ° Π· ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄Π½ΡΠΌ Π±ΠΎΡΠΎΠΌ, Π°Π»Π΅ Π² Π΄Π°Π½ΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ Inline ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΡ Π·Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΡΠ°ΡΠ΅ΠΉ ΠΌΠΈ Π΄ΠΈΠ½Π°ΠΌΡΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΡΡΠΌΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΡΡΠ½ΠΊΡΡΡ lapply().
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΎΠΊ
keys <- lapply(1:5, function(x) list(InlineKeyboardButton(posts$title[x], url = posts$link[x])))
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
IKM <- InlineKeyboardMarkup(
inline_keyboard = keys
)Π£ ΡΠ΅ΠΊΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΈ ΠΏΡΠ΄ΡΡΠ°Π²Π»ΡΡΠΌΠΎ Π½Π°Π·Π²Ρ ΡΡΠ°ΡΡΡ posts$title[x], Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ url ΠΏΠΎΡΠΈΠ»Π°Π½Π½Ρ Π½Π° ΡΡΠ°ΡΡΡ: url = posts$link[x].
ΠΠ°Π»Ρ, ΡΡΠ²ΠΎΡΡΡΠΌΠΎ ΡΡΠ»ΡΡΡ, ΠΎΠ±ΡΠΎΠ±Π½ΠΈΠΊΠΈ ΡΠ° Π·Π°ΠΏΡΡΠΊΠ°ΡΠΌΠΎ Π½Π°ΡΠΎΠ³ΠΎ Π±ΠΎΡΠ°.
ΠΠΈΡΠ½ΠΎΠ²ΠΎΠΊ
Π’Π΅ΠΏΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π²Π°ΠΌΠΈ ΡΠΎΠ±ΠΎΡΠΈ Π±ΡΠ΄ΡΡΡ Π·Π½Π°ΡΠ½ΠΎ Π·ΡΡΡΠ½ΡΡΠΈΠΌΠΈ Π² ΡΠΎΠ±ΠΎΡΡ, Π·Π° ΡΠ°Ρ ΡΠ½ΠΎΠΊ ΡΠΎΠ³ΠΎ, ΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ½Π½Ρ Π½ΠΈΠΌΠΈ Π·Π΄ΡΠΉΡΠ½ΡΠ²Π°ΡΠΈΠΌΠ΅ΡΡΡΡ Π· ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠΈ, Π° Π½Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄. Π―ΠΊ ΠΌΡΠ½ΡΠΌΡΠΌ, ΠΏΡΠΈ Π²Π·Π°ΡΠΌΠΎΠ΄ΡΡ Π· Π±ΠΎΡΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΡΠΌΠ°ΡΡΡΠΎΠ½ ΠΊΠ»Π°Π²ΡΠ°ΡΡΡΠ° ΡΡΡΡΡΠ²ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΉΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ.
Π£ Π½Π°ΡΡΡΠΏΠ½ΡΠΉ ΡΡΠ°ΡΡΡ ΠΌΠΈ ΡΠΎΠ·Π±Π΅ΡΠ΅ΠΌΠΎΡΡ ΡΠΊ Π±ΡΠ΄ΡΠ²Π°ΡΠΈ Π»ΠΎΠ³ΡΡΠ½ΠΈΠΉ Π΄ΡΠ°Π»ΠΎΠ³ Π· Π±ΠΎΡΠΎΠΌ Ρ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ Π· Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ .
ΠΠΆΠ΅ΡΠ΅Π»ΠΎ: habr.com
