Def show_topics(chat_id, subject, section): topics = list(materials[subject][section].keys()) markup = create_keyboard(topics, add_back_button=True, add_faq_button=True) send_html_message(chat_id, add_emoji(f"Выберите тему по {section} в {subject}:"), reply_markup=markup) user_states[chat_id] = {"state": "choosing_topic", "subject": subject, "section": section} def send_material(chat_id, subject, section, topic): material = materials[subject][section][topic] material_type = material["type"] if material_type == "link": send_link(chat_id, material["url"], material["description"]) elif material_type == "text": send_text(chat_id, material["content"]) elif material_type == "document": send_document(chat_id, file_path, description) else: bot.send_message(chat_id, add_emoji("Неизвестный тип материала.")) # --- Функции для FAQ --- def show_faq(chat_id): """Показывает список вопросов из FAQ.""" questions = list(faq.keys()) + [f"FAQ по предмету"] #Добавляем кнопку в FAQ markup = create_keyboard(questions, row_width=1, add_back_button=True, one_time_keyboard=True) send_html_message(chat_id, add_emoji("Выберите вопрос из FAQ:"), reply_markup=markup) user_states[chat_id] = {"state": "faq"} def send_faq_answer(chat_id, question): """Отправляет ответ на выбранный вопрос.""" if question in faq: send_html_message(chat_id, add_emoji(f"{question}:\n{faq[question]}")) elif question == "FAQ по предмету": subject = user_states.get(chat_id, {}).get("subject") if subject and subject in universal_faq: send_html_message(chat_id, add_emoji(f"FAQ по предмету {subject}:\n{universal_faq[subject]}")) else: send_html_message(chat_id, add_emoji("Универсальный вопрос для этого предмета пока не задан.")) else: bot.send_message(chat_id, add_emoji("Ответ на этот вопрос не найден.")) # --- Функции для работы с тестами --- def show_test_menu(chat_id): """Показывает меню с предметами для выбора теста.""" subjects = list(test_data.keys()) markup = create_keyboard(subjects, add_back_button=True, add_faq_button=True) send_html_message(chat_id, add_emoji("Выберите предмет для прохождения теста:"), reply_markup=markup) user_states[chat_id] = {"state": "choosing_test_subject"} def show_test_topics(chat_id, subject): """Показывает список тем для выбора теста.""" topics = list(test_data[subject].keys()) markup = create_keyboard(topics, add_back_button=True, add_faq_button=True) send_html_message(chat_id, add_emoji(f"Выберите вариант ОГЭ по {subject}:"), reply_markup=markup) user_states[chat_id] = {"state": "choosing_test_topic", "subject": subject} def start_test(chat_id, subject, topic): """Начинает тест по выбранной теме.""" if subject not in test_data or topic not in test_data[subject]: bot.send_message(chat_id, add_emoji("Тестов по этой теме пока нет.")) return questions = test_data[subject][topic] if not questions: bot.send_message(chat_id, add_emoji("Тестов по этой теме пока нет.")) return user_states[chat_id] = { "state": "testing", "subject": subject, "topic": topic, "questions": questions, "current_question_index": 0, "correct_answers": 0, "total_questions": len(questions) } ask_question(chat_id) def ask_question(chat_id): """Задает следующий вопрос из теста.""" state = user_states.get(chat_id) if not state or state["state"] != "testing": return question_index = state["current_question_index"] questions = state["questions"] if question_index >= len(questions): finish_test(chat_id) return
Ответ нейросети
09 марта 2025 17:29
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



