diff --git a/.gitignore b/.gitignore index d344ba6..0000819 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ config.json +config.json diff --git a/commands/dev/infra.js b/commands/dev/infra.js new file mode 100644 index 0000000..e9b5d6d --- /dev/null +++ b/commands/dev/infra.js @@ -0,0 +1,65 @@ +const os = require('os'); +const fs = require('fs'); + + +const cpuInfo = os.cpus()[0].model; // modèle du CPU +const cpuCores = os.cpus().length; // nombre de coeurs + +const totalRAM = (os.totalmem() / (1024 ** 3)).toFixed(2); // en Go +const freeRAM = (os.freemem() / (1024 ** 3)).toFixed(2); // en Go + +function getOS() { + const platform = os.platform(); // ex: win32, linux + const release = os.release(); // version du kernel / OS + switch (platform) { + case "win32": + return `Windows ${release}`; + case "darwin": + return `macOS ${release}`; + case "linux": + try { + const data = fs.readFileSync("/etc/os-release", "utf8"); + const match = data.match(/PRETTY_NAME="(.+)"/); + if (match) return `${match[1]} (kernel ${release})`; + } catch { + return `Linux ${release}`; + } + default: + return `${platform} ${release}`; + } +} + +const uptime = os.uptime(); // en secondes + +function formatUptime(seconds) { + const days = Math.floor(seconds / 86400); + const hours = Math.floor((seconds % 86400) / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + const secs = Math.floor(seconds % 60); + + return `${days}j ${hours}h ${minutes}m ${secs}s`; +} + + +const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); + +module.exports = { + category: 'dev', + data: new SlashCommandBuilder() + .setName('infra') + .setDescription('Voir l’infrastructure du bot'), + async execute(interaction) { + const embed = new EmbedBuilder() + .setTitle('Infrastructure du bot') + .setColor('Blue') + .addFields( + { name: 'CPU', value: `${cpuInfo} (${cpuCores} coeurs)`, inline: true }, + { name: 'RAM', value: `${freeRAM} Go libres / ${totalRAM} Go totaux`, inline: true }, + { name: 'OS', value: getOS(), inline: true }, + { name: 'Uptime', value: formatUptime(uptime), inline: true } + ) + .setTimestamp(); + + await interaction.reply({ embeds: [embed], ephemeral: true }); + } +}; diff --git a/config.json b/config.json index 42872de..86d7e09 100644 --- a/config.json +++ b/config.json @@ -1,4 +1,4 @@ { - "token": "-", + "token": "MTQwNzE2NDE4NDM3Mzg4NzAzOA.GTKr90.U2ootmaOWuycn4ZqbE4kqSpQqeVGvw7Zj5vHgM", "clientId": "1407164184373887038" }