@gigisarri98

Как сохранить состояние пользователя в сессии в чат-боте telegram?

Учусь делать телеграм бота с помощью библиотеки https://github.com/TelegramBot/Api и Ларавел. Допустим, я хочу сделать бота, который управляет викторинами (Пользователь может создавать и проходить викторины, хранящиеся в БД и все в таком духе). Я не могу понять одного: как запоминать состояние пользователя? Я понимаю, что можно использовать БД или запись в текстовом файле на сервере, но я находил ответ, что возможно это сделать и на сессиях, с помощью редиса. Я поменял в настройках драйвер сессии с обычного на Редис - сессии корректно записываются, все хорошо. Но, когда дело доходит до телеграмма, он создает при каждом запросе новый ключ-хранилище в Редисе, соответственно получить запись в сессию, сделанные в прошлом сообщении, уже невозможно. Подскажите, пожалуйста, как реализовать такой функционал? Или, может быть, есть вариант, как делать такие цепочки связанных сообщений в телеграме без сессий? Заранее спасибо
  • Вопрос задан
  • 660 просмотров
Решения вопроса 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Ключом сессии надо просто управлять самостоятельно на основе идентификатора пользователя в сообщении.

На самом деле в техническом плане пользовательской сессии в боте быть не может, поэтому я бы порекомендовал прочитать про State Machine и хранение состояний в целом. А забивать гвозди микроскопом можно всегда, только зачем
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@haveacess
не до конца понимаю как все реализовано. но попробуйте привязаться к chat_id в телеграмме. Уникальный айди пользователя. По нему и пихайте что вам нужно
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы