Задать вопрос

Как сделать переходы в 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)


Как сделать переход с "погода на завтра" на ветвь "погода на сегодня"? Я попробовал добавить кнопки, но суть не менялась, он всё-равно продолжал показывать погоду на сегодня, после использования кнопки погоды на завтра.
  • Вопрос задан
  • 1063 просмотра
Подписаться 4 Простой Комментировать
Решения вопроса 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)

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

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

Похожие вопросы