На уровне бэка добавляете режим ожидания.
Человек пишет Боту - /start
Бот показывает меню, или переходит в режим активации регистрации. Вы на беке записываете, что в течении 1 минуты мы ожидаем от пользователя название города или сервисную команду /start . Причем сервисными командами надо научить бэк сбрасывать ожидание.
Бот отвечает - Напиши название своего Города
Ставим ожидание команды - город.
Человек пишет Боту - Москва
Бот отвечает - Напиши название своей улицы
Переходим в ожидание улицы
Человек пишет Боту - Большая садовая
Ну дальше понятно думаю.
Самый простой способ сделать такое ожидание - это кэширующая функция в вашем фреймворке на 1-2 минуты.