แแก แแ แแก แแแกแแแ แกแขแแขแแ แกแแ แแแแแ โแขแแแแแ แแแแก แแแขแแก แแแฌแแ แ R-แจแโ. แฌแแแ แแฃแแแแแแชแแแแจแ แแแกแฌแแแแแ แ แแแแ แจแแแฅแแแแ แขแแแแแ แแแแก แแแขแ, แแแแแแแแแแ แจแแขแงแแแแแแแแแ, แแแแแแแขแแ แแ แซแแแแแแแ แแ แจแแขแงแแแแแแแแแแก แคแแแขแ แแแ แแแขแจแ. แแแแขแแ, แกแแแแ แแ แกแขแแขแแแก แแแแฎแแแก แแแแฌแงแแแ, แแแ แฉแแแ แฌแแแแแแฎแแ
แแ แกแขแแขแแแจแ แฉแแแ แแแแแฃแแฏแแแแกแแแ แฉแแแแ แแแขแแก แแแแแงแแแแแแแแแแก แแแแแแแขแฃแ แแก แแแแแขแแแแ, แ แแช แแแขแแก แแแขแแ แคแแแกแก แแแขแฃแแชแแฃแ แก แแ แแแ แขแแ แแแแแงแแแแแแก แแแฎแแแก.
แงแแแแ แกแขแแขแแ แกแแ แแแแแ "แขแแแแแ แแแแก แแแขแแก แแแฌแแ แ R-แจแ"
แฉแแแ แแฅแแแแ แแแขแก แแ แแแงแแแแแ แแแก แขแแแแแ แแแแจแ แจแแขแงแแแแแแแแแแก แแแกแแแแแแแแ แแแแแแขแแ แแ แซแแแแแแก แแฎแแ แแแญแแ แ แแ แจแแขแงแแแแแแแแแแก แคแแแขแ แแแ แแแขแจแ แ แแแแ แแแแแแแขแแ แแแแแแแขแฃแ แแก แแฎแแ แแแญแแ แ แแแขแก
แแแคแแ แแแชแแแก
แแฃ แแแแแขแแ แแกแแแ แแแแแชแแแแ แแแแแแแ, แจแแแซแแแแ แแแแแแแขแแ แแกแแ แฉแแแ
แ แ แขแแแแก แแแแแแแขแฃแ แแแก แฃแญแแ แก แแฎแแ แก แขแแแแแ แแแแก แแแขแ? แแแกแฃแฎแแก แแแแแแแขแฃแ แ แแแแแแ แแแแแแแขแฃแ แ
3.1.แแแ แขแแแ แแแขแแก แแแแแแแแ InLine แฆแแแแแแแแก แแฎแแ แแแญแแ แแ
3.2.แแแขแแก แแแแแแแแ, แ แแแแแแช แแชแแแแแแก แแแแแแแแแแ แแแแแแก แแ แฉแแฃแแ แฅแแแแฅแแกแแแแก
3.3.แแแขแแก แแแแแแแแ, แ แแแแแแช แแฉแแแแแแก แฃแแฎแแแกแ แกแขแแขแแแแแก แฉแแแแแแแแแแก habr.com-แแแ แแแแแแแแฃแ Hub-แแแ แแแฃแแแแแ แแแกแแแแ
แ แ แขแแแแก แแแแแแแขแฃแ แแแก แฃแญแแ แก แแฎแแ แก แขแแแแแ แแแแก แแแขแ?
แแ แฌแแ แแก แแ แแก telegram.bot
แกแแจแฃแแแแแแก แแแซแแแแ แจแแฅแแแแ แแ แ แขแแแแก แแแแแแแขแฃแ แ:
- แแแกแฃแฎแ - แซแแ แแแแแ, แฉแแแฃแแแแ แแแ แแแแแแแขแฃแ แ, แ แแแแแแช แแแแแแแกแแแฃแแแ แจแแขแงแแแแแแแแก แขแแฅแกแขแแก แจแแงแแแแแก แแแแแแแก แฅแแแจ. แแกแแแ แแแแแแแขแฃแ แ แฃแแ แแแแ แแแแแแแแก แขแแฅแกแขแฃแ แจแแขแงแแแแแแแแก แแแขแแ แแ แขแแฅแกแขแแก แกแแฎแแ แแก แแแฃแแแแแแแก แขแแฅแกแขแก, แ แแแแแแช แแแฌแแ แแแแ แแแแแ แฆแแแแแแ.
- Inline - แแแแแแแขแฃแ แ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแแแ แแขแฃแ แแแขแแก แจแแขแงแแแแแแแแกแแแ. แแก แแแแแแแขแฃแ แ แแแแแแแแก แแแขแแก แแแแแชแแแแแก, แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แแแญแแ แแ แฆแแแแแก; แแก แแแแแชแแแแแ แจแแแซแแแแ แแแแกแฎแแแแแแแแแแก แฆแแแแแแ แแแฌแแ แแแ แขแแฅแกแขแแกแแแ. แแ แแกแแแ แฆแแแแแแแ แแฃแจแแแแแแ แแแจแแแแแแ CallbackQueryHandler.
แแแแกแแแแแก, แ แแ แแแขแแ แแแฎแกแแแก แแแแแแแขแฃแ แ, แแฃแชแแแแแแแแ แจแแขแงแแแแแแแแก แแแแแแแแแก แแแแแแแ sendMessage()
, แแ แแฃแแแแขแแ แแแแแกแชแแก แแแ แ แจแแฅแแแแแ แแแแแแแขแฃแ แ reply_markup
.
แฅแแแแแ แแแแแแฎแแแแแ แ แแแแแแแแ แแแแแแแแก.
แแแกแฃแฎแแก แแแแแแแขแฃแ แ
แ แแแแ แช แแแแแ แแแแฌแแ แ, แแก แแ แแก แแแแแแ แ แแแขแแก แแแแขแ แแแแก แแแแแแแขแฃแ แ.
แแแกแฃแฎแแก แแแแแแแขแฃแ แแก แจแแฅแแแแก แแแแแแแแ แแคแแชแแแแฃแ แ แแแฎแแแ แแแแกแแแ
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: แแแ แขแแแ แแแขแ แแแกแฃแฎแแก แแแแแแแขแฃแ แแ
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()
แแแฃแจแแแ แแแแแ แแแชแแแฃแแ แแแแแก แแแแแแแแ, แแแก แจแแแแแ, แ แแช แจแแชแแแแแ "YOUR BOT TOKEN" แ แแแแฃแ แ แแแขแแแแ, แ แแแแแแช แแแแฆแแ แแแขแแก แแแจแแแแแแ แจแแฅแแแแกแแก. BotFather (แแ แแแกแแฃแแ แ แแแขแแก แจแแฅแแแแแ
แแแ แแแแ แกแขแแขแแ ).
แแแจแแแแแก แจแแแแแ, แแแแชแแ แแแขแก แแ แซแแแแแ /start
, แแแแขแแ แแก แแ แแก แแฃแกแขแแ แแก, แ แแช แฉแแแ แแแแแกแแแฆแแ แแ แแแแแแแขแฃแ แแก แแแกแแจแแแแแ.
แแฃ แแ แแแแแแขแจแ แแแแแญแแ แแแแแ แแแชแแแฃแแ แแแแแก แแแแแแแแแก แแแแแแแแแแแ แแแแแแแแแก, แคแแแขแ แแแแก แแ แแแแแฃแจแแแแแแแแแก แจแแฅแแแแ, แแแจแแ แฃแแแ แแแฃแแ แฃแแแแ แฌแแแแก.
แฉแแแ แจแแแฅแแแแแ 4 แแแแแแ:
- แแแฌแงแแแ โ แแแฃแจแแแ แแแแแแแขแฃแ แ
- chat_id โ แแแแแฎแแแแ แฉแแขแแก ID
- my_name โ แแแแแฎแแแแ แแฅแแแแ แกแแฎแแแ
- my_username โ แแแแแฎแแแแ แแฅแแแแ แจแแกแแแ
แแแแแ แแขแแกแขแแก แจแแขแงแแแแแแแแแแก แคแแแขแ แแแ แแแแแแขแ 3 แจแแขแงแแแแแแแแก แคแแแขแ แ แแแแ แขแแฅแกแขแแก แแแฎแแแแแ:
- chat_id โ แจแแขแงแแแแแแแแแ แขแแฅแกแขแแ
"ะงะฐั ID"
- แกแแฎแแแ - แจแแขแงแแแแแแแแแ แขแแฅแกแขแแ
"ะะพั ะธะผั"
- แแแแฎแแแ แแแแแก แกแแฎแแแ โ แจแแขแงแแแแแแแแแ แขแแฅแกแขแแ
"ะะพะน ะปะพะณะธะฝ"
แฉแแแ แจแแแฅแแแแแ 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 แฆแแแแแแ แแแฌแแแแฃแแแแแแ แกแแแแกแฃแฎแแ, แแกแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแขแแก แแแแแแ answerCallbackQuery()
, แ แแแแแกแแช แจแแฃแซแแแ แแฉแแแแแก แจแแขแงแแแแแแแ แขแแแแแ แแแแก แแแขแแ แคแแแกแจแ แแแแฎแแแ แแแแแกแแแแก, แ แแแแแแช แแแแญแแ แก Inline แฆแแแแแก.
Inline แฆแแแแแแแแ แแแแแแแแแแ แแแแแชแแแแแ แแ แแ แแก แขแแฅแกแขแ, แแแแขแแ แแแก แแแกแแแฃแจแแแแแแแ แกแแญแแ แแ แแ แซแแแแแแก แแแแแงแแแแแแ แกแแแชแแแแฃแ แ แแแแแฃแจแแแแแแแก แจแแฅแแแ CallbackQueryHandler()
.
Inline แแแแแแแขแฃแ แแก แจแแฅแแแแก แแแแ, แ แแแแแแช แแแชแแแฃแแแ แแแแแขแแก แแคแแชแแแแฃแ แแแฎแแแ แแแแจแ telegram.bot
.
แแแแ แจแแแ แแแแแแแขแฃแ แแก แจแแกแแฅแแแแแแ แแคแแชแแแแฃแ แ แแแฎแแแ แแแแกแแแ
# 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 แแแแแแแขแฃแ แ. IN InlineKeyboardMarkup()
แแฃแชแแแแแแแแ แแแแแ แแ Inline แฆแแแแแแแแก แกแแแแแก แกแแ, แแแแแแฃแแ แแแแแแแแฃแแแฃแ แ แฆแแแแแ แแฅแแแแแ แคแฃแแฅแชแแแ InlineKeyboardButton()
.
แแแแแแ แฆแแแแแก แจแแฃแซแแแ แแแ แแแแฃแแ แแแแแชแแแแแแก แแแแแชแแแ แแแขแแ แแ แแฃแแแแขแแก แแแแแงแแแแแแ callback_data
แแ แแแฎแกแแแแ แแแแแกแแแแ แ HTML แแแแ แแ, แ แแแแแแช แแแแแแแแฃแแแ แแ แแฃแแแแขแแก แแแแแงแแแแแแ url
.
แจแแแแแ แแฅแแแแ แกแแ, แ แแแแแจแแช แแแแแแฃแแ แแแแแแแขแ แแกแแแ แแ แแก Inline แฆแแแแแแแแก แกแแ, แ แแแแแแแช แฃแแแ แแแแ แแแแแแแก แแ แ แ แแแจแ.
แจแแแแแ แฉแแแ แแแแแแฎแแแแแ แแแขแแแแก แ แแแแแแแแ แแแแแแแแก Inline แฆแแแแแแแแ.
แแแ แขแแแ แแแขแแก แแแแแแแแ InLine แฆแแแแแแแแก แแฎแแ แแแญแแ แแ
แแแ แแแ แ แแแจแ, แฉแแแ แแแแฌแแ แ แแแขแก แแแแแ-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()
แแแฃแจแแแ แแแแแ แแแชแแแฃแแ แแแแแก แแแแแแแแ, แแแก แจแแแแแ, แ แแช แจแแชแแแแแ "YOUR BOT TOKEN" แ แแแแฃแ แ แแแขแแแแ, แ แแแแแแช แแแแฆแแ แแแขแแก แแแจแแแแแแ แจแแฅแแแแกแแก. BotFather (แแ แแแกแแฃแแ แ แแแขแแก แจแแฅแแแแแ
แแแ แแแแ แกแขแแขแแ ).
แจแแแแแ:
แฉแแแ แจแแแฅแแแแแ แแ แ แแแแแแ:
- แขแแกแขแ โ แฉแแขแจแ แแแกแแแแแแแแ Inline แแแแแแแขแฃแ แ
- แแแกแฃแฎแ_แแ โ แแแแแแแขแฃแ แแแแ แแแแแแแแแแ แแแแแชแแแแแแก แแแกแแแฃแจแแแแแแแ.
แแแแแชแแแแแ, แ แแแแแแแช แแแแแแแแแแแ แแแแแแฃแแ แฆแแแแแแแแ, แแแแแแแแฃแแแ แแ แแฃแแแแขแจแ callback_data
, แฆแแแแแแก แจแแฅแแแแกแแก. แแฅแแแ แจแแแแซแแแแ แแแแฆแแ แฆแแแแแแแแ แแแแแแแแแแ แแแแแชแแแแแ แแแแกแขแ แฃแฅแชแแแก แแแแแงแแแแแแ update$callback_query$data
, แแแแแแแก แจแแแแแ แแแกแฃแฎแ_แแ.
แแแแกแแแแแก, แ แแ แแแขแแ แแแแฎแแแแแก แ แแแแแ แแแ Inline แแแแแแแขแฃแ แแแ, แแแแแแ แแแกแฃแฎแ_แแ แแแแฃแจแแแแแฃแแแ แกแแแชแแแแฃแ แ แแแแแฃแจแแแแแแแก แแแแ : 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()
แแแฃแจแแแ แแแแแ แแแชแแแฃแแ แแแแแก แแแแแแแแ, แแแก แจแแแแแ, แ แแช แจแแชแแแแแ "YOUR BOT TOKEN" แ แแแแฃแ แ แแแขแแแแ, แ แแแแแแช แแแแฆแแ แแแขแแก แแแจแแแแแแ แจแแฅแแแแกแแก. BotFather (แแ แแแกแแฃแแ แ แแแขแแก แจแแฅแแแแแ
แแแ แแแแ แกแขแแขแแ ).
แแฎแแ แฉแแแ แแแแฌแแ แแ 2 แชแแแแ แแแแแแ แ.แ. แแ แแ แแแแแแ, แแแแแแฃแแ แฆแแแแแแกแแแแก แแแแญแแ แ แแ แแแแแแงแแแ แแ แแฃแแแแขแ pattern
แแแแ แแแแแฃแจแแแแแแแแแก แจแแฅแแแแกแแก:
query_handler_yes <- CallbackQueryHandler(answer_cb_yes, pattern = 'yes')
query_handler_no <- CallbackQueryHandler(answer_cb_no, pattern = 'no')
แแแแแแแก แแแแ แแแแแ แแแแ แแแกแฃแฎแ_แแ แแฃแแแ bot$answerCallbackQuery(callback_query_id = update$callback_query$id)
, แ แแแแแแช แแฃแแแแแ แแแขแก, แ แแ แแแแแชแแแแแ แแแฆแแแฃแแแ inline แแแแแแแขแฃแ แแแแ.
แแแขแแก แแแแแแแแ, แ แแแแแแช แแชแแแแแแก แแแแแแแแแแ แแแแแแก แแ แฉแแฃแแ แฅแแแแฅแแกแแแแก
แจแแแแชแแแแ แแแแฌแแ แแ แแแขแ, แ แแแแแแช แแแฎแแแก แแแแแแแก แแแแแชแแแแแก.
แแแกแ แแฃแจแแแแแก แแแแแแ แจแแแแแแ แแฅแแแแ. แแแแแแแแ แแแแแ แแฃแแแแก แแแแ /start
แแฅแแแ แฃแ แแแแแ แแแแแแ แแแแแแแขแฃแ แแก, แ แแแแแกแแช แแฅแแก แแฎแแแแ แแ แแ แฆแแแแแ โแแแแแแโ. แแ แฆแแแแแแ แแแฌแแแแฃแแแแแ แแฅแแแ แแแแฆแแแ แจแแขแงแแแแแแแแก Inline แแแแแแแขแฃแ แแ, แ แแ แแแ แฉแแแ แฅแแแแฅแ, แ แแแแแกแแแแกแแช แแกแฃแ แ แแแแแแ แแแแแแแแ แ แแแแแแ. แแแ แฉแแแ แแ แ-แแ แแ แฅแแแแฅแ แแ แแแแฆแแ แแแแแแแแ แ แแแแแแ.
แแ แแแแแก แแแแแแแแจแ แฉแแแ แแแแแแแงแแแแแ แ แแแแแแแแ แแแแแขแแแแ แแแแแขแก:
httr
โ แแแแแขแ HTTP แแแแฎแแแแแแแแ แแฃแจแแแแแกแแแแก, แ แแแแแก แกแแคแฃแซแแแแแแช แแแแแฃแแแ แแฃแจแแแแ แแแแแกแแแแ API-แกแแแ. แฉแแแแก แจแแแแฎแแแแแจแ แฉแแแ แแแแแแแงแแแแแ แฃแคแแกแ API-แกopenweathermap.org .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()
แแแฃแจแแแ แแแแแ แแแชแแแฃแแ แแแแแก แแแแแแแแ, แแแก แจแแแแแ, แ แแช แจแแชแแแแแ "YOUR BOT TOKEN" แ แแแแฃแ แ แแแขแแแแ, แ แแแแแแช แแแแฆแแ แแแขแแก แแแจแแแแแแ แจแแฅแแแแกแแก. BotFather (แแ แแแกแแฃแแ แ แแแขแแก แจแแฅแแแแแ
แแแ แแแแ แกแขแแขแแ ).
แจแแแแแแ, แฉแแแแ แแแขแ แแแฃแจแแแแแก แแกแ:
แกแฅแแแแขแฃแ แแ, แแก แแแขแ แจแแแซแแแแ แแงแแก แแกแ แแแแแกแแฎแฃแแ:
แฉแแแ แจแแแฅแแแแแ 3 แแแแแแ, แ แแแแแแช แฎแแแแแกแแฌแแแแแแ แฉแแแแ แแแแแแแก แแแขแแก แจแแแแแ:
- แแแฌแงแแแ โ แแแฃแจแแแ แแแแแแ แ แแแขแแก แแแแแแแขแฃแ แ
- แแแแแแ โ แแแฃแจแแแ Inline แแแแแแแขแฃแ แ แฅแแแแฅแแก แแกแแ แฉแแแแ
- แแแกแฃแฎแ_แแ โ แแแแแแ แ แแแแแแ, แ แแแแแแช แแแฎแแแก แแแแแแก API-แแแ แแแชแแแฃแแ แฅแแแแฅแแกแแแแก แแ แแแแแแแแก แแแก แฉแแขแจแ.
แแแแแแ แแแฌแงแแแ แฉแแแ แแแฌแงแแแ แแแก แแ แซแแแแแแ /start
, แ แแแแแกแแช แแฎแแ แชแแแแแแก แแแแแฃแจแแแแแแแ CommandHandler('start', start)
.
แแแแแแแก แแแกแแจแแแแแ แแแแแแ แฉแแแ แจแแแฅแแแแแ แแแแแ แกแแฎแแแฌแแแแแแก แคแแแขแ แ:
# ัะพะทะดะฐัะผ ัะธะปัััั
## ัะพะพะฑัะตะฝะธั ั ัะตะบััะพะผ ะะพะณะพะดะฐ
MessageFilters$weather <- BaseFilter(function(message) {
# ะฟัะพะฒะตััะตะผ ัะตะบัั ัะพะพะฑัะตะฝะธั
message$text == "ะะพะณะพะดะฐ"
}
)
แแ แฉแแแ แแฃแฌแแแแแ แแ แแแแแแก แจแแแแแแ แจแแขแงแแแแแแแแแแก แแแแแฃแจแแแแแแแ: MessageHandler(weather, filters = MessageFilters$weather)
.
แแ แแแแแก, แฉแแแแ แแแแแแ แ แแแแแแ แแแกแฃแฎแ_แแ แ แแแแแ แแแก Inline แฆแแแแแแแแก แแแญแแ แแแ, แ แแแแแกแแช แแฎแแ แชแแแแแแก แกแแแชแแแแฃแ แ แแแแแฃแจแแแแแแแ: CallbackQueryHandler(answer_cb)
.
แแแแแแแก แจแแแแแ แแแกแฃแฎแ_แแ, แแแแแฎแฃแแแแ แแแแแแแขแฃแ แแแแ แแแแแแแแแแแ แแแแแชแแแแแก แแ แแฌแแ แ แชแแแแแจแ city
: city <- update$callback_query$data
. แจแแแแแ แแแแฎแแแ แแแแแแแก แแแแแชแแแแแก API-แแแ, แแฅแแแแ แแ แแแแแแแแแ แจแแขแงแแแแแแแแก แแ แแแแแก แแแงแแแแแ แแแแแแก answerCallbackQuery
แ แแแ แจแแแขแงแแแแแแ แแแขแก, แ แแ แแแแแแฃแจแแแแ Inline แฆแแแแแแก แแแฌแแแแฃแแแแ.
แแแขแแก แแแแแแแแ, แ แแแแแแช แแฉแแแแแแก แฃแแฎแแแกแ แกแขแแขแแแแแก แกแแแก แแแแแแแแฃแ Hub-แแก แแแฃแแแแแ www.habr.com .
แแ แฌแแ แแแแแแแแแ แแ แแแขแก, แ แแแ แแแฉแแแแแ, แแฃ แ แแแแ แฃแแแ แแฉแแแแแ Inline แฆแแแแแแแ, แ แแแแแแแช แแแแแแ แแแ แแแแ แแแแแ.
แแ แแแขแแก แแแแแแ แฌแแแ แแกแแแแกแแ; แแแแแแแแ แแแแแ แแ แซแแแแแแ แแฃแจแแแแ แแแแแแ แแแแแแแขแฃแ แแก /start
. แจแแแแแแ, แแแขแ แแแแซแแแแก 6 แฐแแแแก แกแแแก, แ แแแแแแแแแช แฃแแแ แแแ แฉแแแ, แฉแแแ แแแ แฉแแแ แฉแแแแแแแก แแแแแขแแ แแกแแแฃแ แชแแแขแ แก แแ แแแฆแแแ 5 แฃแแฎแแแก แแฃแแแแแแชแแแก แแ แฉแแฃแแ แฐแแแแแแ.
แ แแแแ แช แแแกแแแ, แแ แจแแแแฎแแแแแจแ แฉแแแ แฃแแแ แแแแแฆแแ แกแขแแขแแแแแก แกแแ แแ แแแแกแแแแก แแแแแแแงแแแแแ แกแแแชแแแแฃแ แแแแแขแก habR
, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแฎแแแแ แกแขแแขแแแแ แฐแแแ แแกแแแ แแ แแแ แจแแกแแฎแแ แแแ แแแแฃแแ แกแขแแขแแกแขแแแ แ .
แแแแแแกแขแแแแ แแ แแแแแขแ 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()
แแแฃแจแแแ แแแแแ แแแชแแแฃแแ แแแแแก แแแแแแแแ, แแแก แจแแแแแ, แ แแช แจแแชแแแแแ "YOUR BOT TOKEN" แ แแแแฃแ แ แแแขแแแแ, แ แแแแแแช แแแแฆแแ แแแขแแก แแแจแแแแแแ แจแแฅแแแแกแแก. 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)
}
แฉแแแ แแแฆแแแ แกแขแแขแแแแแก แฉแแแแแแแแแแก แแแแแแแแฃแแ Hub-แแแ แแ แซแแแแแแ 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]
.
แจแแแแแแ, แฉแแแ แแฅแแแแ แคแแแขแ แก, แแแแแฃแจแแแแแแแแก แแ แแแแฃแจแแแ แฉแแแแ แแแขแ.
แแแกแแแแ
แแฎแแ แแฅแแแ แแแแ แแแฌแแ แแแ แแแขแแแ แแแแ แแ แฃแคแ แ แแแกแแฎแแ แฎแแแแแ แแฅแแแแ แแแแแกแแงแแแแแแแ, แแแแก แแแแ, แ แแ แแกแแแ แแแแขแ แแแแแแ แแแแแแแขแฃแ แแแแ แแ แแ แ แแ แซแแแแแแแแก แจแแงแแแแแ. แแแแแแฃแ, แกแแแ แขแคแแแแก แกแแจแฃแแแแแแ แแแขแแแ แฃแ แแแแ แแแแแกแแก, แแแแแแแขแฃแ แ แแแแจแแแแแแแแแ แแแแแแ แขแแแแแก แแแกแ แแแแแงแแแแแแก แแ แแชแแกแก.
แจแแแแแ แกแขแแขแแแจแ แฉแแแ แแแแแ แแแแแ, แแฃ แ แแแแ แฃแแแ แแแแจแแแแ แแแแแแฃแ แ แแแแแแแ แแแขแแแ แแ แแแแฃแจแแแ แแแแแชแแแแ แแแแแแแแ.
แฌแงแแ แ: www.habr.com