Делаете кнопки с callback_data=city_1, city_2 и тд. Чтобы был разделитель. Startswith обрабатывает все колбеки начинающиеся с опредленного слова. Split получает на вход строку, делит ее на части по разделителю. получается вы получаете в хендлер через startswith все эти колбеки, там делите на части и получаете номер города. по нему уже извлекаете из БД информацию или чтото другое делаете
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.