ChatGPT Message Queue

Queue messages when input isn't cleared after Enter

目前为 2025-03-18 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name ChatGPT Message Queue
  3. // @match https://chat.openai.com/*
  4. // @match https://chatgpt.com/*
  5. // @description Queue messages when input isn't cleared after Enter
  6. // @version 0.0.1.20250318143202
  7. // @namespace https://greasyfork.org/users/1435046
  8. // ==/UserScript==
  9.  
  10. (function() {
  11. 'use strict';
  12. let queueCount = 0;
  13. let queueObserver;
  14. const queueDisplay = document.createElement('div');
  15. // Minimal UI setup
  16. queueDisplay.innerHTML = `
  17. <span>Queue: ${queueCount}</span>
  18. <button onclick="this.previousElementSibling.textContent='Queue: 0'">×</button>
  19. `;
  20. queueDisplay.style.cssText = `
  21. position:fixed; bottom:100px; right:20px;
  22. background:rgba(0,0,0,0.7); color:white;
  23. padding:5px 10px; border-radius:4px; display:flex; gap:8px;
  24. `;
  25. document.body.appendChild(queueDisplay);
  26.  
  27. // Core logic
  28. new MutationObserver((_, observer) => {
  29. const textarea = document.getElementById('prompt-textarea');
  30. if (textarea && !textarea.dataset.queuer) {
  31. textarea.dataset.queuer = true;
  32. textarea.addEventListener('keydown', e => {
  33. if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) {
  34. setTimeout(() => { // Allow DOM update
  35. if (textarea.textContent.trim()) {
  36. queueDisplay.children[0].textContent = `Queue: ${++queueCount}`;
  37. if (!queueObserver) {
  38. queueObserver = new MutationObserver(() => {
  39. document.querySelector('[data-testid="send-button"]')?.click();
  40. queueCount--;
  41. queueDisplay.children[0].textContent = `Queue: ${queueCount}`;
  42. });
  43. queueObserver.observe(document.body, {childList: true, subtree: true});
  44. }
  45. }
  46. }, 50);
  47. }
  48. });
  49. }
  50. }).observe(document.body, {childList: true, subtree: true});
  51. })();