@Zorgios

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

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

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

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

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

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

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

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

Похожие вопросы