Как обработать кнопки ReplyKeyboard со списком городов, чтобы при нажатии бот выдавал информацию, из словаря словарей. Aiogram

Решил попытаться самостоятельно написать телеграм-бот на питоне с помощью aiogram. Задача следующая: при старте появляется приветствие и 2 обычные кнопки (Список городов и еще одна). При нажатии на "Список..." появляется новая обычная клавиатура со списком городов:

Обычные кнопки с городами

До этого момента все самостоятельно как-то получилось. Теперь встал вопрос. У меня сделан отдельным файлом словарь городов, которые являются словарями:

cities = {
    'Владивосток': {
        "key1":"value1",
        "key2":"value2",
        "key3":"value3"
    },

    'Волгоград': {
        "key1":"value1",
        "key2":"value2",
        "key3":"value3"
    }, ...

Не могу понять, каким образом оформить обработку нажатий на клавиши. Получилось самым простым вариантом, когда введенное пользователем сообщение явным образом сравнивается с именем города:

    @router.message(F.text.lower() == "владивосток")
    async def city_values(message: Message):
        for v in cities["Владивосток"].values():
            await message.answer(v)

Но в этом случае мне придется кучу обработок писать, и если предположить добавление новых городов, то каждый раз придется новую обработку добавлять. Есть ли способ прогнать через цикл? Или может еще варианты, которые я не смог найти в связи с тем, что я новичок.


Ответы (1 шт):

Автор решения: Дмитрий Емельянов

После подсказки, подогнал решение под ответ следующим образом:

@router.message(F.text.lower())
async def city_values(message: Message):
    input_text = message.text
    if input_text in cities:
        for v in cities[input_text].values():
            await message.answer(v)
    else:
        await message.answer("Выберите город из списка, пожалуйста")

Возможно кто-то подскажет решение получше, буду очень благодарен!

→ Ссылка