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] }); } };