🏠 Home 

Stumblechat quoting

Generate a message quote by Shift + Clicking it.


Install this script?
// ==UserScript==
// @name         Stumblechat quoting
// @namespace    https://greasyfork.org/en/users/1244737
// @version      2
// @description  Generate a message quote by Shift + Clicking it.
// @author       robomoist
// @license      MIT
// @match        https://stumblechat.com/room/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=stumblechat.com
// @grant        none
// ==/UserScript==
/*
Shift + Click a name to quote it.
Or just a single message line for only that part.
*/
var settings = {
"Newlines": false
};
var inputChat = document.querySelector("#textarea");
var eventClickR = document.querySelector("#chat-wrapper").addEventListener('click', getQuote);
function getQuote(e) {
if (!e.shiftKey) return;
var elem = document.elementFromPoint(e.clientX, e.clientY);
if (!(elem.classList.contains("message") && elem.classList.contains("common"))
&&
!(elem.classList.contains("timestamp"))
&&
!(elem.classList.contains("nickname"))
) {
return;
}
if (elem.classList.contains("nickname")) {
var elemMsg = elem.parentElement;
var nick = elem.textContent;
var text = [];
var time = elemMsg.querySelector(".timestamp").textContent;
if (settings["Newlines"]) {
elem.parentElement.querySelectorAll(".message").forEach( e => text.push("> " + e.textContent) );
text = "\n" + text.join("\n");
var quoteOutput = ">" + nick + ": ["+ time + "] " + text;
}
else {
elem.parentElement.querySelectorAll(".message").forEach( e => text.push(e.textContent) );
text = text.join("		");
var quoteOutput = ">" + nick + ":	[" + time + "]\n>" + text;
}
}
else {
var elemMsg = elem.parentElement.parentElement;
var nick = elemMsg.querySelector(".nickname").textContent;
var text = elem.textContent;
var time = elem.parentElement.querySelector(".timestamp").textContent;
var quoteOutput = ">" + nick + ": \n>" + text + " ["+ time + "]";
}
inputChat.value = quoteOutput;
document.getSelection().removeAllRanges();
inputChat.focus(); // Chromium: often fails and doesn't work with a timeout or interval
}