@denpavlysha

Почему бот после выполнения первой команды, выдаёт неправильный ответ при выполнении второй?

Я пишу бота для выполнения тестов. Когда я запускаю бота через консоль и проверяю работу, то на первый вопрос он отвечает правильно, при этом если я сразу же после перезагрузки запущу второй вопрос, то он уже не будет работать верно, считая что я ввожу неправильное слово.
#@dp.message_handler(commands=['check_yourself'])
async def knowledge_check(message: types.Message):
    await bot.send_message(message.from_user.id, f"Давай проверим твои знания, {message.from_user.full_name}", reply_markup=cy_client)
    await bot.send_message(message.from_user.id, f'{message.from_user.full_name}, выбери слово, стоящее в правильной форме.')

    #Вводим команду для выполнения первого задания
    @dp.message_handler(commands=['Первое_задание'])
    async def answer_check1(message: types.Message):
        await bot.send_message(message.from_user.id, f'обгрыза(е)нное яблоко', reply_markup=a1_client)
        #Пользователь вводит ответ, далее ответ проверяется ботом
        @dp.message_handler()
        async def ans_ch1(message: types.Message, state : FSMContext):
            if 'обгрызенное' in message.text:
                #Если ответ верен, то бот выводит...
                await bot.send_message(message.from_user.id, f'Абсолютно верно! {message.text}')
                await state.finish()
                await bot.send_message(message.from_user.id, f'Возвращаюсь к заданиям', reply_markup=cy_client)
            else:
                #Если ответ неверен, то бот выводит...
                await bot.send_message(message.from_user.id, f'К сожалению, это неправильный ответ :(  {message.text}')
                await state.finish()
                await bot.send_message(message.from_user.id, f'Возвращаюсь к заданиям', reply_markup=cy_client)
    
    #Аналогичный код для второг задания
    @dp.message_handler(commands=['Второе_задание'])
    async def answer_check2(message: types.Message):
        await bot.send_message(message.from_user.id, f'косвенных падежей(ов)', reply_markup=a2_client)
        @dp.message_handler()
        async def ans_ch2(msg: types.Message, state : FSMContext):
            if 'падежей' in msg.text:
                await bot.send_message(message.from_user.id, f'Абсолютно верно! {msg.text}')
                await state.finish()
                await bot.send_message(message.from_user.id, f'Возвращаюсь к заданиям', reply_markup=cy_client)
            else:
                await bot.send_message(message.from_user.id, f'К сожалению, это неправильный ответ :(  {msg.text}')
                await state.finish()
                await bot.send_message(message.from_user.id, f'Возвращаюсь к заданиям', reply_markup=cy_client)

Что нужно добавить в код, для нормальной работы бота?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
1. Не объявляйте фунции внутри функций. Это не будет работать как вы думаете
2. Для запоминания ответов и состояний используйте FSM
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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