Чтобы понять, почему состояние не записывается, давайте рассмотрим несколько возможных причин и решений: <br/> <br/> Проверка правильности использования FSMContext: <br/> Убедитесь, что вы правильно импортировали и используете FSMContext. Также убедитесь, что состояние и данные обновляются корректно. <br/> <br/> Проверка правильности определения состояний: <br/> Убедитесь, что состояния Choice.choice_I и Quest_5.quest_II правильно определены и импортированы. <br/> <br/> Проверка логики обновления состояния: <br/> Убедитесь, что логика обновления состояния и данных корректна. В вашем коде есть несколько мест, где состояние и данные обновляются, но не проверяется результат этих операций. <br/> <br/> Проверка корректности списка list_5: <br/> Убедитесь, что список list_5 определен и содержит нужные элементы. <br/> <br/> Проверка корректности клавиатуры Kb.main_kb: <br/> Убедитесь, что клавиатура Kb.main_kb определена и корректно используется. <br/> <br/> Вот пример, как можно улучшить ваш код с дополнительными проверками и отладочной информацией: <br/> <br/> <pre><code>from aiogram import Router, F
from aiogram.types import Message
from aiogram.dispatcher import FSMContext
import random
router = Router()
list_5 = ["Question 1", "Question 2"] # Пример списка вопросов
Kb = ... # Определите вашу клавиатуру здесь
class Choice:
choice_I = "choice_I"
class Quest_5:
quest_II = "quest_II"
@router.message(F.text == '№5', Choice.choice_I)
async def numb_5(message: Message, state: FSMContext):
await message.answer('Подбираю...')
Question_5 = random.choice(list_5)
await message.answer(text=Question_5, reply_markup=Kb.main_kb)
if Question_5 == list_5[0]:
await state.update_data(quest_II=message.text)
await state.set_state(Quest_5.quest_II)
print('True_0')
state_data = await state.get_data()
current_state = await state.get_state()
print(f"Current state: {current_state}, State data: {state_data}")
if current_state == Quest_5.quest_II:
print('Its work')
else:
print('No')
elif Question_5 == list_5[1]:
print('True_1')
await state.update_data(quest_II=message.text)
await state.set_state(Quest_5.quest_II)
state_data = await state.get_data()
current_state = await state.get_state()
print(f"Current state: {current_state}, State data: {state_data}")
if current_state == Quest_5.quest_II:
print('Its work')
else:
print('No')</code></pre> <br/> В этом примере добавлены дополнительные отладочные сообщения, чтобы проверить текущее состояние и данные состояния после их обновления. Это поможет вам понять, где может быть проблема.