贴吧小助手

自动顶贴回复

目前为 2020-12-26 提交的版本。查看 最新版本

// ==UserScript==
// @name          贴吧小助手
// @namespace     https://github.com/maomao1996/tampermonkey-scripts
// @version       0.1.1
// @description   自动顶贴回复
// @author        maomao1996
// @include       *://tieba.baidu.com/p/*
// @grant         GM_notification
// ==/UserScript==
;
(function () {
    'use strict';
    /**
     * 随机函数
     * https://github.com/lodash/lodash/blob/master/random.js
     */
    var random = function (lower, upper, floating) {
        if (floating) {
            var rand = Math.random();
            var randLength = ("" + rand).length - 1;
            return Math.min(lower + rand * (upper - lower + parseFloat("1e-" + randLength)), upper);
        }
        return lower + Math.floor(Math.random() * (upper - lower + 1));
    };
    /**
     * 顶帖模块
     **/
    var DING_CONFIG = {
        // 当前顶贴状态
        STATUS: false,
        // 顶帖最小间隔(分钟)
        TIME_MIN: 1,
        // 顶帖最大间隔(分钟)
        TIME_MAX: 30,
        // 顶贴回复内容
        TEXT: ['顶', '顶', '顶'],
        // 定时器
        timer: null
    };
    var autoResponse = function () {
        // 插入控制按钮
        $('#quick_reply').after('<a id="ding_btn" rel="noopener" class="btn-sub btn-small j_favor">开启自动顶贴回复</a>');
        // 执行顶贴回复
        var runResponse = function () {
            var selectors = {
                // 输入框选择器
                editor: '#j_editor_for_container',
                // 提交按钮选择器
                submit: '.lzl_panel_submit.j_lzl_p_sb'
            };
            if (!$('#j_editor_for_container:visible').length) {
                // 判断帖子是否存在一条回复
                if ($('a.lzl_link_unfold').length) {
                    // 打开楼中楼回复
                    $($('.lzl_link_unfold')[0]).trigger('click');
                }
                else {
                    // 打开回复楼主
                    $('#quick_reply').trigger('click');
                    selectors.editor = '#ueditor_replace';
                    selectors.submit = '.j_submit.poster_submit';
                }
            }
            var index = random(0, DING_CONFIG.TEXT.length - 1);
            $(selectors.editor).text(DING_CONFIG.TEXT[index]);
            $(selectors.submit).trigger('click');
            if (DING_CONFIG.STATUS) {
                var time = random(DING_CONFIG.TIME_MIN, DING_CONFIG.TIME_MAX, true) * 6e4;
                console.log(time / 1000 + "\u79D2\u540E\u81EA\u52A8\u9876\u8D34\u56DE\u590D");
                DING_CONFIG.timer = setTimeout(function () {
                    runResponse();
                }, time);
            }
        };
        $('#ding_btn').on('click', function () {
            if (DING_CONFIG.STATUS) {
                // 关闭
                DING_CONFIG.STATUS = false;
                clearTimeout(DING_CONFIG.timer);
                DING_CONFIG.timer = null;
                $(this).text('开启自动顶贴回复');
                GM_notification({
                    text: '已关闭自动顶贴回复',
                    timeout: 2000
                });
            }
            else {
                // 开启
                DING_CONFIG.STATUS = true;
                $(this).text('关闭自动顶贴回复');
                GM_notification({
                    text: '已开启自动顶贴回复',
                    timeout: 2000
                });
                runResponse();
            }
        });
    };
    $(window).on('load', function () {
        var pathname = location.pathname;
        // 自动顶贴回复
        if (/^\/p\/\d{1,}$/.test(pathname)) {
            autoResponse();
        }
    });
})();