@Zorgios

Как делаются многоуровневые боты ВКонтакте?

Структура самого простого бот имеет такой вид:
1) Получили сообщение
2) Обработали его
3) Ответили

Но как делаются многоуровневые боты?
Грубый пример: мы хотим получить от пользователя его имя и возраст.
П - пользователь, Б - бот

П: Ввод личных данных
Б: Введите Ваш возраст
П: 25
Б: Введите Ваше имя
П: Иван
Б: Иван - 25 лет. Всё верно?
П: Подтвердить

В этом примере обработка команд на получение возраста и имени происходит только после того, как пользователь захотел ввести данные о себе. То есть, команды: "получить возраст" и "получить имя" являются подкомандами "получить данные пользователя".
Чтобы просто введя "25" или "Иван" ничего не происходило. Иначе говоря, чтобы бот понимал, что сейчас будет производиться сбор данных от пользователя.
  • Вопрос задан
  • 158 просмотров
Решения вопроса 2
Andrew_Pinkerton
@Andrew_Pinkerton
Не так страшны первые 99%, как оставшиеся 99%
Finite State Machine (FSM) - конечный автомат

Пример тут
https://mastergroosha.github.io/telegram-tutorial/...
Ответ написан
alexk111
@alexk111
Автор Ботодрома (автоматизация Telegram, VK и др.)
Для этого нужно всем стадиям присвоить, например, цифровой ид. Для каждого пользователя хранить его текущее состояние, включая ид стадии. При получении сообщений от пользователя применять логику в зависимости от текущей стадии, и обновлять ид при переходе на другую стадию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Zorgios Автор вопроса
Пока что я вижу только такое решение:
Хранить в базе данных пользователей уникальный id последней введенной команды и каждый раз проверять, какая команда была последней у пользователя и уже из этого выстраивать порядок действий.

Уверен, что есть более простой и грамотный вариант.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
TalkBank.io Москва
от 170 000 до 250 000 ₽
Альвента Новосибирск
от 80 000 до 120 000 ₽
До 220 000 ₽
08 мар. 2021, в 08:37
3000 руб./за проект
08 мар. 2021, в 07:04
3000 руб./за проект
08 мар. 2021, в 06:23
12000 руб./за проект