async def questions_step_by_step(message: types.Message, state: FSMContext): """ Функция квиза :param state: :param message: сообщение пользователя :return: отправляем следующий вопрос """ user_id: int = message.from_user.id current_question: int = db.get_current_question(user_id) async with state.proxy() as data: data[current_question] = message.text right_answer = False if current_question > 30: text = MESSAGES['you are finished'] markup = ReplyKeyboardRemove() else: question = questions[current_question] markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) user_answer = message.text.lower() true_answer = questions[current_question]['Answer'].lower() if user_answer == true_answer: right_answer = True db.set_point(user_id, current_question) have_hint = db.have_hints(user_id) if current_question + 1 > 20: markup = ReplyKeyboardRemove() # here open questions if not right_answer and not have_hint: # даем подсказку text = MESSAGES['hint'] + question['Choices'][0] db.set_hint(user_id) else: # он дал верный ответ или уже была одна подсказка db.delete_hint(user_id) db.increment_current_question(user_id, current_question) if current_question == 30: text = MESSAGES['the_end'] await state.finish() else: question = questions[current_question + 1] text = question['Question'] await Quiz.next() else: # here quiz questions db.increment_current_question(user_id, current_question) question = questions[current_question + 1] text = question['Question'] for choice in question['Choices']: choice_btn = KeyboardButton(choice) markup.add(choice_btn) await Quiz.next() await message.reply(text, reply_markup=markup, reply=False)
async def start_quiz(message: types.Message): if db.get_current_question(user_id=message.from_user.id) > 30: text = MESSAGES['you are finished'] markup = ReplyKeyboardRemove() else: await Quiz.Task1.set() db.increment_current_question(message.from_user.id, 0) text = questions[1]['Question'] markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) for choice in questions[1]['Choices']: choice_btn = KeyboardButton(choice) markup.add(choice_btn) await message.reply(text, reply_markup=markup, reply=False)