Files
PteroStats/events/ready.js
Hirzi 6e8e934b22 1.1.0 Release
Now you dont need to add more axios code to add more nodes
Remove Databases Stats for now
2021-07-08 18:28:26 +07:00

142 lines
4.9 KiB
JavaScript

module.exports = client => {
let nodelist = [
{
id: "Server ID",
name: "**Example Server 1**",
nameid: "Node1"
},
{
id: "Server ID",
name: "**Example Server 2**",
nameid: "Node2"
},
]
const { MessageEmbed } = require("discord.js");
const axios = require("axios");
const db = require("quick.db");
const ping = require("ping-tcp-js");
const chalk = require("chalk");
const config = require("../config.json");
let hosturl = config.panelurl;
let apikey = config.clientapikey;
let ch = client.channels.cache.find(cn => cn.id === config.channel);
let statusonline = config.monline;
let statusoffline = config.moffline;
let checking = config.mcheck
let adminapikey = config.adminapikey;
let hostname = config.hostname;
let time = config.time
setInterval(() => {
client.user.setActivity(hostname + `Panel Stats`, { type: "WATCHING" });
}, 10000);
console.log("=+=+=+=+=+=+=+=+=+=+=+=");
console.log("Name: PteroStats");
console.log("Version: Alpha");
console.log("=+=+=+=+=+=+=+=+=+=+=+=");
//PteroStats Checker
setInterval(() => {
if(isNaN(time)) return console.log(chalk.blue("[PteroStats Checker] ") + chalk.red(time + "is not a number!"))
//Node Status Checker
let list = []
nodelist.forEach(data => {
if(data.id === "Server ID") return console.log(chalk.blue("[PteroStats Checker] ") + chalk.red("You need to use a valid server"))
let id = data.id.replace(/\,/g)
axios(`${hosturl}/api/client/servers/${data.id}/resources`, {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${apikey}`
}
}).then((response) => {
db.set(data.nameid, `${data.name}: ${statusonline}`);
}).catch(() => {
db.set(data.nameid, `${data.name}: ${statusoffline}`);
console.log(chalk.blue("[PteroStats Checker] ") + chalk.red(data.name + " is down!"))
});
let msgStats = db.get(data.nameid) + '\n'
list.push(msgStats)
})
//Panel Status Checker
//ServerList
axios(`${hosturl}/api/application/servers`, {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${adminapikey}`
}
}).then(response => {
let res = response.data.meta.pagination.total;
db.set("serverCount", res);
}).catch(err => {
db.set("serverCount", "N/A");
console.log(chalk.blue("[PteroStats Checker] ") + chalk.red("Panel is down"))
});
//Userlist
axios(`${hosturl}/api/application/users`, {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${adminapikey}`
}
}).then(response => {
let res = response.data.meta.pagination.total;
db.set("userCount", res);
}).catch(err => {
db.set("userCount", "N/A");
console.log(chalk.blue("[PteroStats Checker] ") + chalk.red("Panel is down!"))
});
let userCount = db.get("userCount")
let serverCount = db.get("serverCount")
//embed
if(userCount === null) userCount = checking;
if(serverCount === null) serverCount = checking;
if(userCount !== "N/A") db.set("panel", `**Panel**: ${statusonline}`);
if(userCount === "N/A") {
db.set("panel", `**Panel**: ${statusoffline}`);
console.log(chalk.blue("[PteroStats Checker] ") + chalk.red("panel is down!"))
}
if(userCount === checking) db.set("panel", `**Panel**: ${checking}`);
let panel = `${db.get("panel")}\n\nUsers: ${userCount}\nServers: ${serverCount}`;
if (panel === null) panel = `**Panel**: checking status\n\nUsers: ${userCount}\nServers: ${serverCount}`;
let nodes
list.forEach((message) => {
if(!nodes) nodes = message
nodes = nodes + message
})
let nodemessage = `__**Nodes Stats**__\n${nodes}\n\n__**Panel Stats**__\n${panel}`;
let embed = new MessageEmbed()
.setTitle(`${hostname} Uptime`)
.setColor(config.embedcolor)
.setDescription(nodemessage)
.setTimestamp()
.setFooter("Updated every 1 minutes | By Hirzi#8701")
.setThumbnail(client.user.avatarURL());
ch.send(embed).then(msg => {msg.delete({ timeout: time + "000" });});
console.log(chalk.blue("[PteroStats Checker] ") + chalk.green("Posted Stats"));
if (panel !== null)
console.log(chalk.blue("[PteroStats Checker] ") + chalk.green("Stats Updated")
);
console.log(chalk.blue("[PteroStats Checker] ") +chalk.green("Updating Stats in " + time + " Seconds"));
}, time + "000");
};