R හි ටෙලිග්‍රාම් බොට් එකක් ලිවීම (4 කොටස): බොට් සමඟ ස්ථාවර, තාර්කික සංවාදයක් ගොඩනැගීම

ඔබ දැනටමත් කලින් කියවා ඇත්නම් ලිපි තුනක් මෙම ලිපි මාලාවෙන්, යතුරුපුවරුවකින් සම්පූර්ණ ටෙලිග්‍රාම් බොට් ලියන්නේ කෙසේදැයි ඔබ දැනටමත් දනී.

මෙම ලිපියෙන් අපි ස්ථාවර සංවාදයක් පවත්වා ගෙන යන බොට් එකක් ලියන්නේ කෙසේදැයි ඉගෙන ගනිමු. එම. බොට් ඔබෙන් ප්‍රශ්න අසන අතර ඔබ යම් තොරතුරු ඇතුළත් කරන තෙක් බලා සිටිනු ඇත. ඔබ ඇතුළු කරන දත්ත මත පදනම්ව, බොට් සමහර ක්රියා සිදු කරනු ඇත.

මෙම ලිපියෙන් අපි බොට් හි ආවරණය යටතේ දත්ත සමුදායක් භාවිතා කරන්නේ කෙසේදැයි ඉගෙන ගනිමු, අපගේ උදාහරණයේදී එය SQLite වනු ඇත, නමුත් ඔබට වෙනත් ඕනෑම DBMS භාවිතා කළ හැකිය. R භාෂාවෙන් දත්ත සමුදායන් සමඟ අන්තර් ක්‍රියා කිරීම ගැන මම වඩාත් විස්තරාත්මකව ලියා ඇත මේ ලිපිය කියවන්න.

R හි ටෙලිග්‍රාම් බොට් එකක් ලිවීම (4 කොටස): බොට් සමඟ ස්ථාවර, තාර්කික සංවාදයක් ගොඩනැගීම

"R හි විදුලි පණිවුඩ බොට් ලිවීම" මාලාවේ සියලුම ලිපි

  1. අපි බොට් එකක් සාදා එය ටෙලිග්‍රාම් වලින් පණිවිඩ යැවීමට භාවිතා කරමු
  2. විධාන සහාය සහ පණිවිඩ පෙරහන් බොට් වෙත එක් කරන්න
  3. බොට් එකකට යතුරුපුවරු සහාය එකතු කරන්නේ කෙසේද
  4. බොට් සමඟ ස්ථාවර, තාර්කික සංවාදයක් ගොඩනැගීම

අන්තර්ගතය

ඔබ දත්ත විශ්ලේෂණයට කැමති නම්, ඔබ මගේ ගැන උනන්දු විය හැකිය ටෙලිග්රාෆ් и ප්රථම අදියර නාලිකා. බොහෝ අන්තර්ගතයන් R භාෂාව සඳහා කැප කර ඇත.

  1. හැඳින්වීම
  2. බොට් ගොඩනැගීමේ ක්රියාවලිය
  3. බොට් ව්යාපෘති ව්යුහය
  4. බොට් වින්‍යාසය
  5. පරිසර විචල්‍යයක් සාදන්න
  6. දත්ත සමුදායක් නිර්මාණය කිරීම
  7. දත්ත සමුදාය සමඟ වැඩ කිරීම සඳහා කාර්යයන් ලිවීම
  8. බොට් ක්‍රම
  9. පණිවිඩ පෙරහන්
  10. හසුරුවන්නන්
  11. බොට් දියත් කිරීමේ කේතය
  12. නිගමනය

හැඳින්වීම

බොට් විසින් ඔබෙන් දත්ත ඉල්ලා සිටීමට සහ ඔබ කිසියම් තොරතුරක් ඇතුළත් කිරීමට බලා සිටීමට, ඔබ සංවාදයේ වත්මන් තත්ත්වය වාර්තා කිරීමට අවශ්ය වනු ඇත. මෙය කිරීමට හොඳම ක්‍රමය නම් SQLite වැනි කාවැද්දූ දත්ත සමුදායක් භාවිතා කිරීමයි.

එම. තර්කනය පහත පරිදි වනු ඇත. අපි bot ක්‍රමය අමතන්නෙමු, සහ bot අනුපිළිවෙලින් අපෙන් යම් තොරතුරු ඉල්ලා සිටින අතර, සෑම පියවරකදීම එය මෙම තොරතුරු ඇතුළත් කිරීමට බලා සිටින අතර එය පරීක්ෂා කළ හැක.

අපි හැකි සරලම බොට් ලියන්නෙමු, පළමුව එය ඔබගේ නම, පසුව ඔබේ වයස, සහ ලැබුණු දත්ත දත්ත ගබඩාවට සුරකිනු ඇත. වයස විමසන විට, ඇතුළත් කළ දත්ත පෙළක් නොව අංකයක් දැයි පරීක්ෂා කරනු ඇත.

එවැනි සරල සංවාදයකට ඇත්තේ ප්‍රාන්ත තුනක් පමණි:

  1. start යනු ඔබෙන් කිසිදු තොරතුරක් බලාපොරොත්තු නොවන බොට් එකේ සාමාන්‍ය තත්වයයි
  2. wait_name - නමක් ඇතුල් කිරීමට බොට් බලා සිටින තත්වය
  3. wait_age යනු ඔබේ වයස ඇතුළත් කිරීමට බොට් බලා සිටින තත්වයයි, සම්පූර්ණ වසර ගණන.

බොට් ගොඩනැගීමේ ක්රියාවලිය

ලිපිය අතරතුර, අපි පියවරෙන් පියවර බොට් එකක් ගොඩනඟමු; සම්පූර්ණ ක්‍රියාවලිය පහත පරිදි ක්‍රමානුකූලව නිරූපණය කළ හැකිය:
R හි ටෙලිග්‍රාම් බොට් එකක් ලිවීම (4 කොටස): බොට් සමඟ ස්ථාවර, තාර්කික සංවාදයක් ගොඩනැගීම

  1. අපි බොට් වින්‍යාසයක් සාදන්නෙමු, එහි අපි සැකසුම් කිහිපයක් ගබඩා කරමු. අපගේ නඩුවේදී, බොට් ටෝකනය සහ දත්ත සමුදා ගොනුව වෙත යන මාර්ගය.
  2. අපි බොට් සමඟ ව්‍යාපෘතියට යන මාර්ගය ගබඩා කරන පාරිසරික විචල්‍යයක් නිර්මාණය කරමු.
  3. අපි දත්ත සමුදාය ම නිර්මාණය කරමු, බොට් හට එය සමඟ අන්තර් ක්‍රියා කළ හැකි වන පරිදි කාර්යයන් ගණනාවක් නිර්මාණය කරමු.
  4. අපි බොට් ක්රම ලියන්නෙමු, i.e. එය ඉටු කරනු ඇති කාර්යයන්.
  5. පණිවිඩ පෙරහන් එකතු කිරීම. සංවාදයේ වත්මන් තත්ත්වය මත පදනම්ව, බොට් විසින් අවශ්‍ය ක්‍රම වෙත ප්‍රවේශ වන ආධාරයෙන්.
  6. අවශ්‍ය බොට් ක්‍රම සමඟ විධාන සහ පණිවිඩ සම්බන්ධ කරන හසුරුවන්න අපි එකතු කරමු.
  7. අපි බොට් එක දියත් කරමු.

බොට් ව්යාපෘති ව්යුහය

පහසුව සඳහා, අපි අපගේ බොට් කේතය සහ අනෙකුත් අදාළ ගොනු පහත ව්‍යුහයට බෙදන්නෙමු.

  • බොට්.ආර් - අපගේ බොට් හි ප්රධාන කේතය
  • db_bot_function.R - දත්ත සමුදාය සමඟ වැඩ කිරීම සඳහා කාර්යයන් සහිත කේතයක්
  • bot_methods.R - බොට් ක්රම කේතය
  • පණිවිඩ_පෙරහන්.ආර් - පණිවිඩ පෙරහන්
  • හසුරුවන්නන්.ආර් - හසුරුවන්නන්
  • config.cfg - bot config
  • create_db_data.sql — දත්ත සමුදායේ චැට් දත්ත සමඟ වගුවක් නිර්මාණය කිරීම සඳහා SQL ස්ක්‍රිප්ට්
  • create_db_state.sql — දත්ත ගබඩාවේ වත්මන් කතාබස් තත්ත්වය පිළිබඳ වගුවක් නිර්මාණය කිරීම සඳහා SQL ස්ක්‍රිප්ට්
  • bot.db - බොට් දත්ත සමුදාය

ඔබට සම්පූර්ණ බොට් ව්‍යාපෘතිය නැරඹිය හැකිය, හෝ скачать මගේ සිට GitHub මත ගබඩාව.

බොට් වින්‍යාසය

අපි සුපුරුදු එකක් config එකක් ලෙස භාවිතා කරමු ini ගොනුව, පහත පෝරමය:

[bot_settings]
bot_token=ТОКЕН_ВАШЕГО_БОТА

[db_settings]
db_path=C:/ПУТЬ/К/ПАПКЕ/ПРОЕКТА/bot.db

වින්‍යාසය තුළ අපි බොට් ටෝකනය සහ දත්ත සමුදායට යන මාර්ගය ලියන්නෙමු, i.e. bot.db ගොනුව වෙත; අපි ඊළඟ පියවරේදී ගොනුව නිර්මාණය කරමු.

වඩාත් සංකීර්ණ bots සඳහා, ඔබට වඩාත් සංකීර්ණ වින්‍යාස නිර්මාණය කළ හැකිය, ඊට අමතරව, ini config ලිවීමට අවශ්‍ය නොවේ, ඔබට JSON ඇතුළු වෙනත් ඕනෑම ආකෘතියක් භාවිතා කළ හැකිය.

පරිසර විචල්‍යයක් සාදන්න

සෑම පරිගණකයකම, බොට් ව්‍යාපෘතිය සහිත ෆෝල්ඩරය විවිධ නාමාවලිවල සහ විවිධ ධාවකවල ස්ථානගත කළ හැකිය, එබැවින් කේතයේ ව්‍යාපෘති ෆෝල්ඩරයට යන මාර්ගය පරිසර විචල්‍යයක් හරහා සකසනු ලැබේ. TG_BOT_PATH.

පරිසර විචල්‍යයක් සෑදීමට ක්‍රම කිහිපයක් තිබේ, සරලම දෙය නම් එය ගොනුවක ලිවීමයි .රෙන්විරෝන්.

විධානය භාවිතයෙන් ඔබට මෙම ගොනුව නිර්මාණය කිරීමට හෝ සංස්කරණය කිරීමට හැකිය file.edit(path.expand(file.path("~", ".Renviron"))). එය ක්‍රියාත්මක කර ගොනුවට එක් පේළියක් එක් කරන්න:

TG_BOT_PATH=C:/ПУТЬ/К/ВАШЕМУ/ПРОЕКТУ

ඊළඟට ගොනුව සුරකින්න .රෙන්විරෝන් සහ RStudio නැවත ආරම්භ කරන්න.

දත්ත සමුදායක් නිර්මාණය කිරීම

ඊළඟ පියවර වන්නේ දත්ත සමුදායක් නිර්මාණය කිරීමයි. අපට මේස 2 ක් අවශ්ය වනු ඇත:

  • chat_data - බොට් පරිශීලකයාගෙන් ඉල්ලා සිටි දත්ත
  • chat_state — සියලුම කතාබස් වල වත්මන් තත්වය

පහත SQL විමසුම භාවිතයෙන් ඔබට මෙම වගු සෑදිය හැක:

CREATE TABLE chat_data (
    chat_id BIGINT  PRIMARY KEY
                    UNIQUE,
    name    TEXT,
    age     INTEGER
);

CREATE TABLE chat_state (
    chat_id BIGINT PRIMARY KEY
                   UNIQUE,
    state   TEXT
);

ඔබ බොට් ව්‍යාපෘතිය බාගත කළේ නම් GitHub, පසුව දත්ත සමුදාය නිර්මාණය කිරීමට ඔබට R හි පහත කේතය භාවිතා කළ හැක.

# Скрипт создания базы данных
library(DBI)     # интерфейс для работы с СУБД
library(configr) # чтение конфига
library(readr)   # чтение текстовых SQL файлов
library(RSQLite) # драйвер для подключения к SQLite

# директория проекта
setwd(Sys.getenv('TG_BOT_PATH'))

# чтение конфига
cfg <- read.config('config.cfg')

# подключение к SQLite
con <- dbConnect(SQLite(), cfg$db_settings$db_path)

# Создание таблиц в базе
dbExecute(con, statement = read_file('create_db_data.sql'))
dbExecute(con, statement = read_file('create_db_state.sql'))

දත්ත සමුදාය සමඟ වැඩ කිරීම සඳහා කාර්යයන් ලිවීම

අපි දැනටමත් වින්‍යාස ගොනුවක් සූදානම් කර ඇති අතර දත්ත සමුදායක් නිර්මාණය කර ඇත. දැන් ඔබට මෙම දත්ත සමුදායට දත්ත කියවීමට සහ ලිවීමට කාර්යයන් ලිවීමට අවශ්ය වේ.

ඔබ ව්‍යාපෘතිය බාගත කළේ නම් GitHub, එවිට ඔබට ගොනුවේ ඇති කාර්යයන් සොයා ගත හැක db_bot_function.R.

දත්ත සමුදාය සමඟ වැඩ කිරීම සඳහා ක්රියාකාරී කේතය

# ###########################################################
# Function for work bot with database

# получить текущее состояние чата
get_state <- function(chat_id) {

  con <- dbConnect(SQLite(), cfg$db_settings$db_path)

  chat_state <- dbGetQuery(con, str_interp("SELECT state FROM chat_state WHERE chat_id == ${chat_id}"))$state

  return(unlist(chat_state))

  dbDisconnect(con)
}

# установить текущее состояние чата
set_state <- function(chat_id, state) {

  con <- dbConnect(SQLite(), cfg$db_settings$db_path)

  # upsert состояние чата
  dbExecute(con, 
            str_interp("
            INSERT INTO chat_state (chat_id, state)
                VALUES(${chat_id}, '${state}') 
                ON CONFLICT(chat_id) 
                DO UPDATE SET state='${state}';
            ")
  )

  dbDisconnect(con)

}

# запись полученных данных в базу
set_chat_data <- function(chat_id, field, value) {

  con <- dbConnect(SQLite(), cfg$db_settings$db_path)

  # upsert состояние чата
  dbExecute(con, 
            str_interp("
            INSERT INTO chat_data (chat_id, ${field})
                VALUES(${chat_id}, '${value}') 
                ON CONFLICT(chat_id) 
                DO UPDATE SET ${field}='${value}';
            ")
  )

  dbDisconnect(con)

}

# read chat data
get_chat_data <- function(chat_id, field) {

  con <- dbConnect(SQLite(), cfg$db_settings$db_path)

  # upsert состояние чата
  data <- dbGetQuery(con, 
                     str_interp("
            SELECT ${field}
            FROM chat_data
            WHERE chat_id = ${chat_id};
            ")
  )

  dbDisconnect(con)

  return(data[[field]])

}

අපි සරල කාර්යයන් 4 ක් නිර්මාණය කළෙමු:

  • get_state() — දත්ත ගබඩාවෙන් වත්මන් කතාබස් තත්ත්වය ලබා ගන්න
  • set_state() - වත්මන් කතාබස් තත්ත්වය දත්ත ගබඩාවට ලියන්න
  • get_chat_data() - පරිශීලකයා විසින් එවන ලද දත්ත ලබා ගන්න
  • set_chat_data() - පරිශීලකයාගෙන් ලැබුණු දත්ත වාර්තා කරන්න

සියලුම කාර්යයන් තරමක් සරල ය, ඒවා එක්කෝ විධානය භාවිතා කරමින් දත්ත සමුදායෙන් දත්ත කියවයි dbGetQuery(), හෝ කැපවීම UPSERT මෙහෙයුම (පවත්නා දත්ත වෙනස් කිරීම හෝ දත්ත සමුදායට නව දත්ත ලිවීම), ශ්රිතය භාවිතා කිරීම dbExecute().

UPSERT මෙහෙයුම සඳහා වාක්‍ය ඛණ්ඩය පහත පරිදි වේ:

INSERT INTO chat_data (chat_id, ${field})
VALUES(${chat_id}, '${value}') 
ON CONFLICT(chat_id) 
DO UPDATE SET ${field}='${value}';

එම. අපගේ වගු ක්ෂේත්රයේ chat_id සුවිශේෂතා සීමාවක් ඇති අතර වගු වල මූලික යතුර වේ. මුලදී, අපි වගුව වෙත තොරතුරු එකතු කිරීමට උත්සාහ කරන අතර, වත්මන් කතාබස් සඳහා දත්ත දැනටමත් තිබේ නම් අපට දෝෂයක් ඇති වේ, මෙම අවස්ථාවෙහිදී අපි මෙම කතාබස් සඳහා තොරතුරු යාවත්කාලීන කරන්නෙමු.

ඊළඟට, අපි මෙම කාර්යයන් බොට්ගේ ක්‍රම සහ පෙරහන් තුළ භාවිතා කරමු.

බොට් ක්‍රම

අපගේ බොට් ගොඩනැගීමේ ඊළඟ පියවර වන්නේ ක්‍රම නිර්මාණය කිරීමයි. ඔබ ව්‍යාපෘතිය බාගත කළේ නම් GitHub, එවිට සියලුම ක්රම ගොනුවේ ඇත bot_methods.R.

බොට් ක්‍රම කේතය

# ###########################################################
# bot methods

# start dialog
start <- function(bot, update) {

  # 

  # Send query
  bot$sendMessage(update$message$chat_id, 
                  text = "Введи своё имя")

  # переключаем состояние диалога в режим ожидания ввода имени
  set_state(chat_id = update$message$chat_id, state = 'wait_name')

}

# get current chat state
state <- function(bot, update) {

  chat_state <- get_state(update$message$chat_id)

  # Send state
  bot$sendMessage(update$message$chat_id, 
                  text = unlist(chat_state))

}

# reset dialog state
reset <- function(bot, update) {

  set_state(chat_id = update$message$chat_id, state = 'start')

}

# enter username
enter_name <- function(bot, update) {

  uname <- update$message$text

  # Send message with name
  bot$sendMessage(update$message$chat_id, 
                  text = paste0(uname, ", приятно познакомится, я бот!"))

  # Записываем имя в глобальную переменную
  #username <<- uname
  set_chat_data(update$message$chat_id, 'name', uname) 

  # Справшиваем возраст
  bot$sendMessage(update$message$chat_id, 
                  text = "Сколько тебе лет?")

  # Меняем состояние на ожидание ввода имени
  set_state(chat_id = update$message$chat_id, state = 'wait_age')

}

# enter user age
enter_age <- function(bot, update) {

  uage <- as.numeric(update$message$text)

  # проверяем было введено число или нет
  if ( is.na(uage) ) {

    # если введено не число то переспрашиваем возраст
    bot$sendMessage(update$message$chat_id, 
                    text = "Ты ввёл некорректные данные, введи число")

  } else {

    # если введено число сообщаем что возраст принят
    bot$sendMessage(update$message$chat_id, 
                    text = "ОК, возраст принят")

    # записываем глобальную переменную с возрастом
    #userage <<- uage
    set_chat_data(update$message$chat_id, 'age', uage) 

    # сообщаем какие данные были собраны
    username <- get_chat_data(update$message$chat_id, 'name')
    userage  <- get_chat_data(update$message$chat_id, 'age')

    bot$sendMessage(update$message$chat_id, 
                    text = paste0("Тебя зовут ", username, " и тебе ", userage, " лет. Будем знакомы"))

    # возвращаем диалог в исходное состояние
    set_state(chat_id = update$message$chat_id, state = 'start')
  }

}

අපි ක්රම 5 ක් නිර්මාණය කළා:

  • ආරම්භය - සංවාදයක් ආරම්භ කරන්න
  • රාජ්යය - වත්මන් කතාබස් තත්ත්වය ලබා ගන්න
  • reset — වත්මන් කතාබස් තත්ත්වය යළි පිහිටුවන්න
  • enter_name - බොට් ඔබේ නම අසයි
  • enter_age - බොට් ඔබේ වයස අසයි

ක්රමය start ඔබගේ නම ඉල්ලා, සහ කතාබස් තත්ත්වය වෙනස් කරයි ඉන්න_නම, i.e. ඔබේ නම ඇතුළත් කිරීම සඳහා රැඳී සිටීමට.

මීලඟට, ඔබ නම යවන අතර එය ක්‍රමය මගින් සකසනු ලැබේ enter_name, බොට් ඔබට ආචාර කරයි, ලැබුණු නම දත්ත ගබඩාවට ලියයි, සහ කතාබස් තත්වයට මාරු කරයි ඉන්න_වයස.

මෙම අවස්ථාවෙහිදී, බොට් ඔබ ඔබේ වයසට ඇතුළු වනු ඇතැයි අපේක්ෂා කරයි. ඔබ ඔබේ වයස යවනවා, බොට් පණිවිඩය පරීක්ෂා කරයි, ඔබ අංකයක් වෙනුවට පෙළක් යැව්වේ නම්, එය මෙසේ කියයි: Ты ввёл некорректные данные, введи число, සහ ඔබ ඔබේ දත්ත නැවත ඇතුල් කිරීමට බලා සිටිනු ඇත. ඔබ අංකයක් එව්වේ නම්, බොට් එය ඔබගේ වයස පිළිගෙන ඇති බව වාර්තා කරයි, ලැබුණු දත්ත දත්ත ගබඩාවට ලියන්න, ඔබෙන් ලැබුණු සියලුම දත්ත වාර්තා කර චැට් තත්වය එහි මුල් ස්ථානයට ගෙන එනු ඇත, i.e. වී start.

ක්‍රමය ඇමතීමෙන් state ඔබට ඕනෑම වේලාවක වත්මන් කතාබස් තත්ත්වය ඉල්ලා සිටිය හැක, සහ භාවිතා කරමින් reset කතාබස් එහි මුල් තත්වයට ගෙන යන්න.

පණිවිඩ පෙරහන්

අපගේ නඩුවේදී, මෙය බොට් එකක් සෑදීමේ වැදගත්ම කොටස් වලින් එකකි. පණිවිඩ පෙරහන් ආධාරයෙන් බොට් ඔබෙන් බලාපොරොත්තු වන තොරතුරු සහ එය සැකසිය යුතු ආකාරය තේරුම් ගනී.

මත ව්යාපෘතියේ GitHub පෙරහන් ගොනුවේ ලියාපදිංචි කර ඇත පණිවිඩ_පෙරහන්.ආර්.

පණිවිඩ පෙරහන් කේතය:

# ###########################################################
# message state filters

# фильтр сообщений в состоянии ожидания имени
MessageFilters$wait_name <- BaseFilter(function(message) {
  get_state( message$chat_id )  == "wait_name"
}
)

# фильтр сообщений в состоянии ожидания возраста
MessageFilters$wait_age <- BaseFilter(function(message) {
  get_state( message$chat_id )   == "wait_age"
}
)

පෙරහන් වලදී අපි කලින් ලියන ලද ශ්රිතය භාවිතා කරමු get_state(), කතාබස් වත්මන් තත්ත්වය ඉල්ලා සිටීම සඳහා. මෙම කාර්යයට අවශ්‍ය වන්නේ 1 තර්කයක්, කතාබස් හැඳුනුම්පතක් පමණි.

ඊළඟ පෙරහන ඉන්න_නම කතාබස් තත්වයක පවතින විට පණිවිඩ සකසයි wait_name, සහ ඒ අනුව පෙරහන ඉන්න_වයස කතාබස් තත්වයක පවතින විට පණිවිඩ සකසයි wait_age.

හසුරුවන්නන්

හසුරුවන්න සමඟ ගොනුව හැඳින්වේ හසුරුවන්නන්.ආර්, සහ පහත කේතය ඇත:

# ###########################################################
# handlers

# command handlers
start_h <- CommandHandler('start', start)
state_h <- CommandHandler('state', state)
reset_h <- CommandHandler('reset', reset)

# message handlers
## !MessageFilters$command - означает что команды данные обработчики не обрабатывают, 
## только текстовые сообщения
wait_age_h  <- MessageHandler(enter_age,  MessageFilters$wait_age  & !MessageFilters$command)
wait_name_h <- MessageHandler(enter_name, MessageFilters$wait_name & !MessageFilters$command)

පළමුව අපි විධාන හසුරුවන්න නිර්මාණය කරන අතර එමඟින් ඔබට සංවාදයක් ආරම්භ කිරීමට, එය නැවත සැකසීමට සහ වත්මන් තත්ත්වය විමසීමට ක්‍රම ක්‍රියාත්මක කිරීමට ඉඩ සලසයි.

මීලඟට, අපි පෙර පියවරේදී සාදන ලද පෙරහන් භාවිතා කරමින් පණිවිඩ හසුරුවන්න 2ක් සාදා, ඒවාට පෙරහනක් එක් කරන්නෙමු !MessageFilters$command, එවිට අපට ඕනෑම චැට් තත්වයකදී විධාන භාවිතා කළ හැක.

බොට් දියත් කිරීමේ කේතය

දැන් අපි දියත් කිරීමට සියල්ල සූදානම් කර ඇත, බොට් දියත් කිරීම සඳහා ප්රධාන කේතය ගොනුවේ ඇත බොට්.ආර්.

library(telegram.bot)
library(tidyverse)
library(RSQLite)
library(DBI)
library(configr)

# переходим в папку проекта
setwd(Sys.getenv('TG_BOT_PATH'))

# читаем конфиг
cfg <- read.config('config.cfg')

# создаём экземпляр бота
updater <- Updater(cfg$bot_settings$bot_token)

# Загрузка компонентов бота
source('db_bot_function.R') # функции для работы с БД
source('bot_methods.R')     # методы бота
source('message_filters.R') # фильтры сообщений
source('handlers.R') # обработчики сообщений

# Добавляем обработчики в диспетчер
updater <- updater +
  start_h +
  wait_age_h +
  wait_name_h +
  state_h +
  reset_h

# Запускаем бота
updater$start_polling()

එහි ප්‍රතිඵලයක් වශයෙන්, අපට මෙම බොට් එක ලැබුණි:
R හි ටෙලිග්‍රාම් බොට් එකක් ලිවීම (4 කොටස): බොට් සමඟ ස්ථාවර, තාර්කික සංවාදයක් ගොඩනැගීම

ඕනෑම අවස්ථාවක විධානය භාවිතා කරන්න /state අපට වත්මන් කතාබස් තත්ත්වය සහ විධානය භාවිතයෙන් විමසිය හැක /reset සංවාදය එහි මුල් තත්වයට ගෙන නැවත සංවාදය ආරම්භ කරන්න.

නිගමනය

මෙම ලිපියෙන් අපි බොට් එකක් තුළ දත්ත සමුදායක් භාවිතා කරන්නේ කෙසේද සහ කතාබස් තත්ත්වය පටිගත කිරීමෙන් ස්ථාවර තාර්කික සංවාද ගොඩනඟන්නේ කෙසේද යන්න සොයා බැලුවෙමු.

මෙම අවස්ථාවේ දී, අපි වඩාත් ප්‍රාථමික උදාහරණය දෙස බැලුවෙමු, එවිට එවැනි බොට් තැනීමේ අදහස ඔබට තේරුම් ගැනීමට පහසු වනු ඇත; ප්‍රායෝගිකව, ඔබට වඩාත් සංකීර්ණ සංවාද ගොඩනගා ගත හැකිය.

මෙම ලිපි මාලාවේ මීළඟ ලිපියෙන්, බොට් භාවිතා කරන්නන්ට එහි විවිධ ක්‍රම භාවිතා කිරීමට ඇති අයිතිය සීමා කරන්නේ කෙසේදැයි අපි ඉගෙන ගනිමු.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න