Greasy Fork

Greasy Fork is available in English.

🤖IMYAI网站自动签到 Auto Sign-in for IMYAI Website

打开网页后等待3秒自动签到,签到完成后自动关闭签到对话框。Automate sign-in with a 3-second delay after page load and automatically close the sign-in dialog after sign-in.

当前为 2023-12-15 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         🤖IMYAI网站自动签到 Auto Sign-in for IMYAI Website
// @namespace    http://tampermonkey.net/
// @version      0.8
// @description  打开网页后等待3秒自动签到,签到完成后自动关闭签到对话框。Automate sign-in with a 3-second delay after page load and automatically close the sign-in dialog after sign-in.
// @author       GPT4.0
// @match        https://ai.imyai.top/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Function to simulate a mouse click
    function simulateClick(element) {
        const mouseClickEvents = ['mousedown', 'click', 'mouseup'];
        mouseClickEvents.forEach(mouseEventType =>
            element.dispatchEvent(
                new MouseEvent(mouseEventType, {
                    view: window,
                    bubbles: true,
                    cancelable: true,
                    buttons: 1
                })
            )
        );
    }

    // Function to close the sign-in dialog after a delay
    function closeSignInDialog() {
        const closeButton = document.querySelector('.n-base-close.n-base-close--absolute.n-card-header__close');
        if (closeButton) {
            simulateClick(closeButton); // First attempt to close the dialog
            setTimeout(() => {
                simulateClick(closeButton); // Second attempt to close the dialog
            }, 500); // Delay between attempts
        }
    }

    // Function to handle the sign-in process
    function handleSignIn() {
        // Query for the first sign-in button
        const firstSignInButton = document.querySelector('svg.iconify--noto');
        if (firstSignInButton) {
            simulateClick(firstSignInButton);
        }

        // Check for the second sign-in button every half second
        const checkExist = setInterval(function() {
            const secondSignInButton = document.querySelector('div.flex.mt-3.w-full.mt-14 > button.n-button--info-type');
            if (secondSignInButton) {
                simulateClick(secondSignInButton);
                clearInterval(checkExist); // Stop checking once the button has been clicked
            }
        }, 500); // Check every 500ms
    }

    // Function to add the sign-in button to the page (for manual control if needed)
    function addButton() {
        const newButton = document.createElement('button');
        newButton.innerText = '手动快速签到';
        // Styling the button
        newButton.style.cssText = `
            position: fixed;
            top: 10px;
            left: 10px;
            z-index: 10000;
            padding: 10px 20px;
            background-color: orange;
            color: white;
            border: none;
            border-radius: 5px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
            font-weight: bold;
            cursor: pointer;
            transition: background-color 0.3s, box-shadow 0.3s;
        `;

        newButton.onclick = handleSignIn;

        document.body.appendChild(newButton);
    }

    // Add the button and trigger sign-in after the DOM is fully loaded with a delay
    if (document.readyState === 'complete') {
        addButton();
        setTimeout(handleSignIn, 3000); // Wait for 3 seconds before triggering sign-in
        setTimeout(closeSignInDialog, 4000); // Wait for an additional 1 seconds before attempting to close the dialog
        setTimeout(closeSignInDialog, 4500); // Wait for an additional 1.5 seconds before attempting to close the dialog
    } else {
        window.addEventListener('load', function() {
            addButton();
            setTimeout(handleSignIn, 3000); // Wait for 3 seconds before triggering sign-in
            setTimeout(closeSignInDialog, 4000); // Wait for an additional 1 seconds before attempting to close the dialog
            setTimeout(closeSignInDialog, 4500); // Wait for an additional 1.5 seconds before attempting to close the dialog
        });
    }
})();