您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Numbers each message in chat and allows clearing the counter
- // ==UserScript==
- // @name Manual Message Numbering
- // @namespace -
- // @version 1.4
- // @description Numbers each message in chat and allows clearing the counter
- // @author Clawberry
- // @match https://character.ai/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- let isCleared = false; // Tracks whether numbers are cleared or not
- // Function to number messages
- const numberMessage = (message, index) => {
- let numberSpan = message.querySelector('.message-number');
- if (!numberSpan) {
- numberSpan = document.createElement('span');
- numberSpan.classList.add('message-number');
- numberSpan.style.cssText = 'font-weight: bold; margin-right: 5px; color: #595959;';
- message.prepend(numberSpan);
- }
- numberSpan.textContent = `${index + 1}. `;
- };
- // Function to number all messages
- const numberAllMessages = () => {
- const messages = Array.from(document.querySelectorAll('.m-0:not(.swiper .m-0)'));
- messages.forEach(numberMessage);
- };
- // Function to clear message numbers
- const clearAllMessages = () => {
- const messages = Array.from(document.querySelectorAll('.message-number'));
- messages.forEach(span => {
- span.textContent = '';
- });
- };
- // Create the button and add event listeners
- const createButton = () => {
- const button = document.createElement('button');
- button.textContent = 'Update Message Counter';
- button.style.cssText = `
- position: fixed;
- bottom: 5px;
- right: 10px;
- z-index: 9999;
- padding: 5px 5px;
- background-color: #000;
- color: #FFF;
- border: none;
- border-radius: 5px;
- cursor: pointer;
- font-size: 0.7em;
- `;
- // Toggle between updating and clearing message numbers on button click
- button.addEventListener('click', () => {
- if (isCleared) {
- numberAllMessages(); // Add numbers back
- button.textContent = 'Clear Message Counter'; // Update button text
- } else {
- clearAllMessages(); // Clear numbers
- button.textContent = 'Update Message Counter'; // Update button text
- }
- isCleared = !isCleared; // Toggle state
- });
- document.body.appendChild(button);
- };
- // Observe the chat for new messages
- const observeChat = () => {
- const observer = new MutationObserver(numberAllMessages);
- const chatContainer = document.querySelector('.chat-container');
- if (chatContainer) {
- observer.observe(chatContainer, { childList: true, subtree: true });
- }
- };
- createButton();
- setTimeout(() => {
- numberAllMessages();
- observeChat();
- }, 1000);
- })();