Как сохранить сеансы пользователя бота telegram в моем БД
Я хочу закодировать бота для телеграммы, поэтому, когда я собираюсь получать сообщения от пользователя, мне следует узнать о последнем сообщении, которое он / она мне задал, и на каком этапе он / она находится! поэтому я должен хранить сеансы пользователя (я понял это, когда искал), но я не знаю, что именно я должен делать?
я знаю, мне нужна таблица в БД, которая хранит UserId, ChatId, но я не знаю их:
1. Как сделать рут для шагов и сохранить их в БД (я имею в виду, как я понимаю, где сейчас находится пользователь)
2. Какие еще столбцы мне нужно хранить как сеанс?
3. Сколько сообщений я должен хранить в базе данных? и мне нужна одна строка для каждого сообщения?
2 ответа
Если вам просто нужно сохранить сеанс в вашей базе данных, вам не нужно хранить сообщения. Может быть, вы захотите хранить сообщения, но это не обязательно связано.
Давайте предположим, что у вас есть "предпочтения" меню в вашем боте, где пользователь может написать свой ввод. Вы спрашиваете имя, возраст, пол и т. Д. Как вы узнаете, когда пользователь вводит данные об имени, поле и т. Д.?
Вы сохраняете сессии в своей базе данных. Когда бот получает сообщение, вы проверяете, в каком сеансе находится пользователь, чтобы запустить нужную функцию.
Простое решение может быть база данных SQL. Столбец первичного ключа - это идентификатор пользователя телеграммы (вы также можете добавить столбец идентификатора чата, если он предназначен для работы как в приватных, так и в групповых чатах) и столбец "сеанс" TEXT, в котором вы регистрируете шаги пользователя. Столбец сеанса может иметь значение NULL по умолчанию. Если бот ожидает пола (потому что пользователь ввел команду / гендер), вы можете обновить столбец "сессия" словом "пол", чтобы при получении сообщения вы знали, как с ним работать, проверяя столбец пола этого идентификатора пользователя и как как только вы запустили нужную функцию, вы снова обновите NULL до столбца "сессия".
Вы можете создать БД с этими столбцами.
Идентификатор пользователя, ChatID, состояние, имя, возраст, пол...
при каждом входящем обновлении вы будете проверять, существует ли пользователь в вашей базе данных, затем проверять состояние пользователя, отвечать соответствующим образом и обновлять состояние в конце.