Мне нужно сделать, чтобы бот мог спросить что-то и после этого какое-то время ждал ответа. Если ответ пришел, то бот продолжает обработку; если нет, то можно начать все по-новой. Пример диалога:
Бот: Введите дату рождения.
Пользователь: 18.09.2000.
Бот: Ваша запись сохранена.
Думал, закидывать сообщения в dictionary и при получении нового проверять тот же это чат. Но, если да, я не знаю, как продолжить метод, который ждет ответа. Есть еще вариант с callback'ами, реализовать не пробывал, но мне кажется, что это не очень хорошая идея. Что можете посоветовать?
Обычно делается не так, с твоим подходом у тебя будет лапша в которой невозможно разобраться Диалог с конкретным юзером может быть в наборе состояний, например: ДИАЛОГ_НЕ_НАЧАТ, СПРОСИЛИ_ДАТУ_РОЖДЕНИЯ, ПОЛУЧИЛИ_ДАТУ_РОЖДЕНИЯ, НЕВЕРНЫЙ_ФОРМАТ_ДАТЫ_РОЖДЕНИЯ Ты описываешь все возможные состояния, что в них делает бот (пишет сообщение,заносит запись в базу), и в какие состояния можно перейти из текущего Потом для каждого диалога тебе нужно просто помнить текущее состояние Гугли по запросу "конечный автомат" или "finite state automaton"
Обсуждают сегодня