- // ==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 result = await isWarIdExist(fetchlist, item.war_id); // Ensure to await the result
- let exists = result.exists;
- let battleData = result.battle;
- console.log(result);
- 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].result);
- const result = list.list[0].result;
- const outcome = result.outcome;
- const winner = result.winner;
-
- if (outcome === "defense" && winner === "Philippines") {
- const ready = await checkRegionExistence(fetchlist, item.region);
- let rta = `*not ready*`;
- if(ready){
- rta = `*ready*`;
- }
- const endTime = result.end;
- var times = compareTime(dateTime, endTime);
- console.log("Difference between dateTime and resultEnd:", 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, resultEnd) {
- // Convert dateTime and resultEnd to Unix timestamps
- var dateTimeUnix = (new Date(dateTime)).getTime() / 1000;
- var resultEndUnix = (new Date(resultEnd)).getTime() / 1000;
-
- // If resultEnd is earlier than dateTime, add 24 hours to resultEnd
- if (resultEndUnix < dateTimeUnix) {
- resultEndUnix += 24 * 3600; // 24 hours in seconds
- }
-
- // Calculate the difference in seconds
- var differenceInSeconds = Math.abs(dateTimeUnix - resultEndUnix);
-
- // 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));
- }
-
-
-
-
- })();