您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Queue messages based on input field state
当前为
// ==UserScript== // @name ChatGPT Smart Message Queue // @match https://chat.openai.com/* // @match https://chatgpt.com/* // @description Queue messages based on input field state // @version 0.0.1.20250318144238 // @namespace https://gf.zukizuki.org/users/1435046 // ==/UserScript== (function() { 'use strict'; let queueCount = 0; let queueDisplay; let isWaitingForClear = false; let originalMessage = ''; function createQueueDisplay() { queueDisplay = document.createElement('div'); queueDisplay.style.position = 'fixed'; queueDisplay.style.bottom = '100px'; queueDisplay.style.right = '20px'; queueDisplay.style.background = 'rgba(0,0,0,0.7)'; queueDisplay.style.color = 'white'; queueDisplay.style.padding = '8px 16px'; queueDisplay.style.borderRadius = '8px'; queueDisplay.style.zIndex = '9999'; queueDisplay.innerHTML = ` <div style="display: flex; gap: 12px; align-items: center"> <span>Queue: ${queueCount}</span> <button style=" background: transparent; border: none; color: white; cursor: pointer; padding: 4px 8px; border-radius: 4px; " id="clear-queue">Clear</button> </div> `; queueDisplay.querySelector('#clear-queue').addEventListener('click', () => { queueCount = 0; queueDisplay.querySelector('span').textContent = `Queue: ${queueCount}`; }); document.body.appendChild(queueDisplay); } function trySendMessage() { const textarea = document.getElementById('prompt-textarea'); const sendButton = document.querySelector('[data-testid="send-button"]'); if (textarea && sendButton && !sendButton.disabled && textarea.value === '') { const queuedMessage = originalMessage; textarea.value = queuedMessage; textarea.dispatchEvent(new Event('input', { bubbles: true })); // Use small timeout to ensure UI updates setTimeout(() => { if (sendButton && !sendButton.disabled) { originalMessage = queuedMessage; sendButton.click(); isWaitingForClear = true; } }, 50); } } function handleKeyDown(e) { if (e.key === 'Enter' && !e.shiftKey && !e.altKey && !e.ctrlKey && !e.metaKey) { const textarea = e.target; if (textarea.value.trim() === '') return; // Store original message before submission originalMessage = textarea.value.trim(); // Check if message was accepted within 500ms setTimeout(() => { if (textarea.value !== '') { queueCount++; queueDisplay.querySelector('span').textContent = `Queue: ${queueCount}`; isWaitingForClear = true; } }, 500); } } function init() { createQueueDisplay(); // Observe textarea for clearing events const textareaObserver = new MutationObserver((mutations) => { mutations.forEach(mutation => { if (mutation.target.value === '' && isWaitingForClear) { isWaitingForClear = false; if (queueCount > 0) { queueCount--; queueDisplay.querySelector('span').textContent = `Queue: ${queueCount}`; trySendMessage(); } } }); }); const textarea = document.getElementById('prompt-textarea'); if (textarea) { textarea.addEventListener('keydown', handleKeyDown); textareaObserver.observe(textarea, { attributes: true, attributeFilter: ['value'] }); } } // Start the script init(); })();