大善人又发了1000抽奖积分了,一次一次点太慢了,于是让AI搓了个自动抽奖的脚本。

// ==UserScript==// @name         Alice 抽奖脚本// @namespace    http://tampermonkey.net/// @version      3.0// @description  Alice 抽奖脚本// @author       Gemini// @match        *://*/lottery/pool*// @grant        GM_addStyle// @run-at       document-idle// ==/UserScript==(function() {    'use strict';    // ================= 全局状态变量 =================    let isAutoDrawing = false;  // 脚本是否正在执行自动抽奖    let targetDraws = 0;        // 目标抽奖次数    let drawCount = 0;          // 当前已抽奖次数    let intervalId = null;      // 定时器ID    // ================= 核心抽奖逻辑 =================    function autoDraw() {        // 1. 如果当前不是抽奖状态,则直接退出        if (!isAutoDrawing) {            return;        }        // 2. 检查是否已达到目标次数        if (drawCount >= targetDraws) {            console.log(`任务完成: 已成功抽奖 ${drawCount} / ${targetDraws} 次。`);            stopAutoDraw();            return;        }        // 3. 检查“抽奖中”弹窗,避免重复点击        const isDrawingModalVisible = document.querySelector('#drawModal.show');        if (isDrawingModalVisible) {            console.log('抽奖进行中,等待...');            return;        }        // 4. 寻找可用的抽奖按钮        const availableDrawButton = document.querySelector('.draw-button:not(:disabled)');        if (availableDrawButton) {            drawCount++;            updateStatus(`抽奖中... (${drawCount} / ${targetDraws})`);            console.log(`正在进行第 ${drawCount} / ${targetDraws} 次抽奖...`);            availableDrawButton.click();        } else {            // 如果找不到按钮,说明积分用尽,任务提前结束            console.log('找不到可用的抽奖按钮(可能积分不足),任务停止。');            updateStatus(`积分不足,任务停止于第 ${drawCount} 次。`);            stopAutoDraw();        }    }    // ================= 控制函数 =================    function startAutoDraw(limit) {        if (isAutoDrawing) return; // 如果已经在抽奖,则不响应新的开始命令        isAutoDrawing = true;        targetDraws = limit;        drawCount = 0;        // 更新按钮状态        document.getElementById('start-10').disabled = true;        document.getElementById('start-20').disabled = true;        document.getElementById('start-50').disabled = true;        document.getElementById('stop-draw').disabled = false;        updateStatus(`任务开始,目标:${limit}次`);        console.log(`自动抽奖任务开始,目标次数: ${limit}`);        // 立即执行一次,然后开始定时循环        autoDraw();        intervalId = setInterval(autoDraw, 5000); // 5秒检查一次    }    function stopAutoDraw() {        isAutoDrawing = false;        clearInterval(intervalId); // 停止定时器        // 恢复按钮状态        if (document.getElementById('start-10')) {             document.getElementById('start-10').disabled = false;             document.getElementById('start-20').disabled = false;             document.getElementById('start-50').disabled = false;             document.getElementById('stop-draw').disabled = true;        }        updateStatus(`待命中,请选择任务。`);        console.log('自动抽奖已停止。');    }    // ================= UI 创建和注入 =================    function setupUI() {        const container = document.createElement('div');        container.id = 'auto-draw-controller';        container.innerHTML = `            <div class="controller-title">抽奖控制器</div>            <div class="button-group">                <button id="start-10" class="controller-btn start">抽奖10次</button>                <button id="start-20" class="controller-btn start">抽奖20次</button>                <button id="start-50" class="controller-btn start">抽奖50次</button>                <button id="stop-draw" class="controller-btn stop" disabled>停止抽奖</button>            </div>            <div id="controller-status" class="controller-status">待命中,请选择任务。</div>        `;        // 寻找一个合适的位置来插入我们的UI面板        const targetElement = document.querySelector('.points-card');        if (targetElement) {            targetElement.insertAdjacentElement('afterend', container);            // 绑定按钮事件            document.getElementById('start-10').addEventListener('click', () => startAutoDraw(10));            document.getElementById('start-20').addEventListener('click', () => startAutoDraw(20));            document.getElementById('start-50').addEventListener('click', () => startAutoDraw(50));            document.getElementById('stop-draw').addEventListener('click', stopAutoDraw);        }    }    function updateStatus(message) {        const statusEl = document.getElementById('controller-status');        if (statusEl) {            statusEl.textContent = message;        }    }    // 添加一些CSS样式,让界面更好看    GM_addStyle(`        #auto-draw-controller {            background-color: #f8f9fa;            border: 1px solid #dee2e6;            border-radius: 16px;            padding: 20px;            margin-bottom: 24px;            box-shadow: 0 4px 12px rgba(0,0,0,0.05);            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;        }        .controller-title {            font-size: 1.2rem;            font-weight: 700;            color: #0d47a1;            margin-bottom: 16px;            text-align: center;        }        .button-group {            display: flex;            justify-content: center;            gap: 12px;            flex-wrap: wrap;        }        .controller-btn {            border: none;            padding: 12px 24px;            border-radius: 12px;            font-size: 1rem;            font-weight: 600;            cursor: pointer;            transition: all 0.2s ease-in-out;        }        .controller-btn.start {            background: linear-gradient(135deg, #1565c0 0%, #1e88e5 100%);            color: white;        }        .controller-btn.start:hover {            transform: translateY(-2px);            box-shadow: 0 4px 8px rgba(0,0,0,0.1);        }        .controller-btn.stop {            background: linear-gradient(135deg, #d32f2f 0%, #f44336 100%);            color: white;        }        .controller-btn:disabled {            background: #e0e0e0;            cursor: not-allowed;            transform: none;            box-shadow: none;        }        .controller-status {            text-align: center;            margin-top: 16px;            font-size: 0.95rem;            color: #546e7a;            font-weight: 500;            background: #e3f2fd;            padding: 8px;            border-radius: 8px;        }    `);    // 等待页面完全加载后再执行UI注入    window.addEventListener('load', setupUI);})();