убран костыль

This commit is contained in:
Галина Федоренко 2024-04-15 22:44:56 +04:00
parent 6f3e1164ce
commit 1e9e388af8

29
main.py
View File

@ -5,17 +5,19 @@ import sqlite3
# Создаем экземпляр бота с указанием токена # Создаем экземпляр бота с указанием токена
bot = telebot.TeleBot('sekretik') bot = telebot.TeleBot('sekretik')
current_poll = ""
# Создаем глобальный словарь для хранения вопросов и вариантов ответов # Создаем глобальный словарь для хранения вопросов и вариантов ответов
questions = { questions = {
"question1": { "question1": {
"question": "Вопрос для темы 1", "question": "Вопрос для темы 1",
"options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'], "options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'],
"correct_option_id": 2 "correct_option_id": 0
}, },
"question2": { "question2": {
"question": "Вопрос для темы 2", "question": "Вопрос для темы 2",
"options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'], "options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'],
"correct_option_id": 2 "correct_option_id": 1
}, },
"question3": { "question3": {
"question": "Вопрос для темы 3", "question": "Вопрос для темы 3",
@ -25,17 +27,17 @@ questions = {
"question4": { "question4": {
"question": "Вопрос для темы 4", "question": "Вопрос для темы 4",
"options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'], "options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'],
"correct_option_id": 2 "correct_option_id": 3
}, },
"question5": { "question5": {
"question": "Вопрос для темы 5", "question": "Вопрос для темы 5",
"options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'], "options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'],
"correct_option_id": 2 "correct_option_id": 0
}, },
"question6": { "question6": {
"question": "Вопрос для темы 6", "question": "Вопрос для темы 6",
"options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'], "options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'],
"correct_option_id": 2 "correct_option_id": 1
}, },
"question7": { "question7": {
"question": "Вопрос для темы 7", "question": "Вопрос для темы 7",
@ -45,7 +47,7 @@ questions = {
"question8": { "question8": {
"question": "Вопрос для темы 8", "question": "Вопрос для темы 8",
"options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'], "options": ['Ответ 1', 'Ответ 2', 'Ответ 3', 'Ответ 4'],
"correct_option_id": 2 "correct_option_id": 3
}, },
} }
@ -260,9 +262,8 @@ def handle_topic(call):
if topic == "remove_progress": if topic == "remove_progress":
conn = sqlite3.connect('users.db') conn = sqlite3.connect('users.db')
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute( for i in range(1, 9):
"UPDATE topics SET question1 = 0 WHERE chat_id=?", cursor.execute(f"UPDATE topics SET question{i} = 0 WHERE chat_id={call.message.chat.id}")
(call.message.chat.id,))
cursor.execute("UPDATE users SET count = 0 WHERE user_id=?", (call.message.chat.id,)) cursor.execute("UPDATE users SET count = 0 WHERE user_id=?", (call.message.chat.id,))
bot.send_message(chat_id, 'Прогресс очищен') bot.send_message(chat_id, 'Прогресс очищен')
# Закрываем соединение с базой данных # Закрываем соединение с базой данных
@ -303,6 +304,8 @@ def handle_topic(call):
poll = bot.send_poll(call.message.chat.id, question, options, is_anonymous=False, poll = bot.send_poll(call.message.chat.id, question, options, is_anonymous=False,
type='quiz', open_period=30, correct_option_id=correct) type='quiz', open_period=30, correct_option_id=correct)
global current_poll
current_poll = topic
else: else:
bot.send_message(chat_id, "Жулик! Проходить тест можно только один раз!") bot.send_message(chat_id, "Жулик! Проходить тест можно только один раз!")
else: else:
@ -313,10 +316,13 @@ def handle_topic(call):
# Обработка ответов на опросы # Обработка ответов на опросы
@bot.poll_answer_handler(func=lambda poll_answer: True) @bot.poll_answer_handler(func=lambda poll_answer: True)
def handle_poll_answer(poll_answer): def handle_poll_answer(poll_answer):
chosen_option_id = poll_answer.option_ids global current_poll
chosen_option_id = poll_answer.option_ids[0]
question_data = questions[current_poll]
correct = question_data["correct_option_id"]
# Проверяем, совпадает ли выбранный вариант с правильным # Проверяем, совпадает ли выбранный вариант с правильным
if chosen_option_id[0] == 2: if chosen_option_id == correct:
result_message = "Правильно! 🎉" result_message = "Правильно! 🎉"
right_answer(poll_answer.user.id) right_answer(poll_answer.user.id)
else: else:
@ -324,6 +330,7 @@ def handle_poll_answer(poll_answer):
# Отправляем сообщение с результатом # Отправляем сообщение с результатом
bot.send_message(poll_answer.user.id, result_message) bot.send_message(poll_answer.user.id, result_message)
current_poll = ""
def right_answer(user_id): def right_answer(user_id):
conn = sqlite3.connect('users.db') conn = sqlite3.connect('users.db')