Discourse++

Upgrade your Discourse cheer gaining with Discourse++ REMASTERED!

// ==UserScript==
// @name         Discourse++
// @namespace    http://tampermonkey.net/
// @iconURL      https://i.imgur.com/JM3zjkN.png
// @version      9.2
// @description  Upgrade your Discourse cheer gaining with Discourse++ REMASTERED!
// @author       nfeat & jfryy
// @match        */*
// @grant        none
// @license      MIT License
// ==/UserScript==
// SHOUTOUT: https://xem.github.io/terser-online/
// Online JS Minifier!
onload=function(){let e=3,t=0,n=0;const s=(()=>{let s,o=!1;function i(){o&&(window.scrollBy(0,Number(e)),0==t&&(t=1,n.click()),s=requestAnimationFrame(i))}return function(){o?(o=!1,cancelAnimationFrame(s)):(o=!0,i())}})();function o(){const e=(new Date).toISOString().split("T")[0];localStorage.getItem("limitDate")!==e&&(localStorage.setItem("maxLimit",5),localStorage.setItem("limitDate",e))}o(),parseInt(localStorage.getItem("maxLimit"),10);let i=localStorage.getItem("textPrompt"),a=localStorage.getItem("numPrompt"),r=JSON.parse(localStorage.getItem("checkPrompt"));e=localStorage.getItem("num2Prompt"),i||(i="Download [Discourse++](https://update.greasyfork.org/scripts/524171/Discourse%2B%2B.user.js) to help with all your spamming needs!"),a||(a="0"),r||(r=!0),e||(e="10");var c=setInterval((function(){document.querySelector(".discourse-root")&&(console.log("dp"),clearInterval(c),function(){const o=document.body.style.fontFamily,c=getComputedStyle(document.querySelector(":root")).getPropertyValue("--d-sidebar-background");let l=document.querySelector("img.avatar").src.split("/")[6],d=document.querySelector("img.avatar").src,p=document.createElement("script");p.textContent="\n        document.addEventListener('click', function(event) {\n            if (event.target.classList.contains('toast')) {\n                var clicked = event.target;\n                var opacity = 1;\n                var fade = setInterval(function() {\n                    clicked.style.opacity = '' + opacity;\n                    opacity -= 0.1;\n                    if (opacity <= 0) {\n                        clicked.remove();\n                        clearInterval(fade);\n                    }\n                }, 15);\n            }\n        });\n    ",document.documentElement.appendChild(p);let u=`\n<style>\n@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000&display=swap');\n.toast {\n    position:fixed;\n    bottom:20px;\n    right:20px;\n    padding:20px 30px;\n    background-color:${c};\n    text-align:left;\n    z-index:99999;\n    border:1px solid black;\n    font-family:${o}, Arial, sans-serif;\n    transition: transform 0.2s, background-color 0.2s;\n    border-radius:10px;\n      -webkit-user-select: none; /* Safari */\n  -ms-user-select: none; /* IE 10 and IE 11 */\n  user-select: none; /* Standard syntax */\n}\n.toast:hover {\n    transform: scale(1.1);\n    background-color:${c};\n}\nb{\n    height:1px;\n    width:1px;\n    overflow-y:visible;\n}\n</style>\n<div class="toast"><a class="mention" style="font-size:2em;">@${l} - <img src="${d}" class="avatar"></a><br>Welcome to using Discourse++,<br>the best tool for spamming in Discourse.</div>\n`,m=document.createElement("div");m.innerHTML=u,document.body.appendChild(m);var b=document.createElement("div");function g(e){return document.querySelectorAll("button.dpp-button")[e]}b.innerHTML='\n    <div data-section-name="discoursepp" class="sidebar-section sidebar-section-wrapper sidebar-section--expanded">\n    <div class="sidebar-section-header-wrapper sidebar-row"><button class="btn no-text sidebar-section-header sidebar-section-header-collapsable btn-transparent dpp-section" aria-controls="sidebar-section-content-chat-dms" aria-expanded="true" title="Toggle section" type="button"><span class="sidebar-section-header-caret"><img src="https://cdn4.iconfinder.com/data/icons/logos-and-brands/512/92_Discourse_logo_logos-512.png" style="width:20px;height:20px"></span><span class="sidebar-section-header-text">Discourse++</span></button></div>\n    <ul id="sidebar-section-content-discoursepp" class="sidebar-section-content">\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Create a new reply" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-reply svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#reply"></use></svg></span><span class="sidebar-section-link-content-text">New Reply</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Create a new topic" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-plus svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#plus"></use></svg></span><span class="sidebar-section-link-content-text">New Topic</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Find a topic" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-magnifying-glass svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#magnifying-glass"></use></svg></span><span class="sidebar-section-link-content-text">Find Topic</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Like" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-robot svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#heart"></use></svg></span><span class="sidebar-section-link-content-text">Like Spam</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Autoscroll" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-mouse svg-icon svg-string" xmlns="htttp://www.w3.org/2000/svg"><i class="fa-solid fa-computer-mouse"></i></svg></span><span class="sidebar-section-link-content-text a17">Autoscroll</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Automatic" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-robot svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#robot"></use></svg></span><span class="sidebar-section-link-content-text">Automatic</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Home" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-house svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#house"></use></svg></span><span class="sidebar-section-link-content-text">Home</span></button></li>\n        <li class="sidebar-section-link-wrapper"><button class="sidebar-section-link sidebar-row dpp-button" title="Settings" type="button"><span class="sidebar-section-link-prefix image"><svg class="fa d-icon d-icon-gear svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#gear"></use></svg></span><span class="sidebar-section-link-content-text">Settings</span></button></li>\n    </ul>\n</div>\n<style>\n    .dpp-button{background-color:var(--secondary);border:none}\n    .sidebar-section-header-wrapper.sidebar-row{transition:background-color 0.4s;}\n    .sidebar-section-header-wrapper.sidebar-row:hover{background-color:#383838;}\n</style>',document.querySelector("div.sidebar-sections").appendChild(b),document.querySelector("div.sidebar-wrapper").style.position="fixed",document.querySelector("div.sidebar-wrapper").style.display="block",document.querySelector("div.sidebar-wrapper").style.width="17em",document.querySelector(".dpp-section").onclick=function(){console.log(document.querySelector("#sidebar-section-content-discoursepp").style.display),"none"===document.querySelector("#sidebar-section-content-discoursepp").style.display?document.querySelector("#sidebar-section-content-discoursepp").style.display="block":document.querySelector("#sidebar-section-content-discoursepp").style.display="none",document.querySelector(".timeline-scroller").click()};var v=g(0),y=g(1),f=g(2),h=g(6),w=g(5),k=g(7);n=g(3);var x=g(4);function S(e){document.querySelector("div.toast")&&document.querySelector("div.toast").remove();let t=document.createElement("div");t.innerHTML=`<div class="toast">${e}</div>`,document.body.appendChild(t)}function E(){Math.floor(1e10*Math.random());return i+`<a${Array.from({length:20},()=>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()))).join("")}>`+"<br>".repeat(Number(a))+"@bot".repeat(Number(r))}function q(){var e=!0;var t=document.querySelector(".btn.btn-icon-text.btn-primary.create[title='begin composing a reply to this topic']");t&&(t.scrollIntoView(),t.click()),setTimeout((function(){var t=document.querySelector("textarea[aria-label='Type here. Use Markdown, BBCode, or HTML to format. Drag or paste images.']"),n="";if(t){n=e?E():"DOWNLOAD DISCOURSE+",n+="<br><br><a class='mention'>a Discourse++ post</a>",t.value=n,t.dispatchEvent(new Event("input",{bubbles:!0}));var s=document.querySelector(".btn.btn-icon-text.btn-primary.create[title='Or press Ctrl+Enter']");s&&setTimeout((function(){s.click()}),3e3)}}),1e3),S("Reply completed!")}h.onclick=function(){window.location.href="https://x-camp.discourse.group"},"true"===sessionStorage.getItem("ninespam")&&(sessionStorage.removeItem("ninespam"),q()),v.addEventListener("click",(function(){let e=location.pathname.split("/");e.length>=5&&e[4]!==document.querySelector(".timeline-replies").innerText.split("/")[1].replace(" ","")&&!sessionStorage.getItem("ninespam")?(sessionStorage.setItem("ninespam","true"),e[4]="99999",location.href=e.join("/")):q()})),y.addEventListener("click",(function(){var e=document.querySelector(".btn.btn-icon-text.btn-default#create-topic");e&&e.click(),setTimeout((function(){var e=document.querySelector("input[aria-label='Type title, or paste a link here']");if(e){var t="Random Title "+Math.random().toString(36).substring(7);e.value=t,e.dispatchEvent(new Event("input",{bubbles:!0}))}var n=document.querySelector("textarea[aria-label='Type here. Use Markdown, BBCode, or HTML to format. Drag or paste images.']");if(n){var s=E();s+="<br><br><a class='mention'>a Discourse++ post</a>",n.value=s,n.dispatchEvent(new Event("input",{bubbles:!0}));var o=document.getElementsByClassName("select-kit-header-wrapper")[4];o&&(o.click(),setTimeout((function(){var e=document.querySelector(".category-row.select-kit-row[data-index='1']");if(e){e.click();var t=document.querySelector(".btn.btn-icon-text.btn-primary.create[title='Or press Ctrl+Enter']");t&&setTimeout((function(){t.click()}),1e3)}}),1e3))}}),1e3),S("Topic created!")})),f.addEventListener("click",(function(){var e=document.querySelectorAll("img.avatar.latest"),t=document.querySelectorAll("td.main-link.clearfix.topic-list-data"),n=0;Array.from(e).forEach(e=>{e.title.includes(l)||t[n].click(),n+=1}),S("Found post!")})),w.addEventListener("click",(function(){S("Automatic started."),window.location.href.startsWith("https://x-camp.discourse.group/t")?(q(),setInterval((function(){q(),q()}))):window.location.href.startsWith("https://x-camp.discourse.group")?f.click():S("Not proper url!")})),n.addEventListener("click",(function(){var e=document.querySelectorAll("div.discourse-reactions-reaction-button");let n=0,s=setInterval(()=>{e[n]&&e[n].title||(t=0,S("Like spamming completed!"),clearInterval(s)),n<e.length&&null==document.querySelector(".dialog-body")?("Like this post"==e[n].title&&e[n].click(),n++):(document.querySelector(".dialog-body p").innerText="You've reached your likes daily limit. Come back tommorow!",S("Like spamming completed!"),clearInterval(s))},500);S("Like spamming..")})),x.addEventListener("click",(function(){console.log(x.innerText);var e=document.querySelector(".a17");s(),"Autoscroll"==e.innerText?(S("Scrolling..."),e.innerText="Stop Autoscroll"):(S("Done Scrolling."),e.innerText="Autoscroll")})),k.addEventListener("click",(function(){var t=document.getElementsByClassName("discourse-root")[0],n=document.createElement("div");n.innerHTML=`\n        <style>\n        .dpp-dialog-body {padding-left:30px;}\n    .dpp-textarea-settings{width:80%;}\n</style>\n<div id="dialog-holder" class="dialog-container" aria-modal="true" tabindex="-1" role="dialog" aria-labelledby="dialog-title">\n    <div class="dialog-overlay" data-a11y-dialog-hide=""></div>\n    <div class="dialog-content" role="document">\n        <h1 style="padding:10px">Discourse++ Settings</h1>\n        <div class="dialog-body dpp-dialog-body">\n            <b>Set the text to spam with Discourse++</b><br><textarea class="dpp-textarea-settings">${i}</textarea><br>\n            <b>How many newlines at end?</b><br>\n            <input type="number" class="dpp-number-settings"><br>\n            <b>Ping @bot?</b><br>\n            <input type="checkbox" class="dpp-checkbox-settings"> Ping @bot?<br><br>\n            <b>How many pixels per recall on Autoscroll?</b><br>\n            <input type="number" class="dpp-number2-settings"><br>\n        </div>\n        <div class="dialog-footer"><button class="btn btn-text btn-primary dpp-dialog-button" type="button"><span class="d-button-label">OK</span></button></div>\n    </div>\n</div>\n`,n.style.padding="0",n.style.margin="0",t.appendChild(n),document.getElementsByClassName("dpp-checkbox-settings")[0].checked=r,document.getElementsByClassName("dpp-number-settings")[0].value=""+a,document.getElementsByClassName("dpp-number2-settings")[0].value=""+e,document.getElementsByClassName("dpp-dialog-button")[0].onclick=function(){localStorage.setItem("textPrompt",document.getElementsByClassName("dpp-textarea-settings")[0].value),localStorage.setItem("numPrompt",document.getElementsByClassName("dpp-number-settings")[0].value),localStorage.setItem("checkPrompt",JSON.stringify(document.getElementsByClassName("dpp-checkbox-settings")[0].checked)),i=document.getElementsByClassName("dpp-textarea-settings")[0].value,a=document.getElementsByClassName("dpp-number-settings")[0].value,r=document.getElementsByClassName("dpp-checkbox-settings")[0].checked,e=document.getElementsByClassName("dpp-number2-settings")[0].value;var t=1;const s=setInterval(()=>{t<=0?(clearInterval(s),n.remove()):(n.style.opacity=t,t-=.05)},10)}}))}())}),100)}