У вас проблемы с логикой. Всё в мгновение пойдёт по вульве как только напишет второй человек. А если будет больше, то каша будет просто у всех.
Для таких чат-ботов используется база данных. В которой хранится состояние каждого пользователя и для каждого отдельного пользователя будет по-разному происходить проверка условий в зависимости от последнего состояния (текущего шага).
Как только кто-то пишет. Идете в базу, забираете состояние текущего пользователя (текущий шаг) и реагируйте на его сообщение относительно текущего шага. И так для каждого сообщения.
Критика:
У вас ужасный, не понятный код. Куча вложенных условий. Магические строки, магические числа. Переменная city сравнивается со строкой "Назад". Как это логически вообще обосновать?
Глобальные переменные, ошибочное использование принципа работы бота: longpoll.listen() - это метод для одного глобального цикла
Список у тебя какой? Если строки списка разделены переносом строки, то запись и чтение сохраняют перенос и проблем не должно быть.
А если у тебя список строк, которые могут содержать переносы, то хранить такое нужно либо через сериализацию, либо как нормальные люди в отдельной таблице.