// ==UserScript== // @name ChatLog // @namespace http://alphaoverall.com // @version 0.7 // @description Downloads all messages (including private) in current chat // @author AlphaOverall // @include *://www.kongregate.com/games/*/* // @downloadURL https://update.greasyfork.icu/scripts/11783/ChatLog.user.js // @updateURL https://update.greasyfork.icu/scripts/11783/ChatLog.meta.js // ==/UserScript== // Check for holodeck to load function check() { if (!holodeck) { setTimeout(check, 1000);} else { console.log("[ChatLog]: Holodeck loaded"); start(); } } check(); // Main function function start() { holodeck.addChatCommand("chatlog", function(l, msg){ let z = msg.match(/^\/\S+\s+(.+)/), type = ".txt"; // Allow an optional html download if (z && z[1] == "html") type = ".html"; // Get active chat message window and log let element = jQuery(".chat_room_template:visible .chat_message_window")[0]; let log = element.innerText; if (type === ".html") { // Add styling to html files // Just grabbed these from Kong, probably not comprehensive or all necessary log = ` `; log += `
${element.innerHTML}
`; } // Create link to download document let download = document.createElement("a"); download.href = "data:text/html;charset=UTF-8," + encodeURIComponent(log); download.target = "_blank"; // Set a unique name download.download = "Log_" + (new Date().toLocaleString()) + type; // Add element (needed for FF) document.body.appendChild(download); // Download it download.click(); // Remove element document.body.removeChild(download); // Don't send command to chat window return false; }); // Add /log as an optional form of command holodeck._chat_commands.log = holodeck._chat_commands.chatlog; }