9dm随机回帖

9大妈一键随机回复帖子, 切勿滥用, 违反9大妈论坛的规矩导致的后果, 作者一概不负.功能: 1. 添加随机回复按钮2. 添加快捷回复下拉框3. 添加评论管理器

Инсталирай този скрипт?
Препоръчано от автора

Може да харесате и 9dm自动填写计算.

Инсталирай този скрипт
// ==UserScript==
// @name        9dm随机回帖
// @namespace   https://greasyfork.org/zh-CN/scripts/429335
// @icon        data:image/png;base64,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
// @match       *://www.9dmdamaomod.net/thread-*
// @match       *://www.9dmdamaomod.net/forum.php*
// @grant       GM_info
// @grant       GM_registerMenuCommand
// @grant       GM_unregisterMenuCommand
// @grant       GM_openInTab
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_notification
// @version     1.22
// @author      六记
// @description 9大妈一键随机回复帖子, 切勿滥用, 违反9大妈论坛的规矩导致的后果, 作者一概不负.功能: 1. 添加随机回复按钮2. 添加快捷回复下拉框3. 添加评论管理器
// ==/UserScript==

(function () {
  var defualtMsg = [
    "楼主@{author} 流弊~",
    "楼主, 为你点[b]赞[/b]",
    "感谢楼主分享",
    "66666666666666",
    "针不戳呀,写的针不戳!",
    "{hitokoto}",
  ]
  if(!GM_getValue('msg')){
    GM_setValue('msg',defualtMsg);
  }
  var MSG = GM_getValue('msg');
  var notification = {text: "", title:`${GM_info.script.name}`, image:`${GM_info.script.icon}`, timeout: 3000};
  var enable = GM_getValue('enable'), debug = GM_getValue('debug'), menu_enable_toggle_ID, menu_debug_toggle_ID, menu_feedBack_ID, menu_Quick_ID;
  registerMenuCommand();
  debugging("-->添加<随机回复>按钮<--");
  let scrolltop = document.querySelector(".c1scrolltop");
  let ulButton = document.querySelector(".c1scrolltop>ul");
  if(ulButton){
    try{
      let ul = ulButton.innerHTML;
      let html = '<li class="reply ac_show" id="action"><span>随机回复</span></li>';
      scrolltop.innerHTML = '<ul>'+ html + ul+'</ul>';
      let button = document.querySelector("#action");
      debugging(`-->找到<随机回复>按钮: ${button}<--`);
      debugging(`给按钮添加点击监听事件:\n-->${actionRandom}<--`);
      button.addEventListener("click", actionRandom);
      createSelect();
      console.log(`脚本: ${GM_info.script.name}启动成功`);
    }catch(exception){
      debugging(`-->触发异常: ${exception}<--`);
      console.log(`脚本: ${GM_info.script.name}启动失败`);
    }
  }

  function createSelect(){
    debugging("-->添加<简洁回复框>[下拉框]<--");
    let inputButton = document.querySelector("#fastposteditor");
    let selectButton = document.querySelector("#select");
    let option;
    MSG = GM_getValue('msg');
    if(!selectButton){
      option = '<option value="0">↓↓↓选择快捷回复↓↓↓</option>';
      for(let i in MSG){
        option += `<option value="${i+1}">${MSG[i]}</option>`;
      }
      let select = `<lable>快捷回复列表<select id="select">${option}</select></lable>`;
      inputButton.innerHTML = select + inputButton.innerHTML;
      selectButton = document.querySelector("#select");
      selectButton.addEventListener("change", actionQuick);
    }else{
      option = '<option value="0">↓↓↓选择快捷回复↓↓↓</option>';
      for(let i in MSG){
        option += `<option value="${i+1}">${MSG[i]}</option>`;
      }
      selectButton.innerHTML = option;
      selectButton.addEventListener("change", actionQuick);
    }
  }

  debugging("-->创建事件<--");
  // 随机回复事件
  function actionRandom(){
    debugging("-->触发点击<随机回复>事件<--");
    getAuthor();
    getHitokoto();
    let info = {
      author:window.author ? window.author : "楼主获取失败",
      hitokoto:window.hitokoto ? window.hitokoto : "一言获取失败",
    }
    debugging(`-->楼主: ${info.author}<--`);
    debugging(`-->一言: ${info.hitokoto}<--`);
    let inputButton;
    let initialValue;
    let initialStyleColor;
    let pushButton;
    MSG = GM_getValue('msg');
    let msgIndex = Math.floor(Math.random() * MSG.length);
    let msg = MSG[msgIndex].format(info);
    inputButton = document.querySelector("#vmessage");
    debugging(`-->获取快捷回复输入框: ${inputButton?"成功":"失败"}<--`);
    if(inputButton){
      initialValue = inputButton.value;
      initialStyleColor = inputButton.style.color;
      debugging("-->1. 获得焦点<--");
      inputButton.focus();
      inputButton.style.color = "rgb(0,0,0)";
      debugging(`-->2. 填写回复:${msg} ${msgIndex}<--`);
      inputButton.value = msg;
      debugging(`-->3. 点击<快捷回复>按钮<--`);
      pushButton = document.querySelector("#vreplysubmit");
    }else{
      try{
        inputButton = document.querySelector("#fastpostmessage");
        debugging(`-->获取简洁回复输入框: ${inputButton?"成功":"失败"}<--`);
        initialValue = inputButton.value;
        initialStyleColor = inputButton.style.color;
        debugging("-->1. 获得焦点<--");
        inputButton.focus();
        inputButton.style.color = "rgb(0,0,0)";
        debugging(`-->2. 填写回复:${msg} ${msgIndex}<--`);
        inputButton.value = msg;
        debugging(`-->3. 点击<发表回复>按钮<--`);
        pushButton = document.querySelector("#fastpostsubmit");    
      }catch(err){
        debugging(`-->触发未知BUG: 不存在<简洁回复>,也不存在<快捷回复>\n错误原因: ${err}<--`);
        return;
      }
    }
    enable = GM_getValue('enable');
    if(enable){
        debugging(`-->回帖内容:${inputButton.value} 默认内容:${initialValue} ${inputButton.value == initialValue?'相等, 不应该发送':'不相等, 应该发送'}<--`);
        if(inputButton.value != initialValue){
          pushButton.click();
          debugging(`-->4. 还原 还原样式:${initialStyleColor}<--`);
          let title = document.querySelector("#thread_subject");
          title = title?title.innerText:"帖子名称获取失败";
          notification.text = `帖子:${title}\n回帖成功, 回复内容:${inputButton.value}`
          GM_notification(notification); // 提示消息
          inputButton.blur();
          inputButton.style.color = initialStyleColor;
        }else{
          notification.text = `回帖失败, 回复内容:${inputButton.value}`
          GM_notification(notification); // 提示消息
        }
    }
  }
  // 快捷回复事件
  function actionQuick(){
    debugging("-->触发点击<快捷回复>事件<--");
    debugging("判断是否为网址第一页");
    getAuthor();
    getHitokoto();
    let info = {
      author:window.author ? window.author : "楼主获取失败",
      hitokoto:window.hitokoto ? window.hitokoto : "一言获取失败",
    }
    debugging(`-->楼主: ${info.author}<--`);
    debugging(`-->一言: ${info.hitokoto}<--`);
    let inputButton;
    let initialValue;
    let initialStyle;
    let pushButton;
    let selectButton = document.querySelector("#select");
    let Index = selectButton.selectedIndex - 1;
    if(Index > -1 && Index < MSG.length){
      let msg = MSG[Index].format(info);
      debugging("-->获取简洁回复输入框<--");
      inputButton = document.querySelector("#fastpostmessage");
      initialValue = inputButton.value;
      initialStyle = inputButton.style;
      debugging("-->1. 获得焦点<--");
      inputButton.focus();
      inputButton.style.color = "rgb(0,0,0)";
      debugging(`-->2. 填写回复:${msg} ${Index}<--`);
      inputButton.value = msg;
      debugging(`-->3. 点击<发表回复>按钮<--`);
      pushButton = document.querySelector("#fastpostsubmit");
      enable = GM_getValue('enable');
      if(enable){
        debugging(`-->回帖内容:${inputButton.value} 默认内容:${initialValue} ${inputButton.value == initialValue?'相等, 不应该发送':'不相等, 应该发送'}<--`);
        if(inputButton.value != initialValue){
          pushButton.click();
          debugging(`-->4. 还原 还原样式:${initialStyleColor}<--`);
          let title = document.querySelector("#thread_subject");
          title = title?title.innerText:"帖子名称获取失败";
          notification.text = `帖子:${title}\n回帖成功, 回复内容:${inputButton.value}`
          GM_notification(notification); // 提示消息
          inputButton.blur();
          inputButton.style.color = initialStyleColor;
        }else{
          notification.text = `回帖失败, 回复内容:${inputButton.value}`
          GM_notification(notification); // 提示消息
        }
      }
    }
  }
  // 打印调试信息
  function debugging(str){
    debug = GM_getValue('debug');
    if(debug){
      console.log(str)
    }
  }
  // box事件
  function boxClose(event){
    debugging("-->触发窗口关闭事件<--");
    event.stopPropagation();
    let box = document.querySelector("#box");
    if(box){
      box.hidden = true;
    }
  }
  function boxReset(event){
    debugging("-->触发评论重置事件<--");
    event.stopPropagation();
    let box = document.querySelector("#box");
    if(box){
      let text = document.querySelector("#text");
      text.value = defualtMsg.join("\n");
    }
  }
  function boxSave(event){
    debugging("-->触发评论保存事件<--");
    event.stopPropagation();
    let box = document.querySelector("#box");
    if(box){
      let text = document.querySelector("#text");
      let comment = text.value;
      let comments = comment.split("\n");
      debugging(comments);
      GM_setValue('msg', comments);
      createSelect()
    }
  }


  // -------- 获取信息事件-----------
  // 获取楼主名称
  function getAuthor(){
    let author = document.querySelector("#tath>a");
    if(author){
      window.author = author.title;
    }else{
      window.author = document.querySelector(".authi>.xw1").innerText;
    }
    return window.author
  }
  // 获取一言
  function getHitokoto(){
    let msg;
    let author;
    let httpRequest;
    try{
      if (window.XMLHttpRequest){// code for IE7, Firefox, Mozilla, etc.
      httpRequest=new XMLHttpRequest();
      }else if (window.ActiveXObject){// code for IE5, IE6
        httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
      }
      httpRequest.open('GET', 'https://v1.hitokoto.cn/', true);
      httpRequest.send();
      httpRequest.onload = function () {
        if (httpRequest.readyState == 4 && httpRequest.status == 200) {
          let json = httpRequest.responseText;
          let jsonObject = eval('(' + json + ')');
          msg = jsonObject.hitokoto;
          author = jsonObject.from;
          let spaceLength = Math.floor(msg.length * 2);
          let space = new Array(spaceLength).join(" ");
          window.hitokoto = `${msg}\n${space}-${author}`;
        }else{
          alert(`HTTP请求失败,错误原因: 请求的URL的相应状态=${httpRequest.status}\n请求的结果状态=${httpRequest.readyState}`);
        }
      };
      httpRequest.onerror = function(){
         alert(`HTTP请求失败,错误原因: 请求的URL的相应状态=${httpRequest.status}\n请求的结果状态=${httpRequest.readyState}`);
      }
    }catch(err){
      debugging(`-->HTTP请求失败, 未知错误<--`);
    }
    
  }

  // 添加字符串format方法
  String.prototype.format = function(args) {
    var result = this;
    if (arguments.length > 0) {
        if (arguments.length == 1 && typeof (args) == "object") {
            for (var key in args) {
                if(args[key]!=undefined){
                    var reg = new RegExp("({" + key + "})", "g");
                    result = result.replace(reg, args[key]);
                }
            }
        }
        else {
            for (var i = 0; i < arguments.length; i++) {
                if (arguments[i] != undefined) {
                    //var reg = new RegExp("({[" + i + "]})", "g");//这个在索引大于9时会有问题
                    var reg = new RegExp("({)" + i + "(})", "g");
                    result = result.replace(reg, arguments[i]);
             }
          }
       }
    }
    return result;
  }

  // -------- 脚本菜单-----------
  debugging("-->创建脚本菜单<--");
  // 注册脚本菜单
  function registerMenuCommand() {
    if (menu_feedBack_ID || menu_enable_toggle_ID || menu_debug_toggle_ID || menu_Quick_ID){ // 如果反馈菜单ID不是 null,则删除所有脚本菜单
      GM_unregisterMenuCommand(menu_enable_toggle_ID);
      GM_unregisterMenuCommand(menu_debug_toggle_ID);
      GM_unregisterMenuCommand(menu_Quick_ID);
      GM_unregisterMenuCommand(menu_feedBack_ID);
      enable = GM_getValue('enable');
      debug = GM_getValue('debug');
    }
    menu_feedBack_ID = GM_registerMenuCommand('💬 反馈 & 建议 [Github]', function () {window.GM_openInTab('https://github.com/ACG-Q/script/issues/1', {active: true,insert: true,setParent: true});});
    menu_Quick_ID = GM_registerMenuCommand(`🧰 快捷评论管理`, menu_Quick);
    menu_enable_toggle_ID = GM_registerMenuCommand(`🔄 ${enable?'开启':'关闭'} 自动回复 - 点击切换`,  menu_enable_toggle);
    menu_debug_toggle_ID = GM_registerMenuCommand(`🔄 ${debug?'开启':'关闭'} 调试 - 点击切换`,  menu_debug_toggle);
  }
  // 切换事件
  function menu_enable_toggle() {
    enable = GM_getValue('enable');
    GM_setValue('enable', !enable);
    enable = GM_getValue('enable');
    notification.text = `已${enable?'开启':'关闭'} 自动回复`
    GM_notification(notification); // 提示消息
    registerMenuCommand(); // 重新注册脚本菜单
  };
  function menu_debug_toggle(){
    debug = GM_getValue('debug');
    GM_setValue('debug', !debug);
    debug = GM_getValue('debug');
    notification.text = `已${debug?'开启':'关闭'} 调试`
    GM_notification(notification); // 提示消息
    registerMenuCommand(); // 重新注册脚本菜单
  };
  function menu_Quick(){
    let box = document.querySelector("#box");
    let msg;
    if(!box){
      let quickHTML = '<div id="box" style="position: fixed; top: 105px; left: 1022px; padding: 10px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; border-radius: 10px; z-index: 9; cursor: default; border: 1px solid;"><input type="button" value="X" id="close" style="border: 1px solid;background: rgba(255, 255, 255,0) none repeat scroll 0% 0%;padding: 0;float: right;width: 20px;border-radius: 5px;text-align: center;"><h1>快捷评论管理</h1><textarea id="text" autofocus="true" style="width: 250px;height: 200px;border-radius: 5px;border: 1px solid;"></textarea><br><input type="button" value="重置" id="reset" style="border: none;background: rgba(255, 255, 255,0) none repeat scroll 0% 0%;padding: 0;margin: 0;">&nbsp;&nbsp;<input type="button" value="保存" id="save" style="border: none;background: rgba(255, 255, 255,0) none repeat scroll 0% 0%;padding: 0;margin: 0;"></div>';
      let body = document.querySelector("body");
      body.innerHTML = quickHTML + body.innerHTML;
      box = document.querySelector("#box");
      let left = GM_getValue("boxLeft");
      let top = GM_getValue("boxTop");
      if(left || top){
        box.style.left = left + 'px';
        box.style.top = top + 'px';
      }
      let text = document.querySelector("#text");
      msg = GM_getValue('msg');
      text.value = msg.join("\n");

      // -----拖拽事件-------
      let x,y,isDown = false;
      //鼠标按下事件
      box.addEventListener('mousedown',mousedownbox);
      function mousedownbox(e) {
        //获取x坐标和y坐标
        x = e.clientX;
        y = e.clientY;

        //获取左部和顶部的偏移量
        left = box.offsetLeft;
        top = box.offsetTop;
        //开关打开
        isDown = true;
        //设置样式
        box.style.cursor = 'move';
      }
      //鼠标移动
      box.addEventListener('mousemove',mousemovebox);
      function mousemovebox(e) {
        if (isDown == false) {
            return;
        }
        //获取x和y
        let nx = e.clientX;
        let ny = e.clientY;
        //计算移动后的左偏移量和顶部的偏移量
        let nl = nx - (x - left);
        let nt = ny - (y - top);

        box.style.left = nl + 'px';
        box.style.top = nt + 'px';

        GM_setValue("boxLeft",nl);
        GM_setValue("boxTop",nt);
      }
      //鼠标抬起事件
      box.addEventListener('mouseup',mouseupbox);
      function mouseupbox() {
        //开关关闭
        isDown = false;
        box.style.cursor = 'default';
      }
      function noMove(event){
        debugging("-->触发不鼠标移动事件<--");
        isDown = false;
      }

      // -----按钮关闭事件-----
      let closeButton = document.querySelector("#close");
      let resetButton = document.querySelector("#reset");
      let saveButton = document.querySelector("#save");
      let button = document.querySelector("#action");

      closeButton.addEventListener("click", boxClose);
      resetButton.addEventListener("click", boxReset);
      saveButton.addEventListener("click", boxSave);

      closeButton.addEventListener("mousemove", noMove);
      resetButton.addEventListener("mousemove", noMove);
      saveButton.addEventListener("mousemove", noMove);
      text.addEventListener("mousemove", noMove);

      button.addEventListener("click", actionRandom);

    }else{
      box.hidden = !box.hidden;
      let text = document.querySelector("#text");
      msg = GM_getValue('msg');
      text.value = msg.join("\n");
    }
  }
})()