Бот должен записать куда-нибудь (например в базу), что ожидается от пользователя.
В зависимости от реализации, можно сделать ожидание ответа в отдельном потоке. Т.е. бот отправляет клиенту вопрос и приостанавливает выполнение потока, ожидая ответ от клиента. Но в любом случае желательно сохранять информацию в базу данных.
Также следует учитывать, что пользователь может не прислать ответ. В таком случае нужно ограничить срок ожидания ответа (учитывать дату начала ожидания и проверять дату ответа пользователя).
Пример:
Пользователь: Привет!
Бот: Привет, %username%! Чем я могу помочь?
// предполагается, что следующий ответ пользователя будет на вопрос, "чем я могу помочь?"
// записываем в базу отметку для текущего conversationId, например ставим next=1
Пользователь: Как обработать ответ telegram bot?
// бот смотрит в базе, что поле next равно 1, значит нужно найти ответ на вопрос пользователя
Бот: Секундочку, сейчас поищу на Toster...
Бот: Посмотри здесь: https://toster.ru/q/540828#answer_1235905
Пользователь: Спасибо!
Бот: Без проблем, обращайся!
Пользователь: Хочу купить билет в Испанию!
Бот: Отлично! В какой город?
// next=2
Пользователь: Мадрид
// if (next == 2) { это имя города, проверить название города по базе, если город найден }
Бот: На какую дату?
// next=3
Пользователь: 25.06.2018
// if (next == 3) { это дата, проверить правильность указания даты, если все правильно }
Бот: Отлично! Сейчас что-нибудь подберу...
...