tregor
@tregor
Senior PHP Backend developer

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:03
75000 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект