Не получается достать сообщение из машины состояний в aiogram (Python)

Я отправляю пользователю inline-клаву и при нажатии на 1 кнопку прошу пользователя ввести город и пытаюсь сохранить этот город в машину состояний. А при попытке (при нажатии на 2 кнопку) достать сообщение из машины состояний и отправить ответ бот перестаёт работать.

@dp.message_handler(Command(["start", "help"]))
async def start(message: types.Message):
    keyboard = InlineKeyboardMarkup(inline_keyboard=[
        [
            InlineKeyboardButton(
                text="? Выбрать город ?",
                callback_data="city"
            ),
            InlineKeyboardButton(
                text="?Узнать погоду?",
                callback_data="weather"
            )
        ]
    ])
    await message.answer("Привет, это WeatherBot! Ты можешь узнать у меня погоду ?", reply_markup=keyboard)


@dp.callback_query_handler(text="city")
async def type_city(call: CallbackQuery):
    await call.message.answer("Отправьте название города, погоду которого вы хотите узнать:")
    await ChoiceCity.city.set()
    await call.answer()


@dp.message_handler(state=ChoiceCity.city)
async def save_place(message: types.Message, state: FSMContext):
    place = message.text
    await state.update_data(plc1=place)


@dp.callback_query_handler(text="weather")
async def send_weather(call: CallbackQuery, state: FSMContext):
    data = await state.get_data()
    place = data.get("plc1")
    mgr = config.owm.weather_manager()
    observation = mgr.weather_at_place(place)
    w = observation.weather
    t = w.temperature("celsius")
    await call.message.answer(f"В городе {place} {t['temp']}°, ощущается как {t['feels_like']}°")

states.py:

from aiogram.dispatcher.filters.state import StatesGroup, State


class ChoiceCity(StatesGroup):
    city = State()

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

Автор решения: lordcodes

Получается так, что ты нажимаешь на кнопку которая принимает state=None , а у текущее состояние (state) на данный момент у тебя ChoiceCity.city

Решение такое, нужно заменить эту строку:

@dp.callback_query_handler(text="weather", state='*')

Или

@dp.callback_query_handler(text="weather", state=ChoiceCity.city)
→ Ссылка