mirror of
https://github.com/HirziDevs/PteroStats
synced 2026-08-28 20:06:29 +00:00
New Features-Replace promises with async await, recoded and fixed bugs i could find, created seperate modules for calculation, made the pakcges intrigity check better, updated packages version
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
const fs = require("node:fs");
|
||||
const child = require("node:child_process");
|
||||
const path = require("node:path");
|
||||
|
||||
const REQUIRED_PACKAGES = [
|
||||
{
|
||||
name: "axios",
|
||||
version: "1.4.0",
|
||||
},
|
||||
{
|
||||
name: "axios-retry",
|
||||
version: "3.5.1",
|
||||
},
|
||||
{
|
||||
name: "chalk",
|
||||
version: "4.1.2",
|
||||
},
|
||||
{
|
||||
name: "discord.js",
|
||||
version: "14.11.0",
|
||||
},
|
||||
{
|
||||
name: "js-yaml",
|
||||
version: "4.1.0",
|
||||
},
|
||||
];
|
||||
const NODE_VERSION = 16;
|
||||
|
||||
function InstallPackages() {
|
||||
console.log("Required nodejs packages not found!");
|
||||
console.log("Please wait... starting to install all required node packages.");
|
||||
console.log(
|
||||
"If the bot can't install the packages please install them manually."
|
||||
);
|
||||
|
||||
try {
|
||||
let packagesList = "";
|
||||
|
||||
for (const package of REQUIRED_PACKAGES) {
|
||||
packagesList += ` ${package.name}@${package.version}`;
|
||||
}
|
||||
|
||||
child.execSync(`npm i${packagesList}`);
|
||||
console.log('Install complete!, please run "node index" command again!');
|
||||
|
||||
process.exit();
|
||||
} catch (err) {
|
||||
console.log("Error! ", err);
|
||||
console.log("Support Server: https://discord.gg/zv6maQRah3");
|
||||
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = () => {
|
||||
if (Number(process.version.split(".")[0]) < NODE_VERSION) {
|
||||
console.log(
|
||||
`Unsupported NodeJS Version!, Please use NodeJS ${NODE_VERSION}.x or higher.`
|
||||
);
|
||||
|
||||
process.exit();
|
||||
}
|
||||
|
||||
const nodeModulesFolderPath = path.join(__dirname, "../", "node_modules");
|
||||
|
||||
if (fs.existsSync(nodeModulesFolderPath)) {
|
||||
let success = false;
|
||||
let errorMessage = "";
|
||||
|
||||
for (const package of REQUIRED_PACKAGES) {
|
||||
const packageFilePath = path.join(
|
||||
__dirname,
|
||||
"../",
|
||||
"node_modules",
|
||||
package.name,
|
||||
"package.json"
|
||||
);
|
||||
|
||||
if (fs.existsSync(packageFilePath)) {
|
||||
let packageFile = fs.readFileSync(packageFilePath, 'utf-8');
|
||||
|
||||
if (packageFile) {
|
||||
packageFile = JSON.parse(packageFile);
|
||||
|
||||
if (
|
||||
Number(packageFile.version.split(".")[1]) !==
|
||||
Number(package.version.split(".")[1])
|
||||
) {
|
||||
console.log(
|
||||
`Unsupported "${package.name}" version!.\nPlease delete your "node_modules" and "package-lock.json".\nAnd restart the bot.`
|
||||
);
|
||||
|
||||
process.exit();
|
||||
} else {
|
||||
success = true;
|
||||
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
success = false;
|
||||
|
||||
errorMessage = `Unknown package version- "${package.name}".`;
|
||||
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
success = false;
|
||||
|
||||
errorMessage = `Missing package- "${package.name}".`;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
if (errorMessage) {
|
||||
console.log(errorMessage);
|
||||
}
|
||||
|
||||
InstallPackages();
|
||||
}
|
||||
} else {
|
||||
InstallPackages();
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
@@ -0,0 +1,44 @@
|
||||
const SUPPORTED_TYPES = ["MB", "GB", "TB"];
|
||||
|
||||
module.exports = (value, type) => {
|
||||
if (value && type) {
|
||||
value = parseInt(value);
|
||||
|
||||
if (value > 0) {
|
||||
if (SUPPORTED_TYPES.includes(type)) {
|
||||
let result = "";
|
||||
|
||||
switch (type) {
|
||||
case "MB":
|
||||
result =
|
||||
value.toFixed(2).toLocaleString().replace(".00", "") + " MB";
|
||||
break;
|
||||
case "GB":
|
||||
result =
|
||||
(value / 1024).toFixed(2).toLocaleString().replace(".00", "") +
|
||||
" GB";
|
||||
break;
|
||||
case "TB":
|
||||
result =
|
||||
(value / (1024 * 1000))
|
||||
.toFixed(2)
|
||||
.toLocaleString()
|
||||
.replace(".00", "") + " TB";
|
||||
break;
|
||||
default:
|
||||
result =
|
||||
value.toFixed(2).toLocaleString().replace(".00", "") + " MB";
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
} else {
|
||||
return "INVALID TYPE";
|
||||
}
|
||||
} else {
|
||||
return "INVALID VALUE";
|
||||
}
|
||||
} else {
|
||||
return "ERROR";
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
module.exports = (used, total) => {
|
||||
if (used && total) {
|
||||
used = parseInt(used);
|
||||
total = parseInt(total);
|
||||
|
||||
if (used >= 1 && total >= 1) {
|
||||
let percentage = ((used / total) * 100).toFixed(2).toLocaleString().replace(".00", "") + " %";
|
||||
|
||||
return percentage;
|
||||
} else {
|
||||
return "ERROR";
|
||||
}
|
||||
} else {
|
||||
return "ERROR";
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user