Как сделать переходы в aiogram из одной ветки в другую?

У меня имеется такой вот код:
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    start_buttons = ['Погода на сегодня', 'Погода на завтра']
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*start_buttons)

    await message.reply('Привет!\nЧтобы узнать погоду на сегодняшний или завтрашний день,\nвыберите подходящую опцию.', reply_markup=keyboard)

@dp.message_handler(Text(equals='Погода на сегодня'))
async def weather_bot_today_Sr(message: types.Message):
    city_keyboard = ['Саратов', 'Степное', 'Погода на завтра']
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*city_keyboard)

    await message.reply('Выберите населённый пункт', reply_markup=keyboard)

    @dp.message_handler(Text(equals='Саратов'))
    async def weather_bot_today_Sr(message: types.Message):
        await message.answer('Пожалуйста подождите..')

        weather_today_Sr()

        with open('weather.json',  encoding='utf-8') as file:
            data_weather = json.load(file)

            for k, v in data_weather.items():
                weather_data = f"{k}: {v}"

                await message.answer(weather_data)
    
    @dp.message_handler(Text(equals='Степное'))
    async def weather_bot_today_St(message: types.Message):
        await message.answer('Пожалуйста подождите..')

        weather_today_St()

        with open('weather.json',  encoding='utf-8') as file:
            data_weather = json.load(file)

            for k, v in data_weather.items():
                weather_data = f"{k}: {v}"

                await message.answer(weather_data)

@dp.message_handler(Text(equals='Погода на завтра'))
async def weather_bot_tomorrow(message: types.Message):
    city_keyboard = ['Саратов', 'Степное', 'Погода на сегодня']
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*city_keyboard)

    await message.reply('Выберите населённый пункт', reply_markup=keyboard)

    @dp.message_handler(Text(equals='Саратов'))
    async def weather_bot_tomorrow_Sr(message: types.Message):
        await message.answer('Пожалуйста подождите..')

        weather_tomorrow_Sr()

        with open('weather.json',  encoding='utf-8') as file:
            data_weather = json.load(file)

            for k, v in data_weather.items():
                weather_data = f"{k}: {v}"

                await message.answer(weather_data)

    @dp.message_handler(Text(equals='Степное'))
    async def weather_bot_today_St(message: types.Message):
        await message.answer('Пожалуйста подождите..')

        weather_tomorrow_St()

        with open('weather.json',  encoding='utf-8') as file:
            data_weather = json.load(file)

            for k, v in data_weather.items():
                weather_data = f"{k}: {v}"

                await message.answer(weather_data)


Как сделать переход с "погода на завтра" на ветвь "погода на сегодня"? Я попробовал добавить кнопки, но суть не менялась, он всё-равно продолжал показывать погоду на сегодня, после использования кнопки погоды на завтра.
  • Вопрос задан
  • 1040 просмотров
Решения вопроса 1
senku1435
@senku1435
py aiogram develop, c# mid
Добрый день пожалуйста поработайте с состояниями! Есть прекрасная статья, там все предельно легко
https://surik00.gitbooks.io/aiogram-lessons/conten...
Это вам поможет и в дальнейшей разработке это раз
Два
Сделайте кнопку которая будет обратно возвращать на функцию старт, тогда пользователь сможет снова выбирать
return_button = ['/start']
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*start_buttons)

Так же хочу предложить импортировать все клавиатуры из другого файла для использования несколько раз(для возвратов)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект