2048自动回贴刷新

自动回帖后刷新

目前为 2024-11-27 提交的版本。查看 最新版本

// ==UserScript==
// @name         2048自动回贴刷新
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  自动回帖后刷新
// @author       zzx114
// @include      *://*2048.com/read.php?tid=*
// @exclude      *://*2048.com/read.php?tid=*&
// @match        *://*/2048/read.php?tid=*
// @exclude      *://*/2048/read.php?tid=*&
// @grant        GM_addStyle
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @license MIT
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// ==/UserScript==

(function() {
    'use strict';

    // 添加样式
    GM_addStyle(`
        #settingsDiv {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 300px;
            padding: 20px;
            background: white;
            border: 1px solid #000;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
            z-index: 1000;
            text-align: center;
        }
        #settingsDiv h3 {
            margin-top: 0;
        }
        #settingsDiv label {
            display: block;
            margin: 10px 0;
        }
        #settingsDiv button {
            margin-top: 20px;
        }
    `);

    // 注册设置菜单命令
    GM_registerMenuCommand("2048自动回贴刷新设置", showSettings);

    // 设置变量
    let settingsDiv = null;
    const useAlertKey = 'useAlert';
    const useConsoleKey = 'useConsole';
    const defaultUseAlert = true; // 默认使用 alert
    const defaultUseConsole = false; // 默认不使用 console.log

    // 显示设置界面
    function showSettings() {
        if (settingsDiv) {
            settingsDiv.style.display = settingsDiv.style.display === 'block' ? 'none' : 'block';
            return;
        }

        settingsDiv = document.createElement('div');
        settingsDiv.id = 'settingsDiv';
        settingsDiv.innerHTML = `
            <h3>提示消息设置</h3>
            <label><input type="checkbox" id="useAlertCheckbox"> 使用 alert 显示消息</label>
            <label><input type="checkbox" id="useConsoleCheckbox"> 使用 console.log 显示消息</label>
            <button id="saveSettings">保存设置</button>
        `;

        document.body.appendChild(settingsDiv);

        // 初始化复选框状态
        document.getElementById('useAlertCheckbox').checked = GM_getValue(useAlertKey, defaultUseAlert);
        document.getElementById('useConsoleCheckbox').checked = GM_getValue(useConsoleKey, defaultUseConsole);

        // 保存设置按钮事件
        document.getElementById('saveSettings').addEventListener('click', () => {
            GM_setValue(useAlertKey, document.getElementById('useAlertCheckbox').checked);
            GM_setValue(useConsoleKey, document.getElementById('useConsoleCheckbox').checked);
            settingsDiv.style.display = 'none';
        });
    }

    // 显示消息的函数,根据设置使用alert或console.log
    function displayMessage(message) {
        const useAlert = GM_getValue(useAlertKey, defaultUseAlert);
        const useConsole = GM_getValue(useConsoleKey, defaultUseConsole);
        if (useAlert) {
            alert(message);
        }
        if (useConsole) {
            console.log(message);
        }
    }

    // 自动回贴逻辑
    const replyMessage = "感谢楼主分享。";
    const replyInterval = 30000; // 30秒
    const lastRunKey = "lastRunTime2048";

    let lastRunTime2048 = parseInt(GM_getValue(lastRunKey, 0), 10);
    let now = new Date().getTime();

    if (now - lastRunTime2048 >= replyInterval) {
        GM_setValue(lastRunKey, now);

        const existingReplies = document.querySelectorAll("#main > div:nth-child(18)");
        let isReplyPresent = false;
        existingReplies.forEach((reply) => {
            if (reply.textContent.includes(replyMessage)) {
                isReplyPresent = true;
            }
        });

        if (!isReplyPresent) {
            setTimeout(() => {
             // const replyButton = document.querySelector("#reply-button"); // 替换为实际的回复按钮选择器
             // if (replyButton) {
            //      replyButton.click();
           //   }
                const replyInput = document.querySelector("textarea#textarea");
                if (replyInput) {
                    replyInput.value = replyMessage;
                } else {
                    displayMessage("没有找到回复输入框!");
                    return;
                }

                const submitButton = document.querySelector("input.btn");
                if (submitButton) {
                    submitButton.click();
                }
            }, 3000); // 等待3秒后再回复
        }
    } else {
        displayMessage("距离上次自动回复没有超过30秒,请刷新重试");
    }
})();