ChatGPT Auto Continue

Automatically inputs "继续" in ChatGPT's dialog box after a response is received

  1. // ==UserScript==
  2. // @name ChatGPT Auto Continue
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Automatically inputs "继续" in ChatGPT's dialog box after a response is received
  6. // @author 不告诉你
  7. // @match https://chat.openai.com/chat
  8. // @match https://chat.openai.com/chat/*
  9. // @match https://chat.openai.com/auth/login
  10. // @license GPL-3.0
  11. // @run-at document-idie
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. // Add a toggle button
  19. let toggleBtn = document.createElement("button");
  20. toggleBtn.style.position = "fixed";
  21. toggleBtn.style.top = "10px";
  22. toggleBtn.style.right = "10px";
  23. toggleBtn.innerHTML = "Auto Continue: Off";
  24. toggleBtn.onclick = function() {
  25. if (this.innerHTML === "Auto Continue: Off") {
  26. this.innerHTML = "Auto Continue: On";
  27. startAutoInput();
  28. } else {
  29. this.innerHTML = "Auto Continue: Off";
  30. stopAutoInput();
  31. }
  32. };
  33. document.body.appendChild(toggleBtn);
  34.  
  35. let interval;
  36. function startAutoInput() {
  37. interval = setInterval(function() {
  38. // 判断页面上是否有 regenerate response的元素
  39. let button1 = document.querySelector("#__next > div.overflow-hidden.w-full.h-full.relative > div.flex.h-full.flex-1.flex-col.md\\:pl-\\[260px\\] > main > div.absolute.bottom-0.left-0.w-full.border-t.md\\:border-t-0.dark\\:border-white\\/20.md\\:border-transparent.md\\:dark\\:border-transparent.md\\:bg-vert-light-gradient.bg-white.dark\\:bg-gray-800.md\\:\\!bg-transparent.dark\\:md\\:bg-vert-dark-gradient > form > div > div.flex.ml-1.mt-1\\.5.md\\:w-full.md\\:m-auto.md\\:mb-2.gap-0.md\\:gap-2.justify-center > button");
  40. if (button1.innerHTML.includes("Regenerate response")) {
  41. //判断最后的回复是不是已经到了结尾,以及有无抱歉、对不起字眼。英文可自行添加,下个版本关键词列为数组
  42. var allParagraphs = document.getElementsByTagName("p");
  43. var lastParagraph = allParagraphs[allParagraphs.length - 1];
  44. if ((lastParagraph.innerText.indexOf("很抱歉")!= -1) || (lastParagraph.innerText.indexOf("对不起")!=-1)){
  45. console.info(lastParagraph.innerText);
  46. clearInterval(interval);
  47. toggleBtn.innerHTML = "Auto Continue: Off";
  48. stopAutoInput();
  49. }
  50. // 如果不是结尾,那么在文本框中输入 "继续" 和回车
  51. let inputElem = document.querySelector("#__next > div.overflow-hidden.w-full.h-full.relative > div.flex.h-full.flex-1.flex-col.md\\:pl-\\[260px\\] > main > div.absolute.bottom-0.left-0.w-full.border-t.md\\:border-t-0.dark\\:border-white\\/20.md\\:border-transparent.md\\:dark\\:border-transparent.md\\:bg-vert-light-gradient.bg-white.dark\\:bg-gray-800.md\\:\\!bg-transparent.dark\\:md\\:bg-vert-dark-gradient > form > div > div.flex.flex-col.w-full.py-2.flex-grow.md\\:py-3.md\\:pl-4.relative.border.border-black\\/10.bg-white.dark\\:border-gray-900\\/50.dark\\:text-white.dark\\:bg-gray-700.rounded-md.shadow-\\[0_0_10px_rgba\\(0\\,0\\,0\\,0\\.10\\)\\].dark\\:shadow-\\[0_0_15px_rgba\\(0\\,0\\,0\\,0\\.10\\)\\] > textarea");
  52. inputElem.value = "继续";
  53.  
  54. var event = new KeyboardEvent('keydown', {
  55. bubbles: true,
  56. cancelable: true,
  57. key: 'Enter',
  58. code: 'Enter',
  59. });
  60. inputElem.dispatchEvent(event);
  61. }
  62. }, 2000);
  63. }
  64.  
  65. function stopAutoInput() {
  66. clearInterval(interval);
  67. }
  68. })();