Задать вопрос
tregor
@tregor
Senior PHP Backend developer

Как лучше организовать Telegram бота с несколькими экранами?

Приветствую!

Задача такова - имеем несколько экранов бота телеграм, между которыми надо передвигаться. Для примера возьмём следующую структуру:
Главная -> Баланс -> История платежей.
На экране "История платежей" мы можем ввести текстом дату и бот должен показать платежи за эту дату. Бот, получив сообщение, сначала должен понять что это сообщение с экрана "История платежей", а потом уже парсить полученный текст на предмет корректной даты.

Теперь вопрос - как это всё организовать?
Пока единственный вариант, который есть в голове, это хранить какой то Step пользователя. Типа таблицы в БД, где есть UserID и Step, в Step храним соответственно текущую страницу пользователя (страница "Баланс" к примеру)
И когда мы вводим дату мы берем этот Step, видим, что находится юзер на странице "История платежей" и соответственно парсим текст. Либо юзер на другой странице, и там соответственно другие действия.

Но как то это всё дерьмово выглядит, неудобно хранится, ненадёжно, легко ломается (если юзер сделает простейшую манипуляцию типа рестарта бота)
Есть ли у кого либо решения?

P.S.: Да, интерес в самом алгоритме, а не в реализации. Так что можете приводить примеры хоть на Java, но лучше не стоит)

UPD: К сожалению, решений удобных не нашёл. В своём проекте остановился на единственном, описанном выше решении - хранить user_step в БД.
  • Вопрос задан
  • 434 просмотра
Подписаться 3 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется
Как вариант можно саму команду редактировать. я не знаю как устроено api у телеги, но к примеру:
1) Человек написал дату будучи на странице "История платежей"
2) Мы парсим текст и формируем для себя по сути что-то типа url'a. И сам текст спаршенный уже записываем к себе в виде: '/История платежей?date="дата, которую ввел юзер"'
3) Дальше уже эту команду отправляем дальше и обрабатываем по все канонам.
Ответ написан
Danya_Violet
@Danya_Violet
CTO/CIO
Можно использовать Inline Keyboard для создания меню

Пример GIF
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽