temuPmPa.user.js

temuPmPa.user

Dit script moet niet direct worden geïnstalleerd - het is een bibliotheek voor andere scripts om op te nemen met de meta-richtlijn // @require https://update.greasyfork.org/scripts/525124/1528093/temuPmPauserjs.js

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// 创建面板元素
let panel = $("<div>", {
  css: {
    position: "absolute",
    border: "1px solid #ccc",
    padding: "10px",
    backgroundColor: "#f9f9f9",
    top: "30%",
    right: "30%",
    zIndex: "9999",
  }
});

// 创建复选框元素
let autoRefuseCkx = $("<input>", {
  type: "checkbox",
  name: "pmpaAutoRefuse",
  value: "pmpaAutoRefuse"
});

// 创建标签元素
let label = $("<label>", {
  for: "pmpaAutoRefuse",
  text: " 自动-我不接受"
});


// 定义定时器任务队列类
class TimerTaskQueue {
  constructor() {
    this.isRunning = false;
  }

  async start() {
    if (this.isRunning) return;
    this.isRunning = true;
    
    try {
      while (this.isRunning) {
        // 第一个事件
        if (!await this.refuseEvt()) {
          break;
        }
        // 第二个事件
        await this.confirmEvt();
        // 第三个事件
        await this.refreshEvt();        
        await new Promise(resolve => setTimeout(resolve, 2000)); 

      }
    } catch {
      
    }
  }

  stop() {
    this.isRunning = false;
  }

  // 第一个事件:点击拒绝按钮,没有则结束任务队列
  refuseEvt() {
    return new Promise(resolve => {
      let isClicked = false; // 用于标记是否已经点击过包含“拒绝”的链接
      $('div[data-testid="beast-core-table"] a').each(function() {
        let linkText = $(this).text();
        if (linkText.includes("拒绝")) {
          if (!isClicked) {
            // 只有在还未点击过的情况下执行点击操作
            $(this).get(0).click();
            console.log("点击了拒绝按钮");
            isClicked = true; // 标记为已经点击过
            resolve(true);
          }
        }
      });
      if (!isClicked) {
        // 如果遍历完所有链接都没有点击过,说明未找到拒绝按钮
        console.log("未找到拒绝按钮,结束任务队列");
        resolve(false);
      }
    });
  }

  // 第二个事件:点击拒绝按钮弹出模态框,随机 2 - 5s 点击确定按钮
  confirmEvt() {
    return new Promise(resolve => {
      const randomTime = getRandomNum(2, 5),
      customLabelTxt = "我不接受",
      refuseBtnTxt = "确认",
      cfmBtnTxt = "确认";

      setTimeout(() => {
        // 全部拒绝
        $('label[data-testid="beast-core-radio"]')
          .filter((_, el) => $(el).text() === customLabelTxt)
          .click();
          
          let textareaEle = $(
            'div[data-testid="beast-core-modal-body"] textarea[data-testid="beast-core-textArea-htmlInput"]:visible'
          );
          if (textareaEle.get(0)) {
            fillFormInput(textareaEle.get(0), getRandomLeftKeyboardChar());
          }

        $('div[data-testid="beast-core-modal"] button')
          .filter((_, el) => $(el).text() === cfmBtnTxt ||$(el).text() === refuseBtnTxt)
          .click();


        console.log(`等待 ${randomTime} 秒后点击了确定按钮`);

        resolve();
      }, randomTime * 1000);
    });
  }

  // 第三个事件:随机等待 5 - 10s 点击刷新按钮
  refreshEvt() {
    return new Promise(resolve => {
      const randomTime = getRandomNum(5, 10);
      const sbtBtnTxt = "查询";
      setTimeout(() => {
        console.log(`等待 ${randomTime} 秒后点击了${sbtBtnTxt}按钮`);

        $('form div[data-testid="beast-core-grid-row"] button')
          .filter((_, el) => $(el).text() === sbtBtnTxt)
          .click();

        resolve();
      }, randomTime * 1000);
    });
  }
}

const taskQueue = new TimerTaskQueue();

autoRefuseCkx.on("change", function() {
  if (this.checked) {
    // GM_setValue("pmpaAutoRefuse", "y");
    // 这里可以添加复选框选中时要执行的其他操作
    taskQueue.start();
  } else {
    // GM_setValue("pmpaAutoRefuse", "n");
    // 这里可以添加复选框取消选中时要执行的其他操作
    taskQueue.stop();
  }
});

// 将复选框和标签添加到面板中
panel.append(autoRefuseCkx).append(label);

// 将面板添加到页面的 body 中
$("body").append(panel);