Character.AI Smart Auto-Continue

Automatically detects when a Character.ai bot message cuts off mid-sentence and prompts it to continue.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu budete musieť nainštalovať rozšírenie, ako je napríklad Tampermonkey alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         Character.AI Smart Auto-Continue
// @namespace    http://tampermonkey.net
// @version      1.0
// @description  Automatically detects when a Character.ai bot message cuts off mid-sentence and prompts it to continue.
// @author       YourName
// @license      MIT
// @match        https://character.ai*
// @match        https://*.character.ai/*
// @icon         https://google.com
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    // Function to check the text and trigger continuation
    function checkAndContinue() {
        // Find all bot message text elements on the screen
        const messages = document.querySelectorAll('.message-text, [data-testid="chat-message-text"]');
        if (messages.length === 0) return;

        // Get the very last message sent by the bot
        const lastMessage = messages[messages.length - 1];
        const text = lastMessage.innerText.trim();

        // Check if the text ends abruptly (not ending with ., !, ?, ", or »)
        const endsAbruptly = /[^.!??"»]$/.test(text);

        if (endsAbruptly && !lastMessage.dataset.autoContinued) {
            // Mark it so we don't loop infinitely on the same message
            lastMessage.dataset.autoContinued = "true";

            // Find Character.ai's chat input textarea
            const textarea = document.querySelector('textarea');
            
            if (textarea) {
                textarea.focus();
                textarea.value = '(continue)';
                
                // Trigger input event for the website's framework
                const event = new Event('input', { bubbles: true });
                textarea.dispatchEvent(event);
                
                // Click the send button after a tiny delay
                setTimeout(() => {
                    const sendButton = document.querySelector('button[type="submit"]') || 
                                       textarea.parentElement.querySelector('button');
                    if (sendButton) {
                        sendButton.click();
                    }
                }, 300);
            }
        }
    }

    // Run the check every 3 seconds to see if a new cut-off message arrived
    setInterval(checkAndContinue, 3000);
})();