Updater ndi kalasi yomwe imakupangitsani kukhala kosavuta kuti mupange telegalamu bot, ndikugwiritsa ntchito kalasi pansi pa hood Dispetcher. Ntchito ya m'kalasi Updater ndikulandila zosintha kuchokera ku bot (m'nkhani yapitayi tidagwiritsa ntchito njirayi getUpdates()), ndi kuwasamutsa patsogolo ku Dispetcher.
Panthawi yake Dispetcher ili ndi zogwirira zomwe mudapanga, i.e. kalasi zinthu Handler.
Othandizira - othandizira
Ndi othandizira omwe mumawonjezera Dispetcher machitidwe a bot ku zochitika zosiyanasiyana. Panthawi yolemba nkhaniyi mu telegram.bot Mitundu yotsatirayi ya othandizira awonjezedwa:
MessageHandler - Wothandizira Mauthenga
CommandHandler - Woyang'anira Command
CallbackQueryHandler - Wothandizira ma data pamakiyibodi otumizidwa kuchokera ku Inline
ErrorHandler - Wothandizira zolakwika popempha zosintha kuchokera ku bot
Onjezani lamulo loyamba ku bot, chowongolera
Ngati simunagwiritsepo ntchito bots kale ndipo simukudziwa kuti lamulo ndi chiyani, ndiye kuti malamulo ku bot ayenera kutumizidwa pogwiritsa ntchito slash kutsogolo. / monga chiyambi.
Tidzayamba ndi malamulo osavuta, i.e. tiyeni tiphunzitse bot wathu kunena moni polamula /hi.
Khodi 1: Kuphunzitsa bot kunena moni
library(telegram.bot)
# создаём экземпляр класса Updater
updater <- Updater('ТОКЕН ВАШЕГО БОТА')
# Пишем метод для приветсвия
say_hello <- function(bot, update) {
# Имя пользователя с которым надо поздароваться
user_name <- update$message$from$first_name
# Отправка приветственного сообщения
bot$sendMessage(update$message$chat_id,
text = paste0("Моё почтение, ", user_name, "!"),
parse_mode = "Markdown")
}
# создаём обработчик
hi_hendler <- CommandHandler('hi', say_hello)
# добаляем обработчик в диспетчер
updater <- updater + hi_hendler
# запускаем бота
updater$start_polling()
Thamangani chitsanzo cha code pamwambapa, mutasintha 'BOT TOKEN YAKO' ndi chizindikiro chenicheni chomwe mudalandira popanga bot kudzera. Abambo (Ndinayankhula za kupanga bot mkati nkhani yoyamba).
Njira start_polling() kalasi Updater, yomwe imagwiritsidwa ntchito kumapeto kwa kachidindoyo, imayamba kubwereza kosalekeza kopempha ndi kukonza zosintha kuchokera ku bot.
Tinaganizira momwe tingatumizire malamulo ku bot, koma nthawi zina timafunika bot kuti tiyankhe osati malamulo okha, komanso mauthenga ena okhazikika. Kuti muchite izi muyenera kugwiritsa ntchito zowongolera mauthenga - MessageHandler.
wamba MessageHandler adzayankha mwamtheradi mauthenga onse obwera. Chifukwa chake, owongolera mauthenga nthawi zambiri amagwiritsidwa ntchito limodzi ndi zosefera. Tiyeni tiphunzitse bot kunena moni osati polamula /hi, komanso nthawi iliyonse pamene limodzi la mawu otsatirawa likuwonekera mu uthenga wotumizidwa ku bot: moni, moni, moni, hai, bonjour.
Pakadali pano sitilemba njira zatsopano, chifukwa... Tili ndi kale njira yomwe bot imatilonjera. Zomwe tikuyenera kuchita ndikupanga fyuluta yofunikira ndi chothandizira mauthenga.
Khodi 2: Onjezani chogwirizira meseji ndi fyuluta
library(telegram.bot)
# создаём экземпляр класса Updater
updater <- Updater('ТОКЕН ВАШЕГО БОТА')
# Пишем метод для приветсвия
## команда приветвия
say_hello <- function(bot, update) {
# Имя пользователя с которым надо поздароваться
user_name <- update$message$from$first_name
# Отправляем приветсвенное сообщение
bot$sendMessage(update$message$chat_id,
text = paste0("Моё почтение, ", user_name, "!"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
# создаём фильтры
MessageFilters$hi <- BaseFilter(function(message) {
# проверяем, встречается ли в тексте сообщения слова: привет, здравствуй, салют, хай, бонжур
grepl(x = message$text,
pattern = 'привет|здравствуй|салют|хай|бонжур',
ignore.case = TRUE)
}
)
# создаём обработчик
hi_hendler <- CommandHandler('hi', say_hello) # обработчик команды hi
hi_txt_hnd <- MessageHandler(say_hello, filters = MessageFilters$hi)
# добаляем обработчики в диспетчер
updater <- updater +
hi_hendler +
hi_txt_hnd
# запускаем бота
updater$start_polling()
Thamangani chitsanzo cha code pamwambapa, mutasintha 'BOT TOKEN YAKO' ndi chizindikiro chenicheni chomwe mudalandira popanga bot kudzera. Abambo (Ndinayankhula za kupanga bot mkati nkhani yoyamba).
Tsopano tiyeni tiyese kutumiza bot mauthenga angapo omwe ali ndi mawu opatsa moni omwe atchulidwa kale:
Kotero, choyamba, tinaphunzitsa bot osati kungonena moni, koma kuyankha moni. Tinachita izi pogwiritsa ntchito mkangano reply_to_message_id, yomwe imapezeka mu njira sendMessage(), momwe muyenera kusamutsa id ya uthenga womwe mukufuna kuyankha. Mutha kupeza id ya meseji motere: update$message$message_id.
Koma chinthu chachikulu chomwe tidachita ndikuwonjezera fyuluta ku bot pogwiritsa ntchito ntchitoyi BaseFilter():
# создаём фильтры
MessageFilters$hi <- BaseFilter(
# анонимная фильтрующая функция
function(message) {
# проверяем, встречается ли в тексте сообщения слова приветствия
grepl(x = message$text,
pattern = 'привет|здравствуй|салют|хай|бонжур',
ignore.case = TRUE)
}
)
Monga momwe mwawonera, zosefera ziyenera kuwonjezeredwa ku chinthucho MessageFilters, yomwe poyamba ili ndi zosefera zazing'ono zopangidwa kale. Mu chitsanzo chathu, ku chinthu MessageFilters tawonjezera chinthu hi, iyi ndi fyuluta yatsopano.