ChatGPT自动接上文继续

让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送

目前为 2023-03-28 提交的版本。查看 最新版本

// ==UserScript==
// @name         ChatGPT自动接上文继续
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送
// @author       yedsn
// @match        https://chat.openai.com/chat*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=openai.com
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    let autoSendFlag = false;
    let checkboxContainer = null;

    // 创建checkbox
    (function generateCheckbox() {
        console.log("哈哈哈");
        // 创建checkbox
        checkboxContainer = document.createElement('button');
        checkboxContainer.classList.add('btn', 'relative', 'border-0', 'md:border');
        checkboxContainer.style.borderColor = 'rgba(86, 88, 105, 1)';
        checkboxContainer.style.color = 'rgba(217, 217, 227, 1)';

        const checkboxLabel = document.createElement('label');
        // checkboxContainer.style.position = 'fixed';
        // checkboxContainer.style.bottom = '20px';
        // checkboxContainer.style.left = '50%';
        // checkboxContainer.style.transform = 'translateX(-50%)';
        const checkbox = document.createElement('input');
        checkbox.style.marginRight = ".5rem";
        checkbox.type = 'checkbox';
        checkbox.id = 'auto-operate-checkbox';
        checkboxLabel.appendChild(checkbox);
        const label = document.createTextNode('中断后自动发送“请接上文继续”');
        checkboxLabel.appendChild(label);
        checkboxContainer.appendChild(checkboxLabel);

        checkbox.addEventListener('change', function() {
            autoSendFlag = this.checked;
        });
    })();

    // 创建一个 MutationObserver 实例,监听 body 元素内子元素的变化
    const observer = new MutationObserver(function(mutations) {

        // document.body.appendChild(checkboxContainer);
        if(!document.getElementById("auto-operate-checkbox")) {
            const btnNeutral = document.querySelector('.btn-neutral');
            if(btnNeutral) {
                btnNeutral.parentNode.insertBefore(checkboxContainer, btnNeutral);
            }
        }


        if(autoSendFlag) {

            // 执行自动发送
            const button = document.querySelector('.btn-neutral');
            if (button) {
                let buttonText = button.querySelector('div').textContent;
                if (buttonText.trim() == "Regenerate response") {
                    // 找到页面中最后一个不为 __next-route-announcer__ 的 p 元素
                    const paragraphs = Array.from(document.getElementsByTagName('p'));
                    const lastParagraph = paragraphs.filter(p => p.id !== '__next-route-announcer__').pop();

                    // 检查最后一个 p 元素内容是否以中文句号结尾
                    if (lastParagraph && !/\。$/.test(lastParagraph.textContent.trim())) {
                        setTimeout(function () {
                            // 找到 textarea 元素,并填充内容为 "请接上文继续"
                            const textarea = document.querySelector('textarea');
                            textarea.value = '请接上文继续';

                            // 找到与 textarea 同级的 button 元素,并点击它
                            const siblingButton = textarea.nextElementSibling;
                            siblingButton.click();
                        }, 1000);
                    }
                }
            }
        }
    });

    const observerConfig = { childList: true, subtree: true };
    observer.observe(document.body, observerConfig);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址