// ==UserScript== // @name DeepSeek 自动重试 & 点击次数上限 // @namespace http://tampermonkey.net/ // @version 1.6 // @description 当页面中出现“服务器繁忙,请稍后再试”的提示时,自动点击 id 为“重新生成”的元素进行重试。页面右下角显示一个大盒子,包含自动重试开关及点击次数上限设置(含当前计数显示),点击次数达到上限时自动关闭重试。适用于 deepseek 页面。 // @author Loki2077 // @match https://chat.deepseek.com/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 自动重试是否启用,默认开启 let autoRetryEnabled = true; // 记录当前自动点击重试的次数 let retryClickCount = 0; // 定义间隔时间变量(单位:秒) let jgtime = 30; // 定义倒计时变量 let countdown = jgtime; // 创建 UI 大盒子,包含开关按钮和点击次数上限设置 function createUIBox() { const container = document.createElement('div'); container.id = 'auto-retry-box'; container.style.position = 'fixed'; container.style.bottom = '10px'; container.style.right = '10px'; container.style.zIndex = 9999; container.style.background = 'rgba(0, 0, 0, 0.7)'; container.style.color = '#fff'; container.style.padding = '10px'; container.style.borderRadius = '5px'; container.style.fontSize = '14px'; // 开关按钮 const toggleBtn = document.createElement('button'); toggleBtn.id = 'auto-retry-toggle'; toggleBtn.style.width = '100%'; toggleBtn.style.padding = '8px'; toggleBtn.style.backgroundColor = '#007BFF'; toggleBtn.style.color = '#FFFFFF'; toggleBtn.style.border = 'none'; toggleBtn.style.borderRadius = '5px'; toggleBtn.style.cursor = 'pointer'; toggleBtn.textContent = autoRetryEnabled ? '关闭自动重试' : '开启自动重试'; toggleBtn.addEventListener('click', () => { autoRetryEnabled = !autoRetryEnabled; toggleBtn.textContent = autoRetryEnabled ? '关闭自动重试' : '开启自动重试'; countdown = autoRetryEnabled ? jgtime : '关闭'; console.log(`自动重试功能已${autoRetryEnabled ? '开启' : '关闭'}`); }); container.appendChild(toggleBtn); // 点击次数上限和当前计数显示 const limitBox = document.createElement('div'); limitBox.style.marginTop = '10px'; const limitLabel = document.createElement('label'); limitLabel.htmlFor = 'max-click-input'; limitLabel.textContent = '点击次数上限: '; const maxClickInput = document.createElement('input'); maxClickInput.id = 'max-click-input'; maxClickInput.type = 'number'; maxClickInput.value = '5'; maxClickInput.min = '0'; maxClickInput.style.width = '50px'; maxClickInput.style.marginRight = '10px'; // 当前点击次数显示 const countDisplay = document.createElement('span'); countDisplay.id = 'click-count'; countDisplay.textContent = retryClickCount; // 组合 limitBox limitBox.appendChild(limitLabel); limitBox.appendChild(maxClickInput); limitBox.appendChild(document.createTextNode(' 当前点击次数: ')); limitBox.appendChild(countDisplay); container.appendChild(limitBox); // 间隔时间设置 const intervalBox = document.createElement('div'); intervalBox.style.marginTop = '10px'; const intervalLabel = document.createElement('label'); intervalLabel.htmlFor = 'interval-input'; intervalLabel.textContent = '间隔时间 (秒): '; const intervalInput = document.createElement('input'); intervalInput.id = 'interval-input'; intervalInput.type = 'number'; intervalInput.value = jgtime; intervalInput.min = '1'; intervalInput.style.width = '80px'; intervalInput.style.marginRight = '10px'; intervalInput.addEventListener('change', () => { jgtime = Number(intervalInput.value) || 30; countdown = jgtime; clearInterval(checkInterval); checkInterval = setInterval(checkAndRetry, jgtime * 1000); console.log(`间隔时间已修改为 ${jgtime} 秒`); }); const countdownDisplay = document.createElement('span'); countdownDisplay.id = 'countdown-display'; countdownDisplay.textContent = `倒计时: ${countdown} 秒`; intervalBox.appendChild(intervalLabel); intervalBox.appendChild(intervalInput); intervalBox.appendChild(countdownDisplay); container.appendChild(intervalBox); document.body.appendChild(container); } // 检查页面是否出现错误提示,并执行自动重试操作(带点击次数上限判断) function checkAndRetry() { if (!autoRetryEnabled) return; // 获取用户设置的最大点击次数(转为数字) const maxClickInput = document.getElementById('max-click-input'); const maxClickCount = Number(maxClickInput.value) || 0; // 如果已达到或超过点击次数上限,则关闭自动重试功能 if (retryClickCount >= maxClickCount && maxClickCount > 0) { console.log("已达到点击次数上限,自动重试功能自动关闭。"); autoRetryEnabled = false; // 更新开关按钮显示 document.getElementById('auto-retry-toggle').textContent = '开启自动重试'; return; } // 查询包含错误提示的元素(例如:
服务器繁忙,请稍后再试。