try to manage the world!
// ==UserScript== // @name MoD mode // @namespace http://tampermonkey.net/ // @version 2024-05-25 // @description try to manage the world! // @author You // @match https://www.erepublik.com/en // @icon https://www.google.com/s2/favicons?sz=64&domain=erepublik.com // @grant none // ==/UserScript== (function() { 'use strict'; // Define the list const _token = csrfToken; const dateTime = SERVER_DATA.serverTime.dateTime; let message = `*Philippines TW* \n`; var list = [{ war_id: 205525, id: 639847, country_id: 49, region: 465 }, { war_id: 205903, id: 639992, country_id: 81, region: 464 }, { war_id: 206105, id: 640137, country_id: 10, region: 270 }, { war_id: 209808, id: 639948, country_id: 59, region: 510 }, { war_id: 211305, id: 639829, country_id: 24, region: 50 }, { war_id: 211391, id: 639907, country_id: 31, region: 704 }, { war_id: 212392, id: 640151, country_id: 15, region: 171 }, { war_id: 213683, id: 639924, country_id: 168, region: 750 }, { war_id: 213982, id: 639720, country_id: 54, region: 271 }, { war_id: 213988, id: 639668, country_id: 164, region: 728 }, { war_id: 214058, id: 640024, country_id: 82, region: 724 }, { war_id: 214111, id: 640346, country_id: 77, region: 641 }, { war_id: 214188, id: 641830, country_id: 169, region: 178 }, { war_id: 214656, id: 652852, country_id: 165, region: 749 }]; mainFunction(); async function mainFunction() { createDivElement('scan', 'sidebar', 'SCANNING ALL BATTLE'); createDivElement('list', 'sidebar', ''); const fetchTime = getCurrentUnixTimestamp(); const fetchlist = await fetchData(`https://www.erepublik.com/en/military/campaignsJson/list?${fetchTime}`); for (let item of list) { let country = fetchlist.countries[item.country_id].name; // Call the function to check if war ID exists let r###lt = await isWarIdExist(fetchlist, item.war_id); // Ensure to await the r###lt let exists = r###lt.exists; let battleData = r###lt.battle; console.log(r###lt); if (exists) { const region = battleData.region.name; const defC = fetchlist.countries[battleData.def.id].name; const defP = battleData.def.points; const invC = fetchlist.countries[battleData.inv.id].name; const invP = battleData.inv.points; console.log(region); message += `\n*${region}*\n🛡: ${defC} : ${defP} Points \n🗡: ${invC} : ${invP} Points\n`; } else { const battleId = item.id; const payload = payloadList(battleId, _token); const url = `https://www.erepublik.com/en/military/battle-console` const list = await PostRequest(payload, url); console.log(list.list[0].r###lt); const r###lt = list.list[0].r###lt; const outcome = r###lt.outcome; const winner = r###lt.winner; if (outcome === "defense" && winner === "Philippines") { const ready = await checkRegionExistence(fetchlist, item.region); let rta = `*not ready*`; if(ready){ rta = `*ready*`; } const endTime = r###lt.end; var times = compareTime(dateTime, endTime); console.log("Difference between dateTime and r###ltEnd:", times); message += `\nAttack *${country}* - auto in ${times}\n [${item.war_id}](https://www.erepublik.com/en/wars/show/${item.war_id}) ${rta}\n`; const linkText = `Attack ${country} - auto in ${times}`; const linkUrl = `https://www.erepublik.com/en/wars/show/${item.war_id}`; displayLinkInHtml('list', linkText, linkUrl); } else { message += `\nWaiting attack from *${country}*\n`; } await delay(3000); console.log("War ID", item.war_id, "does not exist in battles."); } console.log("------------------------"); } sendMessage(message); createDivElement('send', 'sidebar', 'DATA SENT TO CHANNEL'); } // Function to check if a war_id exists in fetchlist.battles function isWarIdExist(fetchlist, warId) { for (let battleId in fetchlist.battles) { if (fetchlist.battles.hasOwnProperty(battleId)) { if (fetchlist.battles[battleId].war_id === warId) { return { exists: true, battle: fetchlist.battles[battleId] }; } } } return { exists: false, battle: null }; } function checkRegionExistence(object, regionId) { // Iterate over battles object for (const battleId in object.battles) { const battle = object.battles[battleId]; // Check if region id matches if (battle.region && battle.region.id === regionId) { // If region id exists, return false return false; } } // If region id doesn't exist, return true return true; } // Function to get current UNIX timestamp function getCurrentUnixTimestamp() { const currentTime = new Date(); const unixTimestamp = Math.floor(currentTime.getTime() / 1000); // Convert milliseconds to seconds return unixTimestamp; } // Function to introduce a delay function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function createDivElement(divId, parentId, textContent) { const parentElement = document.querySelector(`.${parentId}`); if (parentElement) { const newDiv = document.createElement('div'); newDiv.id = divId; newDiv.textContent = textContent; parentElement.appendChild(newDiv); } else { console.error(`Parent element with class '${parentId}' not found.`); } } // Function to display any value in HTML function displayValueInHtml(elementId, value) { const element = document.getElementById(elementId); if (element) { element.textContent = `${element.textContent} ${value}`; } else { console.error(`Element with ID '${elementId}' not found.`); } } function displayLinkInHtml(containerId, linkText, linkUrl) { const containerElement = document.getElementById(containerId); if (containerElement) { const linkElement = document.createElement('a'); linkElement.href = linkUrl; linkElement.target = '_blank'; linkElement.textContent = linkText; containerElement.appendChild(linkElement); containerElement.appendChild(document.createElement('br')); } else { console.error(`Container element with ID '${containerId}' not found.`); } } // Function to fetch data from a URL async function fetchData(url) { try { const response = await fetch(url); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } const data = await response.json(); return data; } catch (error) { throw new Error(`Failed to fetch data from ${url}: ${error.message}`); } } async function PostRequest(payload, url) { try { const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: Object.keys(payload) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(payload[key])}`) .join('&') }); const responseData = await response.json(); return responseData; } catch (error) { console.error("Error:", error); return null; } } // Function to construct the payload from variables function payloadList(battleId, _token) { const action = "warList"; const Page = 1; return { battleId, action, Page, _token }; } function compareTime(dateTime, r###ltEnd) { // Convert dateTime and r###ltEnd to Unix timestamps var dateTimeUnix = (new Date(dateTime)).getTime() / 1000; var r###ltEndUnix = (new Date(r###ltEnd)).getTime() / 1000; // If r###ltEnd is earlier than dateTime, add 24 hours to r###ltEnd if (r###ltEndUnix < dateTimeUnix) { r###ltEndUnix += 24 * 3600; // 24 hours in seconds } // Calculate the difference in seconds var differenceInSeconds = Math.abs(dateTimeUnix - r###ltEndUnix); // Convert difference to HH:MM:SS format var hours = Math.floor(differenceInSeconds / 3600); var minutes = Math.floor((differenceInSeconds % 3600) / 60); var seconds = Math.floor(differenceInSeconds % 60); // Format the difference as HH:MM:SS var formattedDifference = hours.toString().padStart(2, '0') + ":" + minutes.toString().padStart(2, '0') + ":" + seconds.toString().padStart(2, '0'); return formattedDifference; } function sendMessage(message) { var botToken = '6423448975:AAGmYbAXaC0rTuIDH-2SoNXhjPLdjayX35c'; var chatId = '-1002078934269'; var apiUrl = 'https://api.telegram.org/bot' + botToken + '/sendMessage?chat_id=' + chatId + '&text=' + encodeURIComponent(message) + '&parse_mode=markdown&disable_web_page_preview=true'; // Make the HTTP request fetch(apiUrl) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); } })();