知到智慧树全自动刷问答平时分助手

通过ai快速地,全自动刷智慧树问答,半自动化可选择地提问,并且自动添加防提问重复机制,添加防止无效问题提问机制,嘎嘎好用。

// ==UserScript==
// @name         知到智慧树全自动刷问答平时分助手
// @version      1.0.8
// @description  通过ai快速地,全自动刷智慧树问答,半自动化可选择地提问,并且自动添加防提问重复机制,添加防止无效问题提问机制,嘎嘎好用。
// @author       fenda
// @match      	 *://*.zhihuishu.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_setValue
// @grant        GM_getValue
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfMAAAH0CAYAAAApCsTzAAAAAXNSR0IArs4c6QAAIABJREFUeAHsvQd8HdWd953dfbY9u9messm75d3ked538+4mAVvSrZKwDbio3aYudwghgSSEYkm3SnIHU5MsSYCEDQFLNiGhJAGbkgKEXkKHhJqAsY27dO+dmd/7/M7oyOOLruqVbOn+rz/j6WfOfGf0/83/nP855wMfkJ8QEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEDgxCEQikT+qrE7+Q2Uk+Ul/pP1T/kjyU/byug99KpL8kxMjl5ILISAEhIAQEAJC4H0EPrnonD9116w5qbSm/UJfOHZbRSj2bEW4462KcPytykjqRX+wa6enLrGxtDo6b07kor9+XwKyQQgIASEgBISAEDh+BOYsuuATpTXxr/tCsdd84WTGG0nBFYzBG4nBG4qjNNSJ0nAM3kDc8AYTb322Jvrd/6xu/3+PX47lykJACAgBISAEhIBNIJn8w7KaC0856dTznvMEo5Y7lIA73AVXKAV3fRLuSAyeYBfc9QmUNXTCG0nAE0iitDZm/ceir7xYUrum4QPJ5B8KTiEgBISAEBACQuA4EfCHU/MrwtHfeEKd8ITXwBvphC8UhaeuE966TvjrovCH4qgIdMBb2w5PJAlPJIby0Bq4QglUNETfdoU66o9T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AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCJyuAv8HuXkDGH4YH9IAAAAASUVORK5CYII=
// @grant        GM_notification
// @grant        GM_registerMenuCommand
// @license      MIT
// @namespace http://fenda.github.io/
// ==/UserScript==

(function () {

    'use strict';

    const defaultAPIKey = "sk-zt3dcYmk8D4FECtgDa7427F7E71444B589D6FbD6CcC44b30";
    const defaultAPIUrl = "https://api.gpt.ge/v1/chat/completions";
    const defaultModel = "glm-4-flash";
    const intervalTime = GM_getValue("intervalTime", 2000);
    const initialCountdownTime = GM_getValue("countdownTime", 20);

    let requestLock = false;
    let noAnswerButtonCount = 0;
    let countdownInterval;

    const inputEvent = new Event("input", { bubbles: true, cancelable: true });

    function debounce(fn, delay) {
        let timeout;
        return function () {
            clearTimeout(timeout);
            timeout = setTimeout(() => fn.apply(this, arguments), delay);
        };
    }

    function initMutationObserver() {
        const debouncedUpdate = debounce(() => {
            console.log("DOM 变化检测到,更新问题列表...");
            addQuestionStatus();
            if (GM_getValue("isAutoScrolling", false)) {
                const isAutoScrolling = GM_getValue("isAutoScrolling", false);
                if (isAutoScrolling) {
                    scrollToLastUnansweredQuestion();
                }
            }
            checkHomeRegex();
        }, 500);

        const observer = new MutationObserver((mutations) => {
            debouncedUpdate();

        });

        const config = {
            attributes: true,
            childList: true,
            subtree: true,
            characterData: true
        };

        observer.observe(document.body, config);

        console.log("MutationObserver 已启动,正在监听 DOM 变化...");
    }


    function createQuestionManagementModal() {
        const modal = document.createElement('div');
        modal.className = 'question-management-modal';
        modal.style = `
            position: fixed;
            top: 50px;
            left: 5%;
            width: 90%;
            height: 80%;
            background: linear-gradient(145deg, #ffffff, #e6e6e6);
            box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1);
            border-radius: 15px;
            z-index: 1000;
            padding: 20px;
            overflow: hidden;
        `;

        let questionsData = GM_getValue("questionsData", {});
        const lastViewedCourseIndex = GM_getValue("lastViewedCourseIndex", 0);
        let questionsPerPage = GM_getValue("questionsPerPage", 10);

        const coursetabs = document.createElement('div');
        coursetabs.style = `
            display: flex;
            justify-content: center;
            margin-bottom: 15px;
            border-bottom: 1px solid #e0e0e0;
        `;

        const contentArea = document.createElement('div');
        contentArea.style.height = 'calc(100% - 100px)';

        Object.keys(questionsData).forEach((courseName, index) => {
            const courseTab = document.createElement('div');
            courseTab.textContent = courseName;
            courseTab.style = `
                padding: 10px 15px;
                cursor: pointer;
                background: ${index === lastViewedCourseIndex ? 'linear-gradient(145deg, #4c88d6, #3b5998)' : 'transparent'};
                color: ${index === lastViewedCourseIndex ? 'white' : 'black'};
                border-radius: 5px 5px 0 0;
                margin-right: 5px;
            `;

            const courseTable = document.createElement('div');
            courseTable.style = `
                display: ${index === lastViewedCourseIndex ? 'block' : 'none'};
                width: 100%;
                height: 100%;
                overflow-y: auto;
            `;

            const tableContainer = document.createElement('div');
            tableContainer.style = `
                width: 100%;
                overflow-x: auto;
            `;

            const table = document.createElement('table');
            table.style = `
                width: 100%;
                border-collapse: collapse;
                table-layout: fixed;
            `;

            const thead = document.createElement('thead');
            thead.style = `
                position: sticky;
                top: 0;
                background: linear-gradient(145deg, #4c88d6, #3b5998);
                color: white;
                z-index: 1;
            `;
            thead.innerHTML = `
                <tr>
                    <th style="padding: 10px; text-align: left; width: 60%;">题目
                        <input type="text" placeholder="搜索..." class="filter-input" style="margin-left: 5px; padding: 3px; border-radius: 5px; border: 1px solid #ccc; color: black;">
                    </th>
                    <th style="padding: 10px; text-align: center; width: 20%;">状态</th>
                    <th style="padding: 10px; text-align: center; width: 20%;">操作</th>
                </tr>
            `;

            const tbody = document.createElement('tbody');

            let questions = Object.entries(questionsData[courseName]);
            let currentPage = GM_getValue(`lastViewedPage_${courseName}`, 1);
            let totalPages = Math.ceil(questions.length / questionsPerPage);
            let isSearchMode = false;

            function displayQuestions(page, filteredQuestions = null) {
                tbody.innerHTML = '';
                const questionsToDisplay = filteredQuestions || questions;
                const startIndex = (page - 1) * questionsPerPage;
                const endIndex = Math.min(startIndex + questionsPerPage, questionsToDisplay.length);

                for (let i = startIndex; i < endIndex; i++) {
                    const [question, status] = questionsToDisplay[i];
                    const questionIndex = questions.findIndex(([q]) => q === question);
                    const questionPage = Math.ceil((questionIndex + 1) / questionsPerPage);

                    const row = document.createElement('tr');
                    row.setAttribute('data-question', question);
                    let questionHTML = question;
                    if (isSearchMode && filteredQuestions) {
                        questionHTML += ` <span style="color: orange;">(第${questionPage}页)</span>`;
                    }
                    row.innerHTML = `
                        <td style="padding: 10px; border-bottom: 1px solid #e0e0e0; white-space: normal; word-break: break-word;">${questionHTML}</td>
                        <td style="padding: 10px; border-bottom: 1px solid #e0e0e0; text-align: center; color: ${status === '已回答' ? 'green' : 'red'}; white-space: nowrap;">
                            ${status}
                        </td>
                        <td style="padding: 10px; border-bottom: 1px solid #e0e0e0; text-align: center; white-space: nowrap;">
                            <button class="set-answered" data-course="${courseName}" data-question="${question}" style="
                                margin-right: 5px;
                                padding: 5px 10px;
                                background: green;
                                color: white;
                                border: none;
                                border-radius: 5px;
                            ">设为已答</button>
                            <button class="set-unanswered" data-course="${courseName}" data-question="${question}" style="
                                padding: 5px 10px;
                                background: red;
                                color: white;
                                border: none;
                                border-radius: 5px;
                            ">设为未答</button>
                        </td>
                    `;
                    tbody.appendChild(row);
                }
            }

            displayQuestions(currentPage);

            thead.querySelector('.filter-input').addEventListener('input', function () {
                const filterValue = this.value.toLowerCase();
                isSearchMode = filterValue.length > 0;
                const filteredQuestions = Object.entries(questionsData[courseName]).filter(([question, status]) => {
                    return question.toLowerCase().includes(filterValue);
                });
                totalPages = Math.ceil(filteredQuestions.length / questionsPerPage);
                currentPage = 1;
                displayQuestions(currentPage, filteredQuestions);
                updatePagination();
            });

            table.addEventListener('click', function (event) {
                const target = event.target;
                const courseName = target.dataset.course;
                const question = target.dataset.question;

                const questionsData = GM_getValue("questionsData", {});

                if (target.classList.contains('set-answered')) {
                    questionsData[courseName][question] = '已回答';
                    GM_setValue("questionsData", questionsData);
                    refreshQuestionManagementModal(courseName, currentPage);
                }

                if (target.classList.contains('set-unanswered')) {
                    questionsData[courseName][question] = '未回答';
                    GM_setValue("questionsData", questionsData);
                    refreshQuestionManagementModal(courseName, currentPage);
                }
            });

            table.appendChild(thead);
            table.appendChild(tbody);
            tableContainer.appendChild(table);
            courseTable.appendChild(tableContainer);

            courseTab.addEventListener('click', () => {
                Array.from(coursetabs.children).forEach((tab, idx) => {
                    tab.style.background = 'transparent';
                    tab.style.color = 'black';
                    contentArea.children[idx].style.display = 'none';
                });

                courseTab.style.background = 'linear-gradient(145deg, #4c88d6, #3b5998)';
                courseTab.style.color = 'white';
                courseTable.style.display = 'block';
                GM_setValue("lastViewedCourseIndex", index);
                currentPage = GM_getValue(`lastViewedPage_${courseName}`, 1);
                displayQuestions(currentPage);
                updatePagination();
                isSearchMode = false;
            });

            courseTab.setAttribute('data-course', courseName);

            coursetabs.appendChild(courseTab);
            contentArea.appendChild(courseTable);

            const paginationContainer = document.createElement('div');
            paginationContainer.style = `
                display: flex;
                justify-content: space-between;
                align-items: center;
                padding: 10px;
                background: #f0f0f0;
                border-radius: 0 0 15px 15px;
                position: absolute;
                bottom: 0;
                left: 0;
                width: 100%;
                box-sizing: border-box;
            `;

            const questionsPerPageContainer = document.createElement('div');
            questionsPerPageContainer.style = `
                display: flex;
                align-items: center;
            `;

            const questionsPerPageLabel = document.createElement('span');
            questionsPerPageLabel.textContent = '每页显示:';
            questionsPerPageLabel.style = `
                margin-right: 5px;
            `;

            const questionsPerPageInput = document.createElement('input');
            questionsPerPageInput.type = 'number';
            questionsPerPageInput.value = questionsPerPage;
            questionsPerPageInput.style = `
                width: 60px;
                padding: 5px;
                border-radius: 5px;
                border: 1px solid #ccc;
                margin-right: 5px;
            `;

            const saveButton = document.createElement('button');
            saveButton.textContent = '保存';
            saveButton.style = `
                padding: 5px 10px;
                border: none;
                border-radius: 5px;
                background: #4CAF50;
                color: white;
                cursor: pointer;
                margin-right: 5px;
            `;

            saveButton.addEventListener('click', () => {
                const newQuestionsPerPage = parseInt(questionsPerPageInput.value);
                if (!isNaN(newQuestionsPerPage) && newQuestionsPerPage > 0) {
                    GM_setValue("questionsPerPage", newQuestionsPerPage);
                    questionsPerPage = newQuestionsPerPage;
                    totalPages = Math.ceil(Object.keys(questionsData[courseName]).length / questionsPerPage);
                    displayQuestions(currentPage);
                    updatePagination();
                } else {
                    showAlert('请输入有效的每页显示数量');
                    questionsPerPageInput.value = questionsPerPage;
                }
            });

            const setPageAnsweredButton = document.createElement('button');
            setPageAnsweredButton.textContent = '一键已答';
            setPageAnsweredButton.style = `
                padding: 5px 10px;
                background: green;
                color: white;
                border: none;
                border-radius: 5px;
                cursor: pointer;
                margin-right: 5px;
            `;
            setPageAnsweredButton.addEventListener('click', () => {
                setQuestionsStatusForCurrentPage(courseName, '已回答', currentPage, questionsPerPage);
                refreshQuestionManagementModal(courseName, currentPage);
            });

            const setPageUnansweredButton = document.createElement('button');
            setPageUnansweredButton.textContent = '一键本页未答';
            setPageUnansweredButton.style = `
                padding: 5px 10px;
                background: red;
                color: white;
                border: none;
                border-radius: 5px;
                cursor: pointer;
            `;
            setPageUnansweredButton.addEventListener('click', () => {
                setQuestionsStatusForCurrentPage(courseName, '未回答', currentPage, questionsPerPage);
                refreshQuestionManagementModal(courseName, currentPage);
            });

            questionsPerPageContainer.appendChild(questionsPerPageLabel);
            questionsPerPageContainer.appendChild(questionsPerPageInput);
            questionsPerPageContainer.appendChild(saveButton);
            questionsPerPageContainer.appendChild(setPageAnsweredButton);
            questionsPerPageContainer.appendChild(setPageUnansweredButton);

            const paginationControls = document.createElement('div');
            paginationControls.style = `
                display: flex;
                align-items: center;
            `;

            const prevButton = document.createElement('button');
            prevButton.textContent = '上一页';
            prevButton.style = `
                padding: 5px 10px;
                margin: 0 5px;
                border: none;
                border-radius: 5px;
                background: #ddd;
                cursor: pointer;
            `;
            prevButton.addEventListener('click', () => {
                if (currentPage > 1) {
                    currentPage--;
                    GM_setValue(`lastViewedPage_${courseName}`, currentPage);
                    displayQuestions(currentPage);
                    updatePagination();
                }
            });

            const nextButton = document.createElement('button');
            nextButton.textContent = '下一页';
            nextButton.style = `
                padding: 5px 10px;
                margin: 0 5px;
                border: none;
                border-radius: 5px;
                background: #ddd;
                cursor: pointer;
            `;
            nextButton.addEventListener('click', () => {
                if (currentPage < totalPages) {
                    currentPage++;
                    GM_setValue(`lastViewedPage_${courseName}`, currentPage);
                    displayQuestions(currentPage);
                    updatePagination();
                }
            });

            const pageInfo = document.createElement('span');
            pageInfo.style = `
                margin: 0 10px;
            `;

            const gotoPageContainer = document.createElement('div');
            gotoPageContainer.style = `
                display: flex;
                align-items: center;
                margin-left: auto;
            `;

            const gotoPageInput = document.createElement('input');
            gotoPageInput.type = 'number';
            gotoPageInput.placeholder = '页码';
            gotoPageInput.style = `
                width: 50px;
                padding: 5px;
                border-radius: 5px;
                border: 1px solid #ccc;
                margin-right: 5px;
            `;

            const gotoPageButton = document.createElement('button');
            gotoPageButton.textContent = '未答';
            gotoPageButton.style = `
                padding: 5px 10px;
                border: none;
                border-radius: 5px;
                background: #4CAF50;
                color: white;
                cursor: pointer;
            `;
            gotoPageButton.addEventListener('click', () => {
                const pageNumber = parseInt(gotoPageInput.value);
                if (!isNaN(pageNumber) && pageNumber >= 1 && pageNumber <= totalPages) {
                    currentPage = pageNumber;
                    GM_setValue(`lastViewedPage_${courseName}`, currentPage);
                    displayQuestions(currentPage);
                    updatePagination();
                } else {
                    alert('请输入有效的页码');
                    gotoPageInput.value = '';
                }
            });

            gotoPageContainer.appendChild(gotoPageInput);
            gotoPageContainer.appendChild(gotoPageButton);

            function updatePagination() {
                pageInfo.textContent = `第 ${currentPage} 页 / 共 ${totalPages} 页`;
            }

            updatePagination();

            paginationControls.appendChild(prevButton);
            paginationControls.appendChild(pageInfo);
            paginationControls.appendChild(nextButton);

            paginationContainer.appendChild(questionsPerPageContainer);
            paginationContainer.appendChild(paginationControls);
            paginationContainer.appendChild(gotoPageContainer);

            courseTable.appendChild(paginationContainer);

            currentPage = GM_getValue(`lastViewedPage_${courseName}`, 1);
            displayQuestions(currentPage);
            updatePagination();
        });

        const closeButton = document.createElement('button');
        closeButton.textContent = '关闭';
        closeButton.style = `
            position: absolute;
            top: 10px;
            right: 10px;
            padding: 5px 10px;
            background: red;
            color: white;
            border: none;
            border-radius: 5px;
        `;
        closeButton.addEventListener('click', () => modal.remove());

        modal.appendChild(coursetabs);
        modal.appendChild(contentArea);
        modal.appendChild(closeButton);

        document.body.appendChild(modal);
    }

    function setQuestionsStatusForCurrentPage(courseName, status, currentPage, questionsPerPage) {
        let questionsData = GM_getValue("questionsData", {});
        if (questionsData[courseName]) {
            const questions = Object.keys(questionsData[courseName]);
            const startIndex = (currentPage - 1) * questionsPerPage;
            const endIndex = Math.min(startIndex + questionsPerPage, questions.length);

            for (let i = startIndex; i < endIndex; i++) {
                const question = questions[i];
                questionsData[courseName][question] = status;
            }
            GM_setValue("questionsData", questionsData);
        }
    }

    function refreshQuestionManagementModal(courseName, currentPage) {
        GM_setValue(`lastViewedPage_${courseName}`, currentPage);
        const scrollTop = document.querySelector('.question-management-modal')?.scrollTop || 0;
        const existingModal = document.querySelector('.question-management-modal');
        if (existingModal) {
            existingModal.remove();
        }
        createQuestionManagementModal();
        document.querySelector('.question-management-modal').scrollTop = scrollTop;
    }


    function displayCountdown(countdown) {
        let participatoryDiv = document.querySelector('.MyParticipatory-div');
        let qrCodeDiv = document.querySelector('.QRcode-div');
        let countdownElement = document.querySelector('.new-neumorphic-card');
        const linkClicked = GM_getValue("linkClicked", false);

        if (participatoryDiv && qrCodeDiv) {
            const { answeredCount, totalCount } = calculateAnsweredQuestions();

            if (!countdownElement) {
                countdownElement = createCountdownElement(countdown, linkClicked, answeredCount, totalCount);
                qrCodeDiv.parentNode.insertBefore(countdownElement, qrCodeDiv);
                setupEventListeners(countdownElement);
            } else {
                updateCountdownElement(countdownElement, countdown, answeredCount, totalCount);
            }
        }
    }

    function calculateAnsweredQuestions() {
        let answeredCount = 0;
        let totalCount = 0;
        const questionItems = document.querySelectorAll('.question-item');
        questionItems.forEach(item => {
            const spanElement = item.querySelector('.question-content span');
            const questionText = spanElement ? spanElement.title.trim() : '';
            if (questionText) {
                const courseNameElement = document.querySelector(".course-name");
                if (courseNameElement) {
                    const courseName = courseNameElement.innerText.trim();
                    const questionsData = GM_getValue("questionsData", {});
                    if (questionsData[courseName] && questionsData[courseName][questionText] === "已回答") {
                        answeredCount++;
                    }
                    totalCount++;
                }
            }
        });
        return { answeredCount, totalCount };
    }

    function createCountdownElement(countdown, linkClicked, answeredCount, totalCount) {
        const element = document.createElement('div');
        element.className = 'new-neumorphic-card';
        element.style = `
            padding: 15px;
            border-radius: 15px;
            background: linear-gradient(145deg, #ffffff, #e6e6e6);
            box-shadow: 6px 6px 12px #aaaaaa,
                        -6px -6px 12px #ffffff;
            display: inline-block;
            max-width: 300px;
        `;

        const modelDropdownHTML = createModelDropdownHTML();

        element.innerHTML = `
            <div class="Participatorytitle-div" style="white-space: normal; overflow-wrap: break-word; display: flex; flex-direction: column;">
                <div style="margin-bottom: 10px; font-weight: bold;">倒计时
                    <i class="el-tooltip item" tabindex="0"
                    style="margin-left: 4px; cursor: pointer; position: relative;" id="infoIcon">
                        ℹ️
                    </i>
                    <span style="margin-left: 10px; white-space: nowrap;">${countdown} 秒</span>
                    <button id="toggleCountdownButton" style="
                        margin-left: 10px;
                        padding: 10px 20px;
                        border: none;
                        border-radius: 10px;
                        background: linear-gradient(145deg, #4c88d6, #3b5998);
                        box-shadow: 2px 2px 4px #2f4686, -2px -2px 4px #507bcf;
                        color: white;
                        font-weight: bold;
                        cursor: pointer;
                    ">${countdownInterval ? '暂停' : '继续'}</button>
                </div>
                ${!linkClicked ? `<a href="#" id="purchaseLink" target="_blank" style="margin-top: 10px; text-decoration: none; color: #0066cc; position: relative;">注册(不可用)购买API</a>` : ''}
                <div style="display: flex; flex-direction: column; align-items: start; margin-top: 10px;">
                    <label style="margin-bottom: 15px; display: flex; align-items: center; white-space: nowrap;">API_KEY:
                        <input type="text" id="apiKeyInput" style="
                            margin-left: 10px;
                            width: 100%;
                            padding: 10px;
                            border-radius: 10px;
                            border: none;
                            outline: none;
                            background: linear-gradient(145deg, #e6e6e6, #ffffff);
                            box-shadow: inset 2px 2px 4px #cccccc,
                                        inset -2px -2px 4px #ffffff;
                        ">
                    </label>
                    <label style="margin-bottom: 15px; display: flex; align-items: center; white-space: nowrap;">API_URL:
                        <input type="text" id="apiUrlInput" style="
                            margin-left: 10px;
                            width: 100%;
                            padding: 10px;
                            border-radius: 10px;
                            border: none;
                            outline: none;
                            background: linear-gradient(145deg, #e6e6e6, #ffffff);
                            box-shadow: inset 2px 2px 4px #cccccc,
                                        inset -2px -2px 4px #ffffff;
                        ">
                    </label>
                    <label style="margin-bottom: 15px; display: flex; align-items: center; white-space: nowrap;">倒计时范围:
                        <input type="number" id="countdownMinInput" style="
                            margin-left: 10px;
                            width: 48%;
                            padding: 10px;
                            border-radius: 10px;
                            border: none;
                            outline: none;
                            background: linear-gradient(145deg, #e6e6e6, #ffffff);
                            box-shadow: inset 2px 2px 4px #cccccc,
                                        inset -2px -2px 4px #ffffff;"
                            placeholder="最小值">
                        <input type="number" id="countdownMaxInput" style="
                            margin-left: 10px;
                            width: 48%;
                            padding: 10px;
                            border-radius: 10px;
                            border: none;
                            outline: none;
                            background: linear-gradient(145deg, #e6e6e6, #ffffff);
                            box-shadow: inset 2px 2px 4px #cccccc,
                                        inset -2px -2px 4px #ffffff;"
                            placeholder="最大值">
                    </label>
                    ${modelDropdownHTML}
                </div>
                <div style="margin-top: 15px; text-align: right;">
                    <button id="manageButton" style="
                        margin-right: 10px;
                        padding: 10px 20px;
                        border: none;
                        border-radius: 10px;
                        background: linear-gradient(145deg, #4c88d6, #3b5998);
                        box-shadow: 2px 2px 4px #2f4686, -2px -2px 4px #507bcf;
                        color: white;
                        font-weight: bold;
                        cursor: pointer;
                    ">管理答题列表</button>
                    <button id="saveButton" style="
                        padding: 10px 20px;
                        border: none;
                        border-radius: 10px;
                        background: linear-gradient(145deg, #4c88d6, #3b5998);
                        box-shadow: 2px 2px 4px #2f4686, -2px -2px 4px #507bcf;
                        color: white;
                        font-weight: bold;
                        cursor: pointer;
                    ">保存</button>
                </div>
                <div style="margin-top: 20px; text-align: center; font-size: 12px; color: #666;">
                    <span>当前版本:1.0.8(最新:</span><span id="latestVersion">加载中...</span><span>)</span>
                </div>
            </div>
        `;

        return element;
    }

    function createModelDropdownHTML() {
        const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
        let customModels = GM_getValue("customModels", []);
        let allModels = [...defaultModels, ...customModels];
        let selectedModel = GM_getValue("aimodel", "glm-4-flash");

        return `
            <label style="display: flex; align-items: center; white-space: nowrap; margin-bottom: 15px;">模型:
                <div class="custom-dropdown" style="position: relative; margin-left: 10px; width: 100%;">
                    <div class="dropdown-selected" style="
                        padding: 10px;
                        border-radius: 10px;
                        background: linear-gradient(145deg, #e6e6e6, #ffffff);
                        box-shadow: inset 4px 4px 8px #cccccc,
                                    inset -4px -4px 8px #ffffff;
                        cursor: pointer;
                        width: 100%;
                        box-sizing: border-box;
                        text-align: left;
                    ">${selectedModel}</div>
                    <div class="dropdown-options" style="
                        position: absolute;
                        top: 100%;
                        left: 0;
                        background: linear-gradient(145deg, #ffffff, #e6e6e6);
                        border-radius: 10px;
                        box-shadow: 4px 4px 8px #aaaaaa,
                                    -4px -4px 8px #ffffff;
                        z-index: 1;
                        display: none;
                        overflow: hidden;
                        min-width: 200px;
                    ">
                        ${allModels.map(model => `
                            <div class="dropdown-item" data-model="${model}" style="
                                padding: 10px;
                                cursor: pointer;
                                ${defaultModels.includes(model) ? '' : 'display: flex; justify-content: space-between; align-items: center;'}
                                background: linear-gradient(145deg, #ffffff, #e6e6e6);
                                border-bottom: 1px solid #e0e0e0;
                            ">
                                ${model}
                                ${defaultModels.includes(model) ? '' : `<span class="remove-model" data-model="${model}" style="cursor: pointer; color: red;">×</span>`}
                            </div>
                        `).join('')}
                        <div class="add-model-container" style="padding: 10px; display: flex; align-items: center;">
                            <input type="text" id="newModelInput" placeholder="输入模型名称" style="
                                padding: 8px;
                                border-radius: 5px;
                                border: none;
                                background: linear-gradient(145deg, #e6e6e6, #ffffff);
                                box-shadow: inset 2px 2px 4px #cccccc,
                                            inset -2px -2px 4px #ffffff;
                                width: 70%;
                                box-sizing: border-box;
                                height: 32px;
                            ">
                            <button id="saveModelButton" style="
                                border: none;
                                border-radius: 8px;
                                background: linear-gradient(145deg, #4c88d6, #3b5998);
                                box-shadow: 2px 2px 4px #2f4686,
                                            -2px -2px 4px #507bcf;
                                color: white;
                                cursor: pointer;
                                width: 25%;
                                text-align: center;
                                margin-left: 5px;
                                height: 32px;
                                display: flex;
                                justify-content: center;
                                align-items: center;
                            ">保存</button>
                        </div>
                    </div>
                </div>
            </label>
            <div class="answer-counter" style="
                margin-top: 10px;
                padding: 10px;
                border-radius: 10px;
                background: linear-gradient(145deg, #e6e6e6, #ffffff);
                box-shadow: inset 4px 4px 8px #cccccc,
                            inset -4px -4px 8px #ffffff;
                text-align: center;
                font-weight: bold;
                color: #4B5563;
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
            ">
                <div style="display: flex; align-items: center; justify-content: space-between;">
                    <div style="display: flex; flex-direction: column; border: 1px solid #ccc; padding: 5px; border-radius: 5px;">
                        <div>已答: ${0}</div>
                        <div>总数: ${0}</div>
                    </div>
                    <div style="display: flex; flex-direction: row; align-items: center;">
                        <button id="jumpToUnansweredButton" style="
                            margin-left: 10px;
                            margin-bottom: 5px;
                            padding: 5px 10px;
                            border: none;
                            border-radius: 8px;
                            background: linear-gradient(145deg, #4c88d6, #3b5998);
                            box-shadow: 2px 2px 4px #2f4686,
                                        -2px -2px 4px #507bcf;
                            color: white;
                            cursor: pointer;
                            white-space: normal;
                            line-height: 1.2;
                            text-align: center;
                            width: 60px;
                            height: 100%;
                        ">
                            跳转<br>未答
                        </button>
                        <button id="autoScrollButton" style="
                            margin-left: 10px;
                            padding: 5px 10px;
                            border: none;
                            border-radius: 8px;
                            background: linear-gradient(145deg, #4c88d6, #3b5998);
                            box-shadow: 2px 2px 4px #2f4686,
                                        -2px -2px 4px #507bcf;
                            color: white;
                            cursor: pointer;
                            white-space: normal;
                            line-height: 1.2;
                            text-align: center;
                            width: 60px;
                            height: 100%;
                        ">
                            自动<br>滚动
                        </button>
                    </div>
                </div>
            </div>
        `;
    }



    function updateCountdownElement(countdownElement, countdown, answeredCount, totalCount) {
        countdownElement.querySelector('.Participatorytitle-div div span').innerText = `${countdown} 秒`;
        const toggleButton = countdownElement.querySelector('#toggleCountdownButton');
        toggleButton.textContent = countdownInterval ? "暂停" : "继续";
        updateAnswerCounter(countdownElement, answeredCount, totalCount);
    }

    function updateAnswerCounter(countdownElement, answeredCount, totalCount) {
        const counterElement = countdownElement.querySelector('.answer-counter');
        const isAutoScrolling = GM_getValue("isAutoScrolling", false);
        if (counterElement) {
            counterElement.innerHTML = `
                <div style="display: flex; align-items: center; justify-content: space-between;">
                    <div style="display: flex; flex-direction: column; border: 1px solid #ccc; padding: 5px; border-radius: 5px;">
                        <div>已答: ${answeredCount}</div>
                        <div>总数: ${totalCount}</div>
                    </div>
                    <div style="display: flex; flex-direction: row; align-items: center;">
                        <button id="jumpToUnansweredButton" style="
                            margin-left: 10px;
                            margin-bottom: 5px;
                            padding: 5px 10px;
                            border: none;
                            border-radius: 8px;
                            background: linear-gradient(145deg, #4c88d6, #3b5998);
                            box-shadow: 2px 2px 4px #2f4686,
                                        -2px -2px 4px #507bcf;
                            color: white;
                            cursor: pointer;
                            white-space: normal;
                            line-height: 1.2;
                            text-align: center;
                            width: 60px;
                            height: 100%;
                        ">
                            跳转<br>未答
                        </button>
                        <button id="autoScrollButton" style="
                            margin-left: 10px;
                            padding: 5px 10px;
                            border: none;
                            border-radius: 8px;
                            background: linear-gradient(145deg, #4c88d6, #3b5998);
                            box-shadow: 2px 2px 4px #2f4686,
                                        -2px -2px 4px #507bcf;
                            color: white;
                            cursor: pointer;
                            white-space: normal;
                            line-height: 1.2;
                            text-align: center;
                            width: 60px;
                            height: 100%;
                        ">
                            ${isAutoScrolling ? '关闭<br>滚动' : '自动<br>滚动'}
                        </button>
                    </div>
                </div>
            `;
            const jumpButton = counterElement.querySelector('#jumpToUnansweredButton');
            setupJumpButton(jumpButton);
            const autoScrollButton = counterElement.querySelector('#autoScrollButton');
            setupAutoScrollButton(autoScrollButton);
        }
    }

    function setupAutoScrollButton(autoScrollButton) {
        autoScrollButton.addEventListener('click', () => {
            const isAutoScrolling = GM_getValue("isAutoScrolling", false);
            if (isAutoScrolling) {
                GM_setValue("isAutoScrolling", false);
                autoScrollButton.innerHTML = '自动<br>滚动';
                showAlert("自动滚动已关闭");
            } else {
                GM_setValue("isAutoScrolling", true);
                autoScrollButton.innerHTML = '关闭<br>滚动';
                showAlert("自动滚动已开启,将持续滚动未答题目到最上方");
                scrollToLastUnansweredQuestion();
            }
        });
        setupButtonShadowEffects(autoScrollButton);
    }




    function setupEventListeners(countdownElement) {
        const dropdown = countdownElement.querySelector('.custom-dropdown');
        const dropdownSelected = dropdown.querySelector('.dropdown-selected');
        const dropdownOptions = dropdown.querySelector('.dropdown-options');

        dropdownSelected.addEventListener('click', () => {
            dropdownOptions.style.display = dropdownOptions.style.display === 'block' ? 'none' : 'block';
        });

        dropdownOptions.addEventListener('click', (event) => {
            if (event.target.classList.contains('dropdown-item')) {
                const model = event.target.dataset.model;
                GM_setValue("aimodel", model);
                const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
                let customModels = GM_getValue("customModels", []);
                let allModels = [...defaultModels, ...customModels];
                let selectedModel = model;
                dropdownSelected.textContent = model;
                dropdownOptions.style.display = 'none';
            } else if (event.target.classList.contains('remove-model')) {
                const modelToRemove = event.target.dataset.model;
                let customModels = GM_getValue("customModels", []);
                customModels = customModels.filter(model => model !== modelToRemove);
                GM_setValue("customModels", customModels);
                const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
                let allModels = [...defaultModels, ...customModels];
                renderDropdownItems(dropdownOptions, allModels, defaultModels, dropdownSelected);
            }
        });


        const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
        let customModels = GM_getValue("customModels", []);
        let allModels = [...defaultModels, ...customModels];
        renderDropdownItems(dropdownOptions, allModels, defaultModels, dropdownSelected);

        document.addEventListener('click', (event) => {
            if (!dropdown.contains(event.target)) {
                dropdownOptions.style.display = 'none';
            }
        });

        document.getElementById("manageButton").addEventListener('click', createQuestionManagementModal);
        document.getElementById("apiKeyInput").value = GM_getValue("API_KEY", defaultAPIKey);
        document.getElementById("apiUrlInput").value = GM_getValue("API_URL", defaultAPIUrl);
        document.getElementById("countdownMinInput").value = GM_getValue("countdownMin", 20);
        document.getElementById("countdownMaxInput").value = GM_getValue("countdownMax", 30);

        document.getElementById("saveButton").addEventListener('click', function () {
            showAlert("保存参数成功");
            GM_setValue("API_KEY", document.getElementById("apiKeyInput").value);
            GM_setValue("API_URL", document.getElementById("apiUrlInput").value);
            GM_setValue("countdownMin", parseInt(document.getElementById("countdownMinInput").value));
            GM_setValue("countdownMax", parseInt(document.getElementById("countdownMaxInput").value));

            const newModel = dropdownOptions.querySelector('#newModelInput').value.trim();
            if (newModel && !getAllModels().includes(newModel)) {
                let customModels = GM_getValue("customModels", []);
                customModels.push(newModel);
                GM_setValue("customModels", customModels);
                const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
                let allModels = [...defaultModels, ...customModels];
                renderDropdownItems(dropdownOptions, allModels, defaultModels, dropdownSelected);
            }
            const selectedModel = dropdownSelected.textContent;
            GM_setValue("aimodel", selectedModel);
            alert('设置已保存');
        });

        const toggleButton = document.getElementById("toggleCountdownButton");
        setupButtonShadowEffects(toggleButton);
        toggleButton.addEventListener('click', () => {
            if (countdownInterval) {
                clearInterval(countdownInterval);
                countdownInterval = null;
                toggleButton.textContent = "继续";
            } else {
                const savedCountdown = GM_getValue("currentCountdown", GM_getValue("countdownTime", initialCountdownTime));
                startCountdown(savedCountdown);
                toggleButton.textContent = "暂停";
            }
        });

        const saveButton = document.getElementById("saveButton");
        setupButtonShadowEffects(saveButton);

        const manageButton = document.getElementById("manageButton");
        setupButtonShadowEffects(manageButton);

        const jumpButton = document.getElementById("jumpToUnansweredButton");
        setupJumpButton(jumpButton);

        checkForLatestVersion();

        setupPurchaseLink(countdownElement);

        setupInfoIcon(countdownElement);
    }


    function setupPurchaseLink(countdownElement) {
        const linkClicked = GM_getValue("linkClicked", false);
        if (!linkClicked) {
            const purchaseLink = countdownElement.querySelector("#purchaseLink");
            purchaseLink.addEventListener('mouseenter', function (event) {
                const tooltipText = "非作者运营勿找,点击后刷新不再显示";
                const tooltip = document.createElement('div');
                tooltip.id = 'purchaseLinkTooltip';
                tooltip.style = `
                    position: absolute;
                    top: 100%;
                    left: 0;
                    background: #333;
                    color: #fff;
                    padding: 8px;
                    border-radius: 5px;
                    font-size: 12px;
                    white-space: pre-wrap;
                    width: 200px;
                    height: auto;
                    z-index: 1000;
                    box-sizing: border-box;
                    overflow: hidden;
                `;
                tooltip.textContent = tooltipText;
                purchaseLink.appendChild(tooltip);
            });

            purchaseLink.addEventListener('mouseleave', function (event) {
                const tooltip = document.getElementById('purchaseLinkTooltip');
                if (tooltip) {
                    purchaseLink.removeChild(tooltip);
                }
            });

            purchaseLink.addEventListener('click', function (event) {
                event.preventDefault();
                GM_setValue("linkClicked", true);
                window.open("https://api.v3.cm/register?aff=25L7", "_blank");
            });
        }
    }

    function setupInfoIcon(countdownElement) {
        const infoIcon = countdownElement.querySelector("#infoIcon");
        infoIcon.addEventListener("mouseenter", function () {
            const tooltip = document.createElement('div');
            tooltip.id = 'tooltip';
            tooltip.style = `
                position: absolute;
                top: 25px;
                left: 0;
                background: #333;
                color: #fff;
                padding: 8px;
                border-radius: 5px;
                font-size: 12px;
                white-space: pre-wrap;
                width: 200px;
                height: auto;
                z-index: 1000;
                box-sizing: border-box;
                overflow: hidden;
            `;
            tooltip.innerText = `1.由于答题太快会导致被禁言,故倒计时不要太低。\n2.作者提供的API仅供测试,不要用于其他用途。\n3.被屏蔽的问题会显示下划线,未回答问题显示红色,回答过显示黑色。\n4.大部分课程回答50条,问30条问题即可满分。不要一天刷几百条。`;
            infoIcon.appendChild(tooltip);
        });

        infoIcon.addEventListener("mouseleave", function () {
            const tooltip = document.getElementById("tooltip");
            if (tooltip) tooltip.remove();
        });
    }

    function setupJumpButton(jumpButton) {
        jumpButton.addEventListener('click', () => {
            scrollToLastUnansweredQuestion();
        });
        setupButtonShadowEffects(jumpButton);
    }

    function setupButtonShadowEffects(button) {
        button.addEventListener('mousedown', () => {
            button.style.boxShadow = 'inset 2px 2px 4px #2f4686, inset -2px -2px 4px #507bcf';
        });
        button.addEventListener('mouseup', () => {
            button.style.boxShadow = '2px 2px 4px #2f4686, -2px -2px 4px #507bcf';
        });
        button.addEventListener('mouseleave', () => {
            button.style.boxShadow = '2px 2px 4px #2f4686, -2px -2px 4px #507bcf';
        });
    }

    function renderDropdownItems(dropdownOptions, allModels, defaultModels, dropdownSelected) {
        dropdownOptions.innerHTML = `
            ${allModels.map(model => `
                <div class="dropdown-item" data-model="${model}" style="
                    padding: 10px;
                    cursor: pointer;
                    ${defaultModels.includes(model) ? '' : 'display: flex; justify-content: space-between; align-items: center;'}
                    background: linear-gradient(145deg, #ffffff, #e6e6e6);
                    border-bottom: 1px solid #e0e0e0;
                ">
                    ${model}
                    ${defaultModels.includes(model) ? '' : `<span class="remove-model" data-model="${model}" style="cursor: pointer; color: red;">×</span>`}
                </div>
            `).join('')}
             <div class="add-model-container" style="padding: 10px; display: flex; align-items: center;">
                <input type="text" id="newModelInput" placeholder="输入模型名称" style="
                    padding: 8px;
                    border-radius: 5px;
                    border: none;
                    background: linear-gradient(145deg, #e6e6e6, #ffffff);
                    box-shadow: inset 2px 2px 4px #cccccc,
                                inset -2px -2px 4px #ffffff;
                    width: 70%;
                    box-sizing: border-box;
                    height: 32px;
                ">
                <button id="saveModelButton" style="
                    border: none;
                    border-radius: 8px;
                    background: linear-gradient(145deg, #4c88d6, #3b5998);
                    box-shadow: 2px 2px 4px #2f4686,
                                -2px -2px 4px #507bcf;
                    color: white;
                    cursor: pointer;
                    width: 25%;
                    text-align: center;
                    margin-left: 5px;
                    height: 32px;
                ">保存</button>
            </div>
        `;

        const newModelInput = dropdownOptions.querySelector('#newModelInput');
        const saveModelButton = dropdownOptions.querySelector('#saveModelButton');

        saveModelButton.addEventListener('click', () => {
            const newModel = newModelInput.value.trim();
            if (newModel && !getAllModels().includes(newModel)) {
                let customModels = GM_getValue("customModels", []);
                customModels.push(newModel);
                GM_setValue("customModels", customModels);
                const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
                let allModels = [...defaultModels, ...customModels];
                renderDropdownItems(dropdownOptions, allModels, defaultModels, dropdownSelected);
            }
        });

        dropdownOptions.addEventListener('click', (event) => {
            if (event.target.classList.contains('dropdown-item')) {
                const model = event.target.dataset.model;
                GM_setValue("aimodel", model);
                const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
                let customModels = GM_getValue("customModels", []);
                let allModels = [...defaultModels, ...customModels];
                let selectedModel = model;
                dropdownSelected.textContent = model;
                dropdownOptions.style.display = 'none';
            } else if (event.target.classList.contains('remove-model')) {
                const modelToRemove = event.target.dataset.model;
                let customModels = GM_getValue("customModels", []);
                customModels = customModels.filter(model => model !== modelToRemove);
                GM_setValue("customModels", customModels);
                const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
                let allModels = [...defaultModels, ...customModels];
                renderDropdownItems(dropdownOptions, allModels, defaultModels, dropdownSelected);
            }
        });
    }



    function getAllModels() {
        const defaultModels = ["gemini-1.5-flash", "glm-4-flash"];
        let customModels = GM_getValue("customModels", []);
        return [...defaultModels, ...customModels];
    }



    let scrolling = false;

    function scrollToLastUnansweredQuestion() {
        if (scrolling) {
            console.log("正在滚动,请稍后...");
            showAlert("正在滚动,请稍后...");
            return;
        }

        scrolling = true;

        let scrollContainer = document.querySelector('.el-scrollbar__wrap');
        if (!scrollContainer) {
            scrolling = false;
            return;
        }

        const questionItems = document.querySelectorAll('.question-item');
        const courseNameElement = document.querySelector(".course-name");
        const courseName = courseNameElement ? courseNameElement.innerText.trim() : '';
        const questionsData = GM_getValue("questionsData", {});

        function performScroll(targetElement) {
            const targetOffsetTop = targetElement.offsetTop;
            scrollContainer.scrollTo({
                top: targetOffsetTop,
                behavior: 'smooth'
            });

            const checkScrollInterval = setInterval(() => {
                const currentScrollTop = scrollContainer.scrollTop;
                const offsetDifference = Math.abs(currentScrollTop - targetOffsetTop);

                if (offsetDifference <= 5) {
                    console.log("滚动完成,位于目标位置!");
                    clearInterval(checkScrollInterval);
                    scrolling = false;
                } else {
                    console.log("滚动未完全到达目标位置,继续等待...");
                }
            }, 200);

            setTimeout(() => {
                clearInterval(checkScrollInterval);
                scrolling = false;
                console.log("滚动超时,停止检查。");
            }, 5000);
        }

        for (let i = 0; i < questionItems.length; i++) {
            const item = questionItems[i];
            const spanElement = item.querySelector('.question-content span');
            const questionText = spanElement ? spanElement.title.trim() : '';

            if (questionText && courseName && questionsData[courseName]) {
                const status = questionsData[courseName][questionText] || "未回答";

                const isExcluded = spanElement.style.textDecoration === 'line-through';

                if (status === "未回答" && !isExcluded) {
                    console.log(`找到第一个未回答且未排除的问题,索引: ${i},问题内容: ${questionText}`);
                    performScroll(item);
                    return;
                }
            }
        }


        console.log("没有找到未回答且未排除的问题,滚动到最底部...");

        scrollContainer.scrollTo({
            top: scrollContainer.scrollHeight,
            behavior: 'smooth'
        });

        const scrollEvent = new Event('scroll', { bubbles: true });
        scrollContainer.dispatchEvent(scrollEvent);

        let lastQuestionCount = questionItems.length;
        const checkNewQuestions = setInterval(() => {
            const newQuestionItems = document.querySelectorAll('.question-item');
            if (newQuestionItems.length > lastQuestionCount) {
                console.log("检测到新问题,重新查找未回答问题...");
                clearInterval(checkNewQuestions);
                scrolling = false;
                scrollToLastUnansweredQuestion();
            }
        }, 1000);

        setTimeout(() => {
            clearInterval(checkNewQuestions);
            scrolling = false;
            console.log("未检测到新问题,停止监控。");
            showAlert("未检测到新问题,请稍后重试。");
        }, 10000);
    }




    function showAlert(message) {

        console.log('Alert:', message);

        if (document.hidden) {
            return;
        }

        const stackId = 'alert-stack';
        let alertStack = document.getElementById(stackId);

        if (!alertStack) {
            alertStack = document.createElement('div');
            alertStack.id = stackId;
            Object.assign(alertStack.style, {
                position: 'fixed',
                bottom: '10px',
                left: '50%',
                transform: 'translateX(-50%)',
                zIndex: '9999999',
                display: 'flex',
                flexDirection: 'column-reverse',
                gap: '10px'
            });
            document.body.appendChild(alertStack);
        }

        const alertBox = document.createElement('div');
        Object.assign(alertBox.style, {
            backgroundColor: '#E0E5EC',
            padding: '20px',
            borderRadius: '12px',
            boxShadow: '10px 10px 15px #AEBEC7, -5px -5px 10px #FFFFFF',
            opacity: '0',
            transition: 'opacity 0.3s',
            position: 'relative',
            width: 'fit-content'
        });

        const alertText = document.createElement('div');
        Object.assign(alertText.style, {
            margin: '0',
            fontSize: '16px',
            fontWeight: 'bold',
            textAlign: 'center',
            textShadow: '2px 2px 3px rgba(0, 0, 0, 0.2)',
            color: '#4B5563'
        });
        alertText.innerText = message;

        alertBox.appendChild(alertText);
        alertStack.appendChild(alertBox);

        requestAnimationFrame(() => {
            alertBox.style.opacity = '1';
        });

        setTimeout(() => {
            alertBox.style.opacity = '0';
            setTimeout(() => {
                if (alertStack.contains(alertBox)) {
                    alertStack.removeChild(alertBox);
                }
                if (alertStack.childNodes.length === 0 && document.body.contains(alertStack)) {
                    document.body.removeChild(alertStack);
                }
            }, 300);
        }, 2500);
    }

    function checkForLatestVersion() {
        const lastChecked = GM_getValue("lastVersionCheck", 0);
        const currentTime = new Date().getTime();
        const oneHourMillis = 60 * 60 * 1000;
        let retryAttempts = 0;
        const maxRetries = 5;
        const retryDelay = 1000;

        function requestVersion() {
            GM_xmlhttpRequest({
                method: "GET",
                url: "https://update.greasyfork.dpdns.org/scripts/519662/知到智慧树全自动刷问答平时分助手.meta.js",
                onload: function (response) {
                    const match = response.responseText.match(/@version\s+([\d.]+)/);
                    if (match) {
                        const latestVersion = match[1];
                        GM_setValue("lastVersionCheck", currentTime);
                        GM_setValue("lastCheckedVersion", latestVersion);
                        document.getElementById("latestVersion").innerText = latestVersion;
                    } else {
                        if (retryAttempts < maxRetries) {
                            retryAttempts++;
                            setTimeout(requestVersion, retryDelay);
                        } else {
                            document.getElementById("latestVersion").innerText = "获取失败";
                        }
                    }
                }
            });
        }

        if (currentTime - lastChecked > oneHourMillis) {
            requestVersion();
        } else {
            const lastCheckedVersion = GM_getValue("lastCheckedVersion", "未检测");
            document.getElementById("latestVersion").innerText = lastCheckedVersion;
        }
    }


    function startCountdown(restartCount = null) {
        if (countdownInterval) {
            clearInterval(countdownInterval);
        }

        const minTime = GM_getValue("countdownMin", 20);
        const maxTime = GM_getValue("countdownMax", 30);
        let countdown = restartCount !== null
            ? restartCount
            : Math.floor(Math.random() * ((maxTime + 1) - minTime)) + minTime;
        GM_setValue("countdownTime", countdown);
        displayCountdown(countdown);

        countdownInterval = setInterval(() => {
            countdown--;
            displayCountdown(countdown);
            GM_setValue("currentCountdown", countdown);
            if (countdown <= 0) {
                clearInterval(countdownInterval);
                countdownInterval = null;
                clickTheUnansweredLink();
                console.log(`${GM_getValue("countdownTime", initialCountdownTime)}秒已过,点击动作触发。`);
                startCountdown();
            }
        }, 1000);
    }

    function clickTheUnansweredLink() {
        const questionItems = document.querySelectorAll('.question-item');
        const unansweredQuestions = Array.from(questionItems).filter(item => {
            const spanElement = item.querySelector('.question-content span');
            const questionText = spanElement ? spanElement.title.trim() : '';
            const courseNameElement = document.querySelector(".course-name");
            const courseName = courseNameElement ? courseNameElement.innerText.trim() : '';
            const status = GM_getValue("questionsData", {})[courseName]?.[questionText];
            return status === "未回答";
        });

        if (unansweredQuestions.length > 0) {
            const firstUnansweredQuestionSpan = unansweredQuestions[0].querySelector('.question-content span');

            if (firstUnansweredQuestionSpan) {
                firstUnansweredQuestionSpan.click();
                console.log(`已点击第一个未回答的问题: ${firstUnansweredQuestionSpan.title}`);
            } else {
                console.log("未找到未回答问题的链接元素");
            }
        } else {
            console.log("目前无未回答问题.");
        }
    }

    function checkHomeRegex() {
        const homePattern = /^https:\/\/qah5\.zhihuishu\.com\/qa\.html#\/web\/home/;
        const currentURL = window.location.href;

        if (homePattern.test(currentURL)) {
            console.log("正在获取问题列表...");

            const items = document.querySelectorAll(".question-item .question-content span");
            const courseNameElement = document.querySelector(".course-name");

            if (courseNameElement && items.length) {
                const courseName = courseNameElement.innerText.trim();
                let questionsData = GM_getValue("questionsData", {});

                if (!questionsData[courseName]) {
                    questionsData[courseName] = {};
                }

                items.forEach(item => {
                    const questionTitle = item.getAttribute("title").trim();
                    if (!questionsData[courseName][questionTitle]) {
                        questionsData[courseName][questionTitle] = "未回答";
                    }
                });

                GM_setValue("questionsData", questionsData);
                console.log("问题列表已更新:", questionsData);
            }
        }
    }

    function markQuestionAsAnswered(questionText) {
        const courseNameElement = document.querySelector(".course-name");
        if (courseNameElement) {
            const courseName = courseNameElement.innerText.trim();
            let questionsData = GM_getValue("questionsData", {});

            if (questionsData[courseName] && questionsData[courseName][questionText] === "未回答") {
                questionsData[courseName][questionText] = "已回答";
                GM_setValue("questionsData", questionsData);
                console.log(`问题“${questionText}”状态已更新为“已回答”。`);
            }
        }
    }

    function waitForAnswerButton() {

        const answerButton = document.querySelector("div.my-answer-btn.ZHIHUISHU_QZMD.tool-show span");

        if (answerButton && answerButton.textContent.trim() === "我来回答") {
            console.log("找到‘我来回答’按钮,点击...");
            answerButton.click();
            noAnswerButtonCount = 0;

            setTimeout(() => {
                const inputElement = document.querySelector("textarea");
                if (inputElement) {
                    console.log("文本框已出现,准备回答问题...");
                    startChecking();
                } else {
                    console.log("文本框未出现,继续检测‘我来回答’按钮...");
                    waitForAnswerButton();
                }
            }, intervalTime);
        } else {
            checkHomeRegex();

            console.log("未找到‘我来回答’按钮或按钮状态不符合条件,稍后重试...");
            noAnswerButtonCount++;

            const currentURL = window.location.href;
            const pattern = /^https:\/\/qah5\.zhihuishu\.com\/qa\.html#\/web\/questionDetail\/\d+/;

            if (noAnswerButtonCount > 1) {
                if (pattern.test(currentURL)) {
                    const questionElement = document.querySelector(".question-content span");
                    const questionText = questionElement ? questionElement.innerText.trim() : '';
                    if (questionText) {
                        markQuestionAsAnswered(questionText);
                    }
                    console.log("当前页面符合特定模式,关闭网页...");
                    showAlert("答题完毕,准备关闭网页")
                    window.close();
                } else {
                    console.log("当前页面不符合关闭条件,继续检测...");
                    noAnswerButtonCount = 0;
                }
            } else {
                setTimeout(waitForAnswerButton, intervalTime);
            }
        }
    }

    function addQuestionStatus() {
        const questionItems = document.querySelectorAll('.question-item');
        questionItems.forEach(item => {
            const spanElement = item.querySelector('.question-content span');
            const questionText = spanElement ? spanElement.title.trim() : '';
            if (questionText) {
                const courseNameElement = document.querySelector(".course-name");
                if (courseNameElement) {
                    const courseName = courseNameElement.innerText.trim();
                    let status = "未获取";
                    const questionsData = GM_getValue("questionsData", {});
                    if (questionsData[courseName] && questionsData[courseName][questionText]) {
                        status = questionsData[courseName][questionText];
                    }

                    const invalidPatterns = [
                        /什么是.+/, /.+是什么/, /.+是什么意思/, /.+的含义/, /指什么/, /是不是/, /对不对/, /好不好/, /好吗/, /近吗/, /远吗/, /对吗/,
                        /可以吗/, /可以.+吗/, /是否可以/, /有没有/, /能不能/, /应该.+吗/,
                        /是否应该/, /必须.+吗/, /是否必须/, /需要.+吗/, /是否需要/, /一定.+吗/,
                        /是否一定/, /是否合理/, /是否相同/, /是否不同/,
                        /有意义吗/, /意义大吗/, /喜欢.+吗/, /如何翻译.+/
                    ];

                    const isInvalidQuestion = invalidPatterns.some(pattern => pattern.test(questionText));

                    if (isInvalidQuestion) {
                        spanElement.style.textDecoration = 'line-through';
                        status = "已回答";
                        questionsData[courseName] = questionsData[courseName] || {};
                        questionsData[courseName][questionText] = status;
                        GM_setValue("questionsData", questionsData);
                    } else if (status === "未回答") {
                        spanElement.style.color = 'red';
                    } else if (status === "已回答") {
                        spanElement.style.color = 'green';
                    }
                }
            }
        });
    }


    function startChecking() {
        setInterval(() => {
            console.log("检查问题和输入框是否存在...");

            const questionElement = document.querySelector(".question-content span");
            if (!questionElement) {
                console.log("未找到问题元素。");
                return;
            }

            const questionText = questionElement.innerText.trim();
            if (!questionText) {
                console.log("问题内容为空。");
                return;
            }

            const inputElement = document.querySelector("textarea");
            if (!inputElement) {
                console.log("未找到输入框元素。");
                return;
            }

            addQuestionStatus();

            const answerButton = document.querySelector("div.my-answer-btn.ZHIHUISHU_QZMD.tool-show span");
            const modalExists = document.querySelector(".yidun_modal");
            if (modalExists) {
                console.log("检测到二维码,需要手动验证。10秒后关闭窗口。");
                GM_notification("检测到二维码,请手动验证。10秒后关闭窗口。", "安全验证");
                setTimeout(() => {
                    window.close();
                }, 10000);
                return;
            }

            if (!answerButton || answerButton.textContent.trim() !== "我来回答") {
                const currentURL = window.location.href;
                const pattern = /^https:\/\/qah5\.zhihuishu\.com\/qa\.html#\/web\/questionDetail/;
                if (pattern.test(currentURL)) {
                    console.log("未找到'我来回答'按钮且当前页面符合特定模式,关闭当前窗口。");
                    markQuestionAsAnswered(questionText);
                    window.close();
                } else {
                    console.log("未找到'我来回答'按钮且当前页面不符合特定模式,停止回答逻辑。");
                }
                return;
            }

            if (inputElement.value.trim() !== "") {
                console.log("输入框中已有数据,检查是否需要点击立即发布...");
                startPublishChecking();
                return;
            }

            console.log("找到问题并准备回答:", questionText);

            if (!requestLock) {
                requestLock = true;
                answerQuestion(questionText, inputElement);
                showAlert("正在回答问题")
            } else {
                console.log("请求进行中,跳过此次回答逻辑。");
                showAlert("正在回答问题");
            }


        }, intervalTime);
    }
    function checkAndAddGenerateQuestionButton() {
        const dialog = document.querySelector('div[role="dialog"][aria-modal="true"][aria-label="提问"].el-dialog');
        if (dialog) {
            const publishButton = dialog.querySelector('.dialog-bottom .up-btn');
            if (publishButton) {
                if (!dialog.querySelector('#generateQuestionButton')) {
                    const generateQuestionButton = document.createElement('div');
                    generateQuestionButton.id = 'generateQuestionButton';
                    generateQuestionButton.textContent = '生成问题';

                    generateQuestionButton.style.cssText = `
                        display: inline-block;
                        margin-right: 40px; /* 添加 40px 的右侧外边距 */
                        padding: 10px 20px;
                        border: none;
                        border-radius: 10px;
                        background: linear-gradient(145deg, #4c88d6, #3b5998);
                        box-shadow: 2px 2px 4px #2f4686, -2px -2px 4px #507bcf;
                        color: white;
                        font-weight: bold;
                        cursor: pointer;
                    `;

                    generateQuestionButton.addEventListener('click', () => {
                        generateQuestion(dialog);
                    });


                    generateQuestionButton.addEventListener('mousedown', () => {
                        generateQuestionButton.style.boxShadow = 'inset 2px 2px 4px #2f4686, inset -2px -2px 4px #507bcf';
                    });
                    generateQuestionButton.addEventListener('mouseup', () => {
                        generateQuestionButton.style.boxShadow = '2px 2px 4px #2f4686, -2px -2px 4px #507bcf';
                    });
                    generateQuestionButton.addEventListener('mouseleave', () => {
                        generateQuestionButton.style.boxShadow = '2px 2px 4px #2f4686, -2px -2px 4px #507bcf';
                    });


                    const dialogBottom = publishButton.parentNode;
                    dialogBottom.style.display = 'flex';
                    dialogBottom.style.justifyContent = 'flex-end';


                    dialogBottom.insertBefore(generateQuestionButton, publishButton);
                }
            }
        }
    }



    const observer = new MutationObserver(checkAndAddGenerateQuestionButton);


    observer.observe(document.body, {
        childList: true,
        subtree: true,
        attributes: false,
        characterData: false
    });
    function generateQuestion(dialog) {
        const courseNameElement = document.querySelector(".course-name");
        const courseName = courseNameElement ? courseNameElement.innerText.trim() : '当前课程';

        const inputElement = dialog.querySelector('textarea');

        if (!inputElement) {
            showAlert('未找到提问输入框!');
            return;
        }

        const questionElements = document.querySelectorAll(".question-content.ZHIHUISHU_QZMD span");
        const recentQuestions = Array.from(questionElements)
            .map((element, index) => `${index + 1}. ${element.textContent.trim()}`)
            .slice(0, 20)
            .join("\n");

        const prompt = `针对${courseName},请生成一个与以下30个问题**完全不同**的开放式问题,字数限制在50字以内。务必不同句式

                                    **以下是最近别人发送的1o个问题,请**务必避免句式重复或者句式相似**:
                                    ${recentQuestions} \n不要一直用"如何怎么样"的句式,你需要随便地提问,只要关于这个主题就行,发散思维。只回复你想到的问题即可,只需要回复一个问题即可,不要换行。`;

        console.log(prompt);

        showAlert(`正在生成问题...`)
        GM_xmlhttpRequest({
            method: "POST",
            url: GM_getValue("API_URL", defaultAPIUrl),
            headers: {
                "Content-Type": "application/json",
                "Authorization": `Bearer ${GM_getValue("API_KEY", defaultAPIKey)}`
            },
            data: JSON.stringify({
                model: "gemini-1.5-flash",
                messages: [
                    {
                        role: "user",
                        content: prompt
                    }
                ],
                max_tokens: 10240,
                temperature: 1,
                top_p: 1,
                stream: false
            }),
            onload: function (response) {
                console.log("请求成功:", response.responseText);
                if (response.status === 200) {
                    const jsonResponse = JSON.parse(response.responseText);
                    const generatedQuestion = jsonResponse.choices[0].message.content.trim();

                    inputElement.value = generatedQuestion;
                    inputElement.dispatchEvent(new Event('input', { 'bubbles': true }));

                    showAlert('问题已生成并填充到提问框!');
                } else {
                    console.error("API 请求失败,状态码:", response.status);
                    showAlert("问题生成失败,请检查API设置或稍后重试。");
                }
            },
            onerror: function () {
                console.error("API 请求出错。");
                showAlert("问题生成出错,请检查网络连接。");
            }
        });
    }


    function startPublishChecking() {
        console.log("检查是否需要点击立即发布按钮...");
        const publishButton = document.querySelector('.dialog-bottom .up-btn.ZHIHUISHU_QZMD.set-btn');

        const inputElement = document.querySelector('textarea');
        if (
            inputElement &&
            inputElement.value.trim() !== "" &&
            publishButton &&
            publishButton.textContent.trim() === "立即发布"
        ) {
            console.log("找到立即发布按钮,自动点击...");
            publishButton.click();
        }
    }

    function answerQuestion(questionText, inputElement) {
        GM_xmlhttpRequest({
            method: "POST",
            url: GM_getValue("API_URL", defaultAPIUrl),
            headers: {
                "Content-Type": "application/json",
                "Authorization": `Bearer ${GM_getValue("API_KEY", defaultAPIKey)}`
            },
            data: JSON.stringify({
                model: GM_getValue("aimodel", defaultModel),
                messages: [
                    {
                        role: "user",
                        content: `智慧树问题回答,你比如我提问:音乐剧与民歌在曲风、表现形式和情感表达上有何不同?如何在声乐演唱中体现这些差异?你只需要给出简介30字以内或者左右的回答即可。只需要输出回答,不需要其他,也不需要markdown格式,回答中严禁出现下面三个词连在一起:“学习通”。且回答至少超过10个字。问题如下:${questionText}`
                    }
                ],
                max_tokens: 1688,
                temperature: 0.5,
                stream: false
            }),
            onload: function (response) {
                requestLock = false;
                console.log("请求成功:", response.responseText);
                if (response.status === 200) {
                    const jsonResponse = JSON.parse(response.responseText);
                    const answer = jsonResponse.choices[0].message.content.trim();
                    console.log("获取到的回答:", answer);

                    inputElement.value = answer;
                    inputElement.dispatchEvent(inputEvent);
                    showAlert("成功填入问题答案");
                } else {
                    console.error("API 请求失败,状态码:", response.status);
                    showAlert("申请答题链接失败,请刷新网页或稍后再试。")
                }
            },
            onerror: function () {
                requestLock = false;
                console.error("API 请求出错。");
            }
        });
    }

    window.onload = () => {
        console.log("启动智慧树自动回答器...");
        waitForAnswerButton();
        initMutationObserver();
        startCountdown();
    };

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址