Задать вопрос
dimqakolyada
@dimqakolyada
Telegram бот @kodi_robot ответит на любой вопрос!

Как сохранять промежуточные данные при общении человека с ботом?

Подскажите, пожалуйста, как я могу сохранить промежуточные данные, которые пользователь сообщает боту?

Сохранять данные нужно для того, чтобы грубо говоря пользователь заполнял анкету через бота.

Разные варианты я и сам могу придумать, например иметь табличку в БД, в которой буду хранить id вопроса, id пользователя, время отправки вопроса и время отправки ответа и сам ответ. Кажется не самый плохой вариант, но думаю что при должной нагрузке табличка достигнет нереальных размеров, хотя конечно можно её очищить от записей старше N. Вероятно есть и другие минусы такого решения.

Поэтому меня интересуют best practise в этом функционале. Явно уже кто-то с этим сталкивался и решал эту проблему.
  • Вопрос задан
  • 217 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Лучше базы для хранения никто не придумал. А дальше все зависит от процессов, которые вы захотите заложить под это дело. Если что то хранение нескольких миллионов записей в бд вообще не является какой-то проблемой
Ответ написан
Комментировать
Danya_Violet
@Danya_Violet
CTO/CIO
@bot.message_handler(commands=['uiscreate'])
def uis_request_domain(message):
    if message.text.lower() == 'отмена':
        bot.send_message(message.from_user.id, 'Выполнение команды отменено')
        return
    send = bot.send_message(message.chat.id, 'Создание пользователя\nВведите почтовый домен:\n'
                                             'domain.ru')
    bot.register_next_step_handler(send, uis_request_data)


def uis_request_data(message):
    global domain_uis
    domain_uis = message.text.lower()
    if message.text.lower() == 'отмена':
        bot.send_message(message.from_user.id, 'Выполнение команды отменено')
        return
    send = bot.send_message(message.chat.id, 'Введите: ФИО должность телефон')
    bot.register_next_step_handler(send, create_uis)


def create_uis(message):
    first = message.text.split()[1]
    last = message.text.split()[0]
    middle = message.text.split()[2]
    phone = message.text.split()[4]
    position = message.text.split()[3]

<...>


а дальше можно и в БД и в файл и куда Вам угодно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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