Необходимо осуществить переход от функции:
@router.message(FSMFillForm.fill_street)
async def process_street_sent(message: Message, state: FSMContext, address_result):
await state.update_data(fill_list_street=address_result)
data = await state.get_data()
list_streets = data.get('fill_list_street', [])
await message.answer(text=LEXICON_STREET['fill_street'], reply_markup=AddressesIKB.get_search_streets_ikb(list_streets))
await state.set_state(FSMFillForm.fill_home)
await state.storage.get_data()
К функции:
@router.callback_query((FSMFillForm.fill_home), F.data.startswith('search_streets_'))
async def process_home_sent(callback: CallbackQuery, state: FSMContext, step: int = None) -> None:
await state.update_data(fill_street=callback.data.split('_')[-1])
data = await state.get_data()
street_id = data.get('fill_street')
list_home = await Addresses.get_search_houses(street_id=street_id)
await callback.message.edit_text(text=LEXICON_HOME['list_home'],
reply_markup=AddressesIKB.get_homes_ikb(list_home, offset=0, limit=12))
await state.set_state(FSMFillForm.fill_address)
Если не добавлять строку
await state.storage.get_data() то переход в функцию
process_home_sent не осуществляется, при добавлении
await state.storage.get_data() переход в функцию происходит (но с ошибками, это не верный подход для перехода в нужную функцию). Всё дело с
FSM когда у функции
process_home_sent убираю проверку на
(FSMFillForm.fill_home) из роутера, тоже переход осуществляется нормально. Помогите пожалуйста разобраться с данной проблемой. Где может быть нарушена логика кода с моей стороны?
Опережая возможные варианты решений:
- Это не связано с Асинхронной задержкой
- Состояние FMS в функции process_street_sent действительно находится в ожидании состояния fill_home print(f"State after set_state: {await state.get_state()}")