Aternos Auto START Bot

Will auto-click the "Start/Confirm" button in Aternos. Features an button.

// ==UserScript==
// @name         Aternos Auto START Bot
// @namespace    https://www.lstv.ml
// @version      0.5.8.1
// @description  Will auto-click the "Start/Confirm" button in Aternos. Features an button.
// @author       LSTV
// @match        https://aternos.org/server/*
// @grant        none
// @icon           data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAZlBMVEUrh9P///8si9kuj+BfpN08kdez1PBAk9a82fEtjdw3j9a21u/2+v1LmtpVn9wsiteozu1lqN/E3vN1seJ8teTX6PcwitMvlenD3fPd7PjQ5PWGuuXw9/w8l+I4kttaot6cx+tLmt5JjPpNAAACc0lEQVR4nO3d23KqMBSAYRTkpMgWKiBaD+//kt1tbkrJclwlG7Od/7/sTBO+oTMd0yQNmoCIiIiIiIiIiCgIyqWP/QLS5Cv/ytXLcGV+XMceVmjfyTLpFj4WhWpI+uxntgbEt4D4FhDfAuJbQEyndK0rPUhPsqli5Vi9Q0ic5LrejxKk3551Q50vDiF/mkz3saF9kyBdEuqGCguXkLzUfXsoQqpbphsqA/IVEBOQcUBMQExAxgExATEBGQfEBMQEZBwQExDTy0DuLT74CbF/vbzzRsRVlGdCyry2t4slyKHeXqxtnwnJttLz6tuv7O8ECBAgQIAAAQIEyGfXSNeu3vsJidpQVZt/n8MjyE75kWmZrIEAAQIECJD/ClLaf2m3g0kmQqQ5EoeQ/k1YiLu6g5yOj8wxy57GaZDHAgIECBAgQIAAAQIECBAgQIAAAQLkccimSjtLaTc4yToNsukra/1gjomQrkjsDU6yToP0l1th61Y7hMSNdUdllg0mmQZJmzCz5fSIa5wLe0BdQoQ5fvwJHAgQIECAvCwk0t7msPIUUp9119adi++3qnkE6bUXyqUnPyHTAgIECBAgQIC8EqR7KiRS30G3OOwP1h48SPCPIIH+DrrLu32tLxdmmAkifNRoxZ858Q466Xz2TBChe8fAtefZgXwFxARkHBATEBOQcUBMQExAxgExATEBGQfEBMQEZJxbSGDfgiQmr6JUiXIop9ucKmFTmNjtuhDa77RDDV7u1D2NG22SY+pQ/P8R3wLiW0B8C4hvAfGtX0CqZz+zNTUkaArljXLz1CjvtP5bprtQbqb0DiIiIiIiIiIiesU+AFRirLdQ+iC6AAAAAElFTkSuQmCC
// ==/UserScript==

//Following code is the START and CONFIRM clicker

startTheServer();
function startTheServer() {
    console.clear()
isRunning = false;
if (botON) {
setTimeout(
    function () {
        antiBanCheckIfUnused();
        setTimeout(
            function () {
                if (isRunning) {
                    console.clear()
                    console.log("Bot tick has been completed, server has been sucessfully started.");
                    document.querySelector('div[id="confirm"]').click();
                    document.querySelector('div[id="start"]').click();
                    console.clear()
                    startTheServer();
                }else{
                    console.clear()
                     console.log("Bot tick has been completed, but the server status is not in requied state. Waiting...");
                    console.clear()
                    startTheServer();
                }
            }, 200
        );
    }, 900
);
} else {
    setTimeout(
        function () {
            startTheServer();
        }, 100
    );
}
}

//Following code is the button onclick and vars;

var repeatingSpamFunction = null;
var isMobileVersion = null;
var botON = false;
var isRunning = false;


function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}

createonoffButton();

function myfunc (zEvent) {
    if (botON) {
    alert ("The Aternos Auto Start bot has been turned off!");
    changeonoffButtonFALSE();
    botON = false;
     } else {
    alert ("The Aternos Auto Start bot has been turned on!");
    changeonoffButtonTRUE();
    botON = true;
     }
}

var myDiv = document.querySelector ("#onoffButton");
if (myDiv) {
    myDiv.addEventListener ("click", myfunc , false);
}

//Following code is the ON/OFF button script

function createonoffButton () {
  var composeBar = getElementByXpath("/html/body/div[2]/main/section/div[3]/div[4]");
  var onoffButton = document.createElement('button');
  onoffButton.setAttribute("id", "onoffButton");
  onoffButton.innerHTML = 'AutoStart bot is OFF';
  onoffButton.style.fontSize = '200%'
  onoffButton.style.backgroundColor = '#999999';
  onoffButton.style.borderRadius = '3px';
  onoffButton.style.padding = '5px 15px 5px 15px';
  onoffButton.style.marginTop = 'auto';
  onoffButton.style.fontWeight = 'bold';
  onoffButton.style.marginBottom = 'auto';
  onoffButton.style.outline = "none";
  onoffButton.style.boxShadow = "none";
  onoffButton.style.color = '#FFFFFF';
  onoffButton.style.height = "73px";
  composeBar.append(onoffButton);
}

function changeonoffButtonTRUE () {
  var composeBar = getElementByXpath("/html/body/div[2]/main/section/div[3]/div[4]");
  var onoffButton = document.getElementById('onoffButton');
    onoffButton.style.cursor = 'pointer';
    onoffButton.innerHTML = 'AutoStart bot is ON';
    onoffButton.style.color = '#FFFFFF';
    onoffButton.style.backgroundColor = '#308fe3';
    onoffButton.onclick = function(){
    };
}

function changeonoffButtonFALSE () {
  var composeBar = getElementByXpath("/html/body/div[2]/main/section/div[3]/div[4]");
  var onoffButton = document.getElementById('onoffButton');
    onoffButton.style.cursor = 'pointer';
    onoffButton.innerHTML = 'AutoStart bot is OFF';
    onoffButton.style.backgroundColor = '#999999';
    onoffButton.style.color = '#FFFFFF';
    onoffButton.onclick = function(){
    };
}

// And the following code is to prevent from detecting and IP banning. Also removes the error popups made by bot.

function antiBanCheckIfUnused() {
        isMobileVersion = document.getElementsByClassName('status online');
        if (isMobileVersion.length > 0) {
         isRunning = false;
         } else {
             isMobileVersion = document.getElementsByClassName('status loading');
             if (isMobileVersion.length > 0) {
                 isRunning = false;
             } else {
                 isMobileVersion = document.getElementsByClassName('status loading starting');
                 if (isMobileVersion.length > 0) {
                     isRunning = false;
                 } else {
                     isRunning = true;
                 }
             }
         }
}