"R เชฎเชพเช เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช เชฒเชเชตเซเช" เชถเซเชฐเซเชฃเซเชจเซ เช เชคเซเชฐเซเชเซ เชฒเซเช เชเซ. เช
เชเชพเชเชจเชพ เชชเซเชฐเชเชพเชถเชจเซเชฎเชพเช, เช
เชฎเซ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช เชเซเชตเซ เชฐเซเชคเซ เชฌเชจเชพเชตเชตเซ, เชคเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชธเชเชฆเซเชถเชพ เชฎเซเชเชฒเชตเชพ, เชฌเซเชเชฎเชพเช เชเชฆเซเชถเซ เช
เชจเซ เชธเชเชฆเซเชถ เชซเชฟเชฒเซเชเชฐเซเชธ เชเชฎเซเชฐเชตเชพ เชถเซเชเซเชฏเชพ. เชคเซเชฅเซ, เชคเชฎเซ เช เชฒเซเช เชตเชพเชเชเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชคเซ เชชเชนเซเชฒเชพเช, เชนเซเช เชเซเชฌ เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช เชเซ เชคเชฎเซ เชตเชพเชเชเซ
เช เชฒเซเชเชฎเชพเช, เช เชฎเซ เชเซเชฌเซเชฐเซเชก เชเชฎเซเชฐเซเชจเซ เช เชฎเชพเชฐเชพ เชฌเซเชเชจเซ เชเชชเชฏเซเชเซเชคเชพเชฎเชพเช เชธเซเชงเชพเชฐเซ เชเชฐเซเชถเซเช, เชเซ เชฌเซเช เชเชจเซเชเชฐเชซเซเชธเชจเซ เชธเชพเชนเชเชฟเช เช เชจเซ เชเชชเชฏเซเชเชฎเชพเช เชธเชฐเชณ เชฌเชจเชพเชตเชถเซ.
"R เชฎเชพเช เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช เชฒเชเชตเซเช" เชถเซเชฐเซเชฃเซเชจเชพ เชคเชฎเชพเชฎ เชฒเซเชเซ
เช เชฎเซ เชเช เชฌเซเช เชฌเชจเชพเชตเซเช เชเซเช เช เชจเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเซเชฒเชฟเชเซเชฐเชพเชฎเชฎเชพเช เชธเชเชฆเซเชถเชพ เชฎเซเชเชฒเชตเชพ เชฎเชพเชเซ เชเชฐเซเช เชเซเช เชฌเซเชเชฎเชพเช เชเชฎเชพเชจเซเชก เชธเชชเซเชฐเซเช เช เชจเซ เชฎเซเชธเซเช เชซเชฟเชฒเซเชเชฐเซเชธ เชเชฎเซเชฐเซ เชฌเซเชเชฎเชพเช เชเซเชฌเซเชฐเซเชก เชธเชชเซเชฐเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฎเซเชฐเชตเซ
เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ
เชเซ เชคเชฎเชจเซ เชกเซเชเชพ เชตเชฟเชถเซเชฒเซเชทเชฃเชฎเชพเช เชฐเชธ เชนเซเชฏ, เชคเซ เชคเชฎเชจเซ เชฎเชพเชฐเชพเชฎเชพเช เชฐเชธ เชนเซเช เชถเชเซ เชเซ
เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช เชเชฏเชพ เชชเซเชฐเชเชพเชฐเชจเชพเช เชเซเชฌเซเชฐเซเชกเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ? เชเซเชฌเซเชฐเซเชกเชจเซ เชเชตเชพเชฌ เชเชชเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก
3.1.เชเชจเชฒเชพเชเชจ เชฌเชเชจเซ เชฎเชพเชเซ เชธเชชเซเชฐเซเช เชธเชพเชฅเซ เชธเชฐเชณ เชฌเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ
3.2.เชชเชธเชเชฆ เชเชฐเซเชฒ เชถเชนเซเชฐ เชฎเชพเชเซ เชตเชฐเซเชคเชฎเชพเชจ เชนเชตเชพเชฎเชพเชจเชจเซ เชเชพเชฃ เชเชฐเชคเชพ เชฌเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ
3.3.เชฌเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซ habr.com เชชเชฐเชฅเซ เชเชฒเซเชฒเซเชเชฟเชค เชนเชฌเชจเซ เชฒเชฟเชเชเซเชธ เชธเชพเชฅเซ เชจเชตเซเชจเชคเชฎ เชฒเซเชเซเชจเซ เชธเซเชเชฟ เชฆเชฐเซเชถเชพเชตเซ เชเซ เชจเชฟเชทเซเชเชฐเซเชท
เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช เชเชฏเชพ เชชเซเชฐเชเชพเชฐเชจเชพเช เชเซเชฌเซเชฐเซเชกเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ?
เช เชฒเซเชเชจ เชธเชฎเชฏเซ telegram.bot
เชคเชฎเชจเซ เชฌเซ เชชเซเชฐเชเชพเชฐเชจเชพ เชเซเชฌเซเชฐเซเชก เชฌเชจเชพเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ:
- เชเชตเชพเชฌ เชเชชเซ - เชฎเซเชเซเชฏ, เชจเชฟเชฏเชฎเชฟเชค เชเซเชฌเซเชฐเซเชก, เชเซ เชธเชเชฆเซเชถ เชเซเชเซเชธเซเช เชเชจเชชเซเช เชชเซเชจเชฒ เชนเซเช เชณ เชธเซเชฅเชฟเชค เชเซ. เชเชตเชพ เชเซเชฌเซเชฐเซเชก เชฌเซเชเชจเซ เชซเชเซเชค เชเซเชเซเชธเซเช เชธเชเชฆเซเชถ เชฎเซเชเชฒเซ เชเซ, เช เชจเซ เชเซเชเซเชธเซเช เชคเชฐเซเชเซ เชคเซ เชฌเชเชจ เชชเชฐ เช เชฒเชเชพเชฏเซเชฒ เชเซเชเซเชธเซเช เชฎเซเชเชฒเชถเซ.
- เชเชจเชฒเชพเชเชจ - เชเซเชเซเชเชธ เชฌเซเช เชธเชเชฆเซเชถ เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒ เชเซเชฌเซเชฐเซเชก. เช เชเซเชฌเซเชฐเซเชก เชฆเชฌเชพเชตเซเชฒเชพ เชฌเชเชจ เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒ เชฌเซเช เชกเซเชเชพ เชฎเซเชเชฒเซ เชเซ; เช เชกเซเชเชพ เชฌเชเชจ เชชเชฐ เชฒเชเซเชฒเชพ เชเซเชเซเชธเซเชเชฅเซ เช เชฒเช เชนเซเช เชถเชเซ เชเซ. เช เชจเซ เชเชตเชพ เชฌเชเชจเซ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ 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()
เชเชชเชฐเซเชเซเชค เชเซเชก เชเชฆเชพเชนเชฐเชฃ เชเชฒเชพเชตเซ, 'เชฏเซเชฐ เชฌเซเช เชเซเชเชจ' เชจเซ เชฌเชฆเชฒเซเชฏเชพ เชชเชเซ, เชคเชฎเชจเซ เชฌเซเช เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเชฒ เชตเชพเชธเซเชคเชตเชฟเช เชเซเชเชจ เชธเชพเชฅเซ เชฌเซเชเชซเซเชงเชฐ (เชฎเซเช เชฎเชพเช เชฌเซเช เชฌเชจเชพเชตเชตเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ
เชชเซเชฐเชฅเชฎ เชฒเซเช ).
เชฒเซเชจเซเช เชเชฐเซเชฏเชพ เชชเชเซ, เชฌเซเชเชจเซ เชเชฆเซเชถ เชเชชเซ /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)
เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก
เชฎเซเช เชเชชเชฐ เชฒเชเซเชฏเซเช เชคเซเชฎ, เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชเซเชเซเชเชธ เชธเชเชฆเซเชถ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒเซเช เชเซ. เชฎเซเชเซเชฏ เชเซเชฌเซเชฐเซเชก เชเชฐเชคเชพเช เชคเซเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเซเช เชเชเชเช เชตเชงเซ เชฎเซเชถเซเชเซเชฒ เชเซ.
เชถเชฐเซเชเชคเชฎเชพเช, เชคเชฎเชพเชฐเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชกเชจเซ เชเซเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชฌเซเชเชฎเชพเช เชเช เชชเชฆเซเชงเชคเชฟ เชเชฎเซเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชเชจเชฒเชพเชเชจ เชฌเชเชจ เชเซเชฒเชฟเชเชจเซ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชเชชเชตเชพ เชฎเชพเชเซ, เชคเชฎเซ เชฌเซเช เชชเชฆเซเชงเชคเชฟเชจเซ เชชเชฃ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ answerCallbackQuery()
, เชเซ เชเชจเชฒเชพเชเชจ เชฌเชเชจ เชฆเชฌเชพเชตเชจเชพเชฐ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชธเซเชเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเซ เชถเชเซ เชเซ.
เชเชจเชฒเชพเชเชจ เชฌเชเชจเชฅเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซเชฒ เชกเซเชเชพ เชเซเชเซเชธเซเช เชจเชฅเซ, เชคเซเชฅเซ เชคเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชฟเชถเชฟเชทเซเช เชนเซเชจเซเชกเชฒเชฐ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ CallbackQueryHandler()
.
เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซเชจเซ เชเซเชก เชเซ เชชเซเชเซเชเชจเซ เชธเชคเซเชคเชพเชตเชพเชฐ เชฎเชฆเชฆเชฎเชพเช เชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ 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)
เชคเชฎเชพเชฐเซ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ InlineKeyboardMarkup()
, เชเชตเชพเชฌ เชเซเชฌเซเชฐเซเชก เชเซเชตเชพ เช เชธเชฟเชฆเซเชงเชพเชเชค เชชเชฐ. IN InlineKeyboardMarkup()
เชเชจเชฒเชพเชเชจ เชฌเชเชจเซเชจเซ เชธเซเชเชฟเชจเซ เชธเซเชเชฟ เชชเชธเชพเชฐ เชเชฐเชตเซ เชเชฐเซเชฐเซ เชเซ, เชฆเชฐเซเช เชตเซเชฏเชเซเชคเชฟเชเชค เชฌเชเชจ เชซเชเชเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ InlineKeyboardButton()
.
เชเชจเชฒเชพเชเชจ เชฌเชเชจ เชเชพเช เชคเซ เชฆเชฒเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฌเซเชเชจเซ เชเซเชเชฒเซเช เชกเซเชเชพ เชฎเซเชเชฒเซ เชถเชเซ เชเซ callback_data
, เช
เชฅเชตเชพ เชฆเชฒเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชฒเซเชฒเซเชเชฟเชค เชเซเชเชชเชฃ HTML เชชเซเชทเซเช เชเซเชฒเซ url
.
เชชเชฐเชฟเชฃเชพเชฎ เช เชธเซเชเชฟ เชนเชถเซ เชเซเชฎเชพเช เชฆเชฐเซเช เชเชเช เชเชจเชฒเชพเชเชจ เชฌเชเชจเซเชจเซ เชธเซเชเชฟ เชชเชฃ เชเซ เชเซเชจเซ เชเช เชชเชเชเซเชคเชฟเชฎเชพเช เชเซเชกเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชเชเชณ เชเชชเชฃเซ เชเชจเชฒเชพเชเชจ เชฌเชเชจเซ เชธเชพเชฅเซเชจเชพ เชฌเซเชเซเชธเชจเชพ เชเซเชเชฒเชพเช เชเชฆเชพเชนเชฐเชฃเซ เชเซเชเชถเซเช.
เชเชจเชฒเชพเชเชจ เชฌเชเชจเซ เชฎเชพเชเซ เชธเชชเซเชฐเซเช เชธเชพเชฅเซ เชธเชฐเชณ เชฌเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ
เชชเซเชฐเชฅเชฎ, เช
เชฎเซ เชเซเชตเชฟเชก-19 เชฎเชพเชเซ เชเชเซเชธเชชเซเชฐเซเชธ เชเซเชธเซเชเชฟเชเช เชฎเชพเชเซ เชฌเซเช เชฒเชเซเชถเซเช. เชเชฆเซเชถ เชฆเซเชตเชพเชฐเชพ /test
, เชคเซ เชคเชฎเชจเซ เชฌเซ เชฌเชเชจเซ เชธเชพเชฅเซ เชเซเชฌเซเชฐเซเชก เชฎเซเชเชฒเชถเซ, เชเซ เชฌเชเชจ เชฆเชฌเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชคเซเชจเชพ เชเชงเชพเชฐเซ เชคเซ เชคเชฎเชจเซ เชคเชฎเชพเชฐเชพ เชชเชฐเซเชเซเชทเชฃเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชธเชพเชฅเซเชจเซ เชธเชเชฆเซเชถ เชฎเซเชเชฒเชถเซ.
เชเซเชก 2: เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชธเชพเชฅเซเชจเซ เชธเซเชฅเซ เชธเชฐเชณ เชฌเซเช
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()
เชเชชเชฐเซเชเซเชค เชเซเชก เชเชฆเชพเชนเชฐเชฃ เชเชฒเชพเชตเซ, 'เชฏเซเชฐ เชฌเซเช เชเซเชเชจ' เชจเซ เชฌเชฆเชฒเซเชฏเชพ เชชเชเซ, เชคเชฎเชจเซ เชฌเซเช เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเชฒ เชตเชพเชธเซเชคเชตเชฟเช เชเซเชเชจ เชธเชพเชฅเซ เชฌเซเชเชซเซเชงเชฐ (เชฎเซเช เชฎเชพเช เชฌเซเช เชฌเชจเชพเชตเชตเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ
เชชเซเชฐเชฅเชฎ เชฒเซเช ).
เชชเชฐเชฟเชฃเชพเชฎ:
เช เชฎเซ เชฌเซ เชชเชฆเซเชงเชคเชฟเช เชฌเชจเชพเชตเซ เชเซ:
- เชเซเชธเซเช - เชเซเช เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชชเชฐ เชฎเซเชเชฒเชตเชพ เชฎเชพเชเซ
- เชเชตเชพเชฌ_เชธเซเชฌเซ - เชเซเชฌเซเชฐเซเชก เชชเชฐเชฅเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซเชฒ เชกเซเชเชพ เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพ เชฎเชพเชเซ.
เชฆเชฐเซเช เชฌเชเชจเชฎเชพเชเชฅเซ เชเซ เชกเซเชเชพ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเชถเซ เชคเซ เชฆเชฒเซเชฒเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชเซ callback_data
, เชฌเชเชจ เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ. เชคเชฎเซ เชเชจเซเชธเซเชเซเชฐเชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฌเชเชจเชฎเชพเชเชฅเซ เชฎเซเชเชฒเซเชฒ เชกเซเชเชพ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชถเชเซ เชเซ update$callback_query$data
, เชชเชฆเซเชงเชคเชฟเชจเซ เช
เชเชฆเชฐ เชเชตเชพเชฌ_เชธเซเชฌเซ.
เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชชเชฐ เชฌเซเช เชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเชชเซ เชคเซ เชฎเชพเชเซ, เชชเชฆเซเชงเชคเชฟ เชเชตเชพเชฌ_เชธเซเชฌเซ เชตเชฟเชถเชฟเชทเซเช เชนเซเชจเซเชกเชฒเชฐ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ: CallbackQueryHandler(answer_cb)
. เชเซ เชเชจเชฒเชพเชเชจ เชฌเชเชจ เชเซเชฒเชฟเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ เชเชฒเซเชฒเซเชเชฟเชค เชชเชฆเซเชงเชคเชฟ เชเชฒเชพเชตเซ เชเซ. เชนเซเชจเซเชกเชฒเชฐ CallbackQueryHandler เชฌเซ เชฆเชฒเซเชฒเซ เชฒเซ เชเซ:
callback
- เชชเชฆเซเชงเชคเชฟ เชเซ เชเซ เชเชฒเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซpattern
- เชฆเชฒเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฌเชเชจ เชธเชพเชฅเซ เชฌเชเชงเชพเชฏเซเชฒ เชกเซเชเชพ เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชเชฐ เชเชฐเซcallback_data
.
เชคเชฆเชจเซเชธเชพเชฐ, เชฆเชฒเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ pattern
เช
เชฎเซ เชฆเชฐเซเช เชฌเชเชจ เชฆเชฌเชพเชตเชตเชพ เชฎเชพเชเซ เชเช เช
เชฒเช เชชเชฆเซเชงเชคเชฟ เชฒเชเซ เชถเชเซเช เชเซเช:
เชเซเชก 3: เชฆเชฐเซเช เชเชจเชฒเชพเชเชจ เชฌเชเชจ เชฎเชพเชเซ เช เชฒเช เชชเชฆเซเชงเชคเชฟเช
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()
เชเชชเชฐเซเชเซเชค เชเซเชก เชเชฆเชพเชนเชฐเชฃ เชเชฒเชพเชตเซ, 'เชฏเซเชฐ เชฌเซเช เชเซเชเชจ' เชจเซ เชฌเชฆเชฒเซเชฏเชพ เชชเชเซ, เชคเชฎเชจเซ เชฌเซเช เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเชฒ เชตเชพเชธเซเชคเชตเชฟเช เชเซเชเชจ เชธเชพเชฅเซ เชฌเซเชเชซเซเชงเชฐ (เชฎเซเช เชฎเชพเช เชฌเซเช เชฌเชจเชพเชตเชตเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ
เชชเซเชฐเชฅเชฎ เชฒเซเช ).
เชนเชตเซ เชเชชเชฃเซ 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)
, เชเซ เชฌเซเชเชจเซ เชเชนเซ เชเซ เชเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชกเชฎเชพเชเชฅเซ เชกเซเชเชพ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ เชเซ.
เชชเชธเชเชฆ เชเชฐเซเชฒ เชถเชนเซเชฐ เชฎเชพเชเซ เชตเชฐเซเชคเชฎเชพเชจ เชนเชตเชพเชฎเชพเชจเชจเซ เชเชพเชฃ เชเชฐเชคเชพ เชฌเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ
เชเชพเชฒเซ เชเช เชฌเซเช เชฒเชเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช เชเซ เชนเชตเชพเชฎเชพเชจ เชกเซเชเชพเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเซ เชเซ.
เชคเซเชจเชพ เชเชพเชฎเชจเซ เชคเชฐเซเช เชจเซเชเซ เชฎเซเชเชฌ เชนเชถเซ. เชถเชฐเซเชเชคเชฎเชพเช เชเซเชฎ เชฆเซเชตเชพเชฐเชพ /start
เชคเชฎเซ เชฎเซเชเซเชฏ เชเซเชฌเซเชฐเซเชกเชจเซ เชเซเชฒ เชเชฐเซ เชเซ, เชเซเชฎเชพเช เชซเชเซเชค เชเช "เชตเซเชงเชฐ" เชฌเชเชจ เชเซ. เช เชฌเชเชจ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเชตเชพเชฅเซ เชคเชฎเซ เชเซ เชถเชนเซเชฐ เชฎเชพเชเซ เชตเชฐเซเชคเชฎเชพเชจ เชนเชตเชพเชฎเชพเชจ เชเชพเชฃเชตเชพ เชฎเชพเชเซ เชเซ เชคเซ เชถเชนเซเชฐ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชจเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชธเชพเชฅเซเชจเซ เชธเชเชฆเซเชถ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ. เชถเชนเซเชฐเซเชฎเชพเชเชฅเซ เชเช เชชเชธเชเชฆ เชเชฐเซ เช
เชจเซ เชตเชฐเซเชคเชฎเชพเชจ เชนเชตเชพเชฎเชพเชจ เชฎเซเชณเชตเซ.
เช เชเซเชก เชเชฆเชพเชนเชฐเชฃเชฎเชพเช เช เชฎเซ เชเชฃเชพ เชตเชงเชพเชฐเชพเชจเชพ เชชเซเชเซเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช:
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()
เชเชชเชฐเซเชเซเชค เชเซเชก เชเชฆเชพเชนเชฐเชฃ เชเชฒเชพเชตเซ, 'เชฏเซเชฐ เชฌเซเช เชเซเชเชจ' เชจเซ เชฌเชฆเชฒเซเชฏเชพ เชชเชเซ, เชคเชฎเชจเซ เชฌเซเช เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเชฒ เชตเชพเชธเซเชคเชตเชฟเช เชเซเชเชจ เชธเชพเชฅเซ เชฌเซเชเชซเซเชงเชฐ (เชฎเซเช เชฎเชพเช เชฌเซเช เชฌเชจเชพเชตเชตเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ
เชชเซเชฐเชฅเชฎ เชฒเซเช ).
เชชเชฐเชฟเชฃเชพเชฎเซ, เช
เชฎเชพเชฐเซเช เชฌเซเช เชเชจเชพ เชเซเชตเซเช เชเชเชเช เชเชพเชฐเซเชฏ เชเชฐเชถเซ:
เชฏเซเชเชจเชพเชเซเชฏ เชฐเซเชคเซ, เช เชฌเซเชเชจเซ เช เชฐเซเชคเซ เชฆเชฐเซเชถเชพเชตเซ เชถเชเชพเชฏ เชเซ:
เช เชฎเซ เช เชฎเชพเชฐเชพ เชนเชตเชพเชฎเชพเชจ เชฌเซเชเชจเซ เช เชเชฆเชฐ เชเชชเชฒเชฌเซเชง 3 เชชเชฆเซเชงเชคเชฟเช เชฌเชจเชพเชตเซ เชเซ:
- เชถเชฐเซเชเชค - เชฎเซเชเซเชฏ เชฌเซเช เชเซเชฌเซเชฐเซเชก เชฒเซเชเช เชเชฐเซ
- เชนเชตเชพเชฎเชพเชจ โ เชถเชนเซเชฐ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชฒเซเชเช เชเชฐเซ
- เชเชตเชพเชฌ_เชธเซเชฌเซ โ เชฎเซเชเซเชฏ เชชเชฆเซเชงเชคเชฟ เชเซ เชเชชเซเชฒ เชถเชนเซเชฐ เชฎเชพเชเซ API เชชเชพเชธเซเชฅเซ เชนเชตเชพเชฎเชพเชจเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเซ เชเซ เช เชจเซ เชคเซเชจเซ เชเซเชเชฎเชพเช เชฎเซเชเชฒเซ เชเซ.
เชชเชฆเซเชงเชคเชฟ เชถเชฐเซเชเชค เช
เชฎเซ เชคเซเชจเซ เชเชฆเซเชถ เชธเชพเชฅเซ เชฒเซเชจเซเช เชเชฐเซเช เชเซเช /start
, เชเซ เชนเซเชจเซเชกเชฒเชฐ เชฆเซเชตเชพเชฐเชพ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ CommandHandler('start', start)
.
เชชเชฆเซเชงเชคเชฟ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชนเชตเชพเชฎเชพเชจ เช เชฎเซ เชธเชฎเชพเชจ เชจเชพเชฎเชจเซเช เชซเชฟเชฒเซเชเชฐ เชฌเชจเชพเชตเซเชฏเซเช เชเซ:
# ัะพะทะดะฐัะผ ัะธะปัััั
## ัะพะพะฑัะตะฝะธั ั ัะตะบััะพะผ ะะพะณะพะดะฐ
MessageFilters$weather <- BaseFilter(function(message) {
# ะฟัะพะฒะตััะตะผ ัะตะบัั ัะพะพะฑัะตะฝะธั
message$text == "ะะพะณะพะดะฐ"
}
)
เช
เชจเซ เช
เชฎเซ เช เชชเชฆเซเชงเชคเชฟเชจเซ เชจเซเชเซเชจเชพ เชธเชเชฆเซเชถ เชนเซเชจเซเชกเชฒเชฐ เชธเชพเชฅเซ เชเซเชฒ เชเชฐเซเช เชเซเช: MessageHandler(weather, filters = MessageFilters$weather)
.
เช
เชจเซ เช
เชเชคเซ, เช
เชฎเชพเชฐเซ เชฎเซเชเซเชฏ เชชเชฆเซเชงเชคเชฟ เชเชตเชพเชฌ_เชธเซเชฌเซ เชเชจเชฒเชพเชเชจ เชฌเชเชจเซ เชฆเชฌเชพเชตเชตเชพ เชชเชฐ เชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเชชเซ เชเซ, เชเซ เชเชพเชธ เชนเซเชจเซเชกเชฒเชฐ เชฆเซเชตเชพเชฐเชพ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ: CallbackQueryHandler(answer_cb)
.
เชเช เชชเชฆเซเชงเชคเชฟเชจเซ เช
เชเชฆเชฐ เชเชตเชพเชฌ_เชธเซเชฌเซ, เช
เชฎเซ เชเซเชฌเซเชฐเซเชก เชชเชฐเชฅเซ เชฎเซเชเชฒเซเชฒ เชกเซเชเชพ เชตเชพเชเชเซเช เชเซเช เช
เชจเซ เชคเซเชจเซ เชตเซเชฐเซเชเชฌเชฒเชฎเชพเช เชฒเชเซเช เชเซเช city
: city <- update$callback_query$data
. เชชเชเซ เช
เชฎเซ API เชชเชพเชธเซเชฅเซ เชนเชตเชพเชฎเชพเชจ เชกเซเชเชพเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเซเช เชเซเช, เชธเชเชฆเซเชถเซ เชเชจเชฐเซเช เชเชฐเซเช เชเซเช เช
เชจเซ เชฎเซเชเชฒเซเช เชเซเช เช
เชจเซ เช
เชเชคเซ เชชเชฆเซเชงเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช answerCallbackQuery
เชฌเซเชเชจเซ เชเชพเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซ เช
เชฎเซ เชเชจเชฒเชพเชเชจ เชฌเชเชจเชจเชพ เชเซเชฒเชฟเช เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเซ เชเซ.
เชฌเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซ เชเซเชฎเชพเชเชฅเซ เชเชฒเซเชฒเซเชเชฟเชค เชนเชฌเชจเซ เชฒเชฟเชเชเซเชธ เชธเชพเชฅเซ เชจเชตเซเชจเชคเชฎ เชฒเซเชเซเชจเซ เชธเซเชเชฟ เชฆเชฐเซเชถเชพเชตเซ เชเซ www.habr.com .
เชตเซเชฌ เชชเซเชทเซเช เซ เชคเชฐเชซ เชฆเซเชฐเซ เชเชคเชพ เชเชจเชฒเชพเชเชจ เชฌเชเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเชตเชพ เชคเซ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชเซ เชนเซเช เช เชฌเซเช เชฐเชเซ เชเชฐเซเช เชเซเช.
เช เชฌเซเชเชจเซ เชคเชฐเซเช เช
เชเชพเชเชจเชพ เชเซเชตเซ เช เชเซ, เชถเชฐเซเชเชคเชฎเชพเช เชเชชเชฃเซ เชฎเซเชเซเชฏ เชเซเชฌเซเชฐเซเชกเชจเซ เชเชฆเซเชถ เชธเชพเชฅเซ เชฒเซเชจเซเช เชเชฐเซเช เชเซเช /start
. เชเชเชณ, เชฌเซเช เช
เชฎเชจเซ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ 6 เชนเชฌเชจเซ เชธเซเชเชฟ เชเชชเซ เชเซ, เช
เชฎเซ เชเซ เชนเชฌเชฎเชพเช เชฐเชธ เชงเชฐเชพเชตเซเช เชเซเช เชคเซ เชชเชธเชเชฆ เชเชฐเซเช เชเซเช เช
เชจเซ เชชเชธเชเชฆ เชเชฐเซเชฒ เชนเชฌเชฎเชพเชเชฅเซ 5 เชธเซเชฅเซ เชคเชพเชเซเชคเชฐเชจเชพ เชชเซเชฐเชเชพเชถเชจเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเช เชเซเช.
เชเซเชฎ เชคเชฎเซ เชธเชฎเชเซ เชเซ, เช เชเชฟเชธเซเชธเชพเชฎเชพเช เช
เชฎเชพเชฐเซ เชฒเซเชเซเชจเซ เชธเซเชเชฟ เชฎเซเชณเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เช
เชจเซ เช เชฎเชพเชเซ เช
เชฎเซ เชตเชฟเชถเชฟเชทเซเช เชชเซเชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช habR
, เชเซ เชคเชฎเชจเซ เชนเชพเชฌเซเชฐเชพเชจเชพ เชฒเซเชเซ เช
เชจเซ R เชฎเชพเช เชคเซเชฎเชจเชพ เชชเชฐเชจเชพ เชเซเชเชฒเชพเช เชเชเชเชกเชพเชเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชชเซเชเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ habR
เชซเชเซเชค เชเซเชฅเชฌเชฅเซ เช เชถเชเซเชฏ เชเซ, เชเซเชจเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชตเชงเชพเชฐเชพเชจเชพ เชชเซเชเซเชเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ 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()
เชเชชเชฐเซเชเซเชค เชเซเชก เชเชฆเชพเชนเชฐเชฃ เชเชฒเชพเชตเซ, 'เชฏเซเชฐ เชฌเซเช เชเซเชเชจ' เชจเซ เชฌเชฆเชฒเซเชฏเชพ เชชเชเซ, เชคเชฎเชจเซ เชฌเซเช เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเชฒ เชตเชพเชธเซเชคเชตเชฟเช เชเซเชเชจ เชธเชพเชฅเซ เชฌเซเชเชซเซเชงเชฐ (เชฎเซเช เชฎเชพเช เชฌเซเช เชฌเชจเชพเชตเชตเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ
เชชเซเชฐเชฅเชฎ เชฒเซเช ).
เชชเชฐเชฟเชฃเชพเชฎเซ, เช
เชฎเชจเซ เช เชชเชฐเชฟเชฃเชพเชฎ เชฎเชณเชถเซ:
เช
เชฎเซ เชชเชฆเซเชงเชคเชฟเชฎเชพเช เชชเชธเชเชฆเชเซ เชฎเชพเชเซ เชเชชเชฒเชฌเซเชง เชนเชฌเชจเซ เชธเซเชเชฟเชจเซ เชนเชพเชฐเซเชกเชเซเชก เชเชฐเซ เชเซ 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)
เชคเชฐเซเช เช
เชเชพเชเชจเชพ เชฌเซเช เชเซเชตเซ เช เชเซ, เชชเชฐเชเชคเซ เช เชเชฟเชธเซเชธเชพเชฎเชพเช เช
เชฎเซ เชซเชเชเซเชถเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชคเชฟเชถเซเชฒ เชฐเซเชคเซ เชฒเซเชเซเชจเซ เชธเซเชเชฟ เชธเชพเชฅเซ เชเชจเชฒเชพเชเชจ เชเซเชฌเซเชฐเซเชก เชเชจเชฐเซเช เชเชฐเซเช เชเซเช. 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