152 lines
5.8 KiB
JavaScript
152 lines
5.8 KiB
JavaScript
// require("../../requires")
|
|
// const Canvas = require("canvas");
|
|
|
|
|
|
// const { Chart } = require("chart.js");
|
|
const wait = require('util').promisify(setTimeout);
|
|
|
|
module.exports = {
|
|
name: "list_servers",
|
|
slashcommand:
|
|
new SlashCommandBuilder()
|
|
.setName("list_servers")
|
|
.setDescription("List my servers")
|
|
.addStringOption(option => option
|
|
.setName("server_identifier")
|
|
.setDescription("To get details on a server, you need to supply the server's identifier (ex : )")
|
|
)
|
|
.addStringOption(option => option
|
|
.setName("visibility")
|
|
.setDescription("Show the result only to yourself, or everyone in chat")
|
|
.addChoices(
|
|
{ name: 'public', value: '0' },
|
|
{ name: 'private', value: '1' }
|
|
)
|
|
)
|
|
|
|
,
|
|
slashcommandGlobal:true,
|
|
async function(interactionObject) {
|
|
let ephemeral = interactionObject.options.getString("visibility")
|
|
let serverid = interactionObject.options.getString("server_identifier")
|
|
if(ephemeral == undefined){
|
|
ephemeral = true
|
|
}else{
|
|
if(ephemeral == "1"){
|
|
ephemeral = true
|
|
}else{
|
|
ephemeral = false
|
|
}
|
|
}
|
|
|
|
|
|
await interactionObject.deferReply({ephemeral:ephemeral})
|
|
if(!await commands.get("profile_handler").function(interactionObject)){
|
|
interactionObject.editReply("You need to have an account in order to use this command, please register first")
|
|
return
|
|
}
|
|
|
|
if(serverid != undefined){
|
|
if(serverid.length != 8){
|
|
interactionObject.editReply("The server id you supplied is incorrect")
|
|
return
|
|
}
|
|
|
|
|
|
|
|
fetch(`${mainconfig.panel.url}/api/client/servers/${serverid}`,{
|
|
"method": "GET",
|
|
"headers": {
|
|
"Accept": "application/json",
|
|
"Content-Type": "application/json",
|
|
"Authorization": `Bearer ${await commands.get("profile_handler").getKey(interactionObject)}`,
|
|
'User-Agent': `${mainconfig.panel.useragent}`,
|
|
}
|
|
})
|
|
.then(async response => {
|
|
response = await response.json()
|
|
|
|
var response2 = await fetch(`${mainconfig.panel.url}/api/client/servers/${serverid}/resources`,{
|
|
"method": "GET",
|
|
"headers": {
|
|
"Accept": "application/json",
|
|
"Content-Type": "application/json",
|
|
"Authorization": `Bearer ${await commands.get("profile_handler").getKey(interactionObject)}`,
|
|
'User-Agent': `${mainconfig.panel.useragent}`,
|
|
}
|
|
})
|
|
|
|
var response2 = await response2.json()
|
|
var resources = response2.attributes.resources
|
|
|
|
var serverStatus
|
|
switch(response2.attributes.current_state){
|
|
case "running": serverStatus = "Running 🟢"; break;
|
|
case "starting": serverStatus = "Starting 🟡"; break;
|
|
case "offline": serverStatus = "Offline 🔴"; break;
|
|
default: serverStatus = "Unknown ⚫"; break;
|
|
}
|
|
|
|
var attributes = response.attributes
|
|
var limits = response.attributes.limits
|
|
var fields = [
|
|
{
|
|
"name": `Attributes`,
|
|
"value": `\`Status : ${serverStatus}\`\n\`Node : ${attributes.node}\`\n\`Is Owner : ${attributes.server_owner}\`\n\`Suspended : ${attributes.is_suspended}\`\n`,
|
|
},
|
|
{
|
|
"name": `Limits`,
|
|
"value": `\`CPU : ${Math.round(resources.cpu_absolute * 10) / 10}/${limits.cpu}%\`\n\`RAM : ${Math.round(resources.memory_bytes / 100000) / 10}/${limits.memory}MB\`\n\`DISK : ${Math.round(resources.disk_bytes / 100000) / 10}/${limits.disk}MB\`\n`,
|
|
},
|
|
]
|
|
var message = {
|
|
embeds:[{
|
|
color: `#F7A8B8`,
|
|
title: `${response.attributes.name}`,
|
|
fields:fields
|
|
}]
|
|
}
|
|
interactionObject.editReply(message)
|
|
})
|
|
.catch(err => console.error(err));
|
|
}
|
|
if(serverid != undefined)
|
|
return
|
|
|
|
|
|
|
|
|
|
fetch(`${mainconfig.panel.url}/api/client`,{
|
|
"method": "GET",
|
|
"headers": {
|
|
"Accept": "application/json",
|
|
"Content-Type": "application/json",
|
|
"Authorization": `Bearer ${await commands.get("profile_handler").getKey(interactionObject)}`,
|
|
'User-Agent': `${mainconfig.panel.useragent}`,
|
|
}
|
|
})
|
|
.then(async response => {
|
|
response = await response.json()
|
|
// console.log(response);
|
|
// console.log(response.data[0].attributes);
|
|
|
|
|
|
var message = ""
|
|
if(response.data.length == 0){
|
|
interactionObject.editReply(`You currently dont have any servers connected to your account`)
|
|
return
|
|
}
|
|
for (let i = 0; i < response.data.length; i++) {
|
|
// if(response.data[i].attributes.user == 9)
|
|
// console.log(response.data[i].attributes.name);
|
|
message += `\`${response.data[i].attributes.identifier}\` : ${response.data[i].attributes.name}\n`
|
|
}
|
|
if(message.length <= 4000){
|
|
interactionObject.editReply(message)
|
|
}else{
|
|
interactionObject.editReply(message.slice(0,3999))
|
|
}
|
|
})
|
|
.catch(err => console.error(err));
|
|
}
|
|
} |