• Квиз бот телеграм aiogram. Как реализовать проверку ответа на правильность?

    @afasfks Автор вопроса
    Михаил Кростелев, я читал про инлайн кнопки, изначально хотел все ответы отправлять на них, но видимо не нашел документацию, в которой описывается как четыре инлайн кнопки в одну callback_data направить, или же не совсем понимаю как это правильно сделать. Если что-нибудь подскажите в этом плане то буду очень благодарен
  • Как сделать квиз бот телеграм Python?

    @afasfks Автор вопроса
    afasfks, в переменной vals числа от 0 до 11 потому что это номера ячеек, в которых хранятся неправильные варианты ответа. Далее в переменных a b c d рандомное значение подставляется в функцию, которая забирает ответ из ячейки файла эксель
  • Как сделать квиз бот телеграм Python?

    @afasfks Автор вопроса
    Vindicar, я написал код который более менее работает. прикрутил через библиотеки к проекту таблицу эксель которая выступает в роли базы данных. На одном листе файла эксель в качестве id выступает номер ячейки, а еще в двух путь к файлу(картинке), которая вставляется в переменную фотографии для бота и соответственно правильный ответ. Во втором листе список неправильных ответов которые написал от балды чисто ради тестирования. Сделал 4 переменных а,b,c,d. Переменная a всегда равняется правильному ответу, а остальные три берут значение неправильного ответа. Потом с помощью еще одного рандомайзера сделал так чтоб каждая из 4 кнопок брала рандомное значение от a до d и не повторялась. Возможно код получился очень топорным, но он работает. Сейчас пытаюсь каким-то образом прикрутить счетчик правильных ответов и чтоб бот сразу следующий вопрос отправлял. Код прикреплю если будет интересно
    @dp.message_handler(Text(equals="тест 1"))
    async def quiz_1(message: types.Message):
        module_one = xlrd.open_workbook('theme1.xls')
        sheet = module_one.sheet_by_index(0)
        random_photo_id = randint(0, 2)
        random_photo = sheet.row_values(random_photo_id)[0]
        true_answer = sheet.row_values(random_photo_id)[1]
        photo = random_photo
    
        module_one_answers = xlrd.open_workbook('theme1.xls')
        sheet2 = module_one_answers.sheet_by_index(1)
        vals = list(range(0, 11))
        random.shuffle(vals)
        # переменная vals содержит в себе числа от 0 до 11, далее они перемешиваются друг между другом.
    
        a = true_answer
        b = sheet2.row_values(vals[1])[0]
        c = sheet2.row_values(vals[2])[0]
        d = sheet2.row_values(vals[3])[0]
    ### переменные b c d берут первое, второе и третье значение из перемешанного списка чисел в переменной vals
    
        keyboard_list = [a, b, c, d]
        random.shuffle(keyboard_list)
    #### далее идет тот же механизм, только список состоит из четырех переменных a b c d, перемешивается и соответственоо каждая из четырех кнопок берет в себя первое,второе и так далее значение из листа
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = keyboard.add(types.KeyboardButton(text=keyboard_list[0]))
        button2 = keyboard.add(types.KeyboardButton(text=keyboard_list[1]))
        button3 = keyboard.add(types.KeyboardButton(text=keyboard_list[2]))
        button4 = keyboard.add(types.KeyboardButton(text=keyboard_list[3]))
        buttonexit = keyboard.add(types.KeyboardButton(text="тест 1"))
    
        await message.answer("какой препарат изображен на фотографии?", reply_markup=keyboard)
        await bot.send_photo(message.chat.id, types.InputFile(photo))
  • Как сделать квиз бот телеграм Python?

    @afasfks Автор вопроса
    Vindicar, думаю в проектировании системы, в командах я более менее разобрался