// ==UserScript== // @name GLaDOS 自动签到 // @namespace https://glados.cloud/ // @version 1.0 // @description 在 GLaDOS 控制台页面自动执行签到 // @author YourName // @match https://glados.cloud/console/checkin // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; // 等待页面元素加载完成 function waitForElement(selector, timeout = 10000) { return new Promise((resolve, reject) => { const startTime = Date.now(); const checkInterval = setInterval(() => { const element = document.querySelector(selector); if (element) { clearInterval(checkInterval); resolve(element); } else if (Date.now() - startTime > timeout) { clearInterval(checkInterval); reject(new Error(`等待元素 ${selector} 超时`)); } }, 500); }); } // 主签到函数 async function performCheckin() { try { // 1. 寻找签到按钮 - 根据你提供的HTML结构 // 按钮特征: class包含 "checkin-cute-btn", 内部有文本 "签到" const button = await waitForElement('.checkin-cute-btn'); // 可选:额外检查按钮是否包含 "签到" 文字 const buttonText = button.textContent.trim(); if (!buttonText.includes('签到')) { console.warn('GLaDOS签到: 找到的按钮可能不是签到按钮,文本为:', buttonText); } // 2. 检查按钮是否已被禁用或已签到(如果有迹象) if (button.disabled || button.classList.contains('disabled')) { console.log('GLaDOS签到: 按钮不可用,可能已签到或条件不满足'); return; } // 3. 执行点击签到 console.log('GLaDOS签到: 准备签到...'); button.click(); // 4. 可选:观察点击后的反馈 // 由于GLaDOS点击后可能有界面变化,这里简单等待一下并输出日志 setTimeout(() => { console.log('GLaDOS签到: 签到动作已触发,请观察页面反馈'); }, 1000); } catch (error) { console.error('GLaDOS自动签到失败:', error); // 可以在这里添加桌面通知,但需要 @grant GM_notification } } // 页面加载完成后执行 window.addEventListener('load', function() { // 稍微延迟一下,确保所有脚本和界面元素完全初始化 setTimeout(performCheckin, 2000); }); })();