discord jump top

discord爬楼辅助器

当前为 2024-07-15 提交的版本,查看 最新版本

// ==UserScript==
// @name         discord jump top
// @namespace    http://tampermonkey.net/
// @version      v0.0.1
// @description  discord爬楼辅助器
// @author       bincooo 折戟沉沙、丿
// @match        https://discord.com/channels/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=discord.com
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    const jumpBtm = $(`<a id='j-top' href='javascript:;' style='position: fixed; top: calc(100% - 20px); right: 30px'>jump top ⬆️</a>`)
    const cancelBtm = $(`<a id='j-cnacel' hidden href='javascript:;' style='position: fixed; top: calc(100% - 20px); right: 30px'>cnacel</a>`)

    function waitTimout(selector, millisecond) {
        let timer, count = millisecond / 1000;
        return new Promise(function(resolve, reject) {
            timer = setInterval(() => {
                const obj = $(selector);
                if (obj.length > 0) {
                    clearInterval(timer);
                    return resolve(obj);
                }

                if (count == 0) {
                    clearInterval(timer);
                    return reject();
                }

                count--;
            }, 1000)
        })
    }

    function jumpTop(barArea) {
        if ($("#j-top").length > 0) {
            return
        }

        let retry = 30;
        const btm = jumpBtm.clone();
        const cancel = cancelBtm.clone();
        barArea.append(btm);
        barArea.append(cancel);
        btm.click(() => {
            if (btm.disabled === true) {
                return
            }

            btm.disabled = true;
            btm.attr("hidden", true);
            cancel.attr("hidden", false);
            const $jump = (resolve, reject) => {
                if (retry <= 0) {
                    resolve()
                    retry = 30;
                    return
                }

                retry --;
                const chat = $("div[id^=chat-messages-]");
                $("div[class^=messagesWrapper] > div[class^=scroller_]").animate({scrollTop: 0}, 800);
                setTimeout(() => {
                    (chat.length > 0) ? resolve() : $jump(resolve, reject);
                }, 1000);
            }
            new Promise($jump).then(_ => {
                btm.disabled = false;
                btm.attr("hidden", false);
                cancel.attr("hidden", true);
                console.log("~ top over ~");
                retry = 30;
            });
        });
        cancel.click(() => {
            retry = 0
            btm.attr("hidden", false);
            cancel.attr("hidden", true);
        })
    }

    $(() => {
        // barArea
        waitTimout("div[class^=container_] div[class^=chat_]", 200000).then(_ => {
            $("div[class^=container_] div[class^=chat_] div[class^=subtitleContainer_]").on("DOMSubtreeModified", ()=>{
                const barArea = $("main div[class^=channelBottomBarArea_]");
                jumpTop(barArea);
            });

            waitTimout("main div[class^=channelBottomBarArea_]", 6000).then(barArea => {
                jumpTop(barArea);
            });
        });
    })


})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址