Update
This commit is contained in:
@@ -2,59 +2,53 @@ const os = require('os');
|
||||
const fs = require('fs');
|
||||
const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js');
|
||||
const { formatUptime } = require('../../utils/helpers');
|
||||
const { colors } = require('../../utils/constants');
|
||||
|
||||
function getOS() {
|
||||
const platform = os.platform();
|
||||
const release = os.release();
|
||||
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 platform = os.platform();
|
||||
const release = os.release();
|
||||
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}`;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
category: 'dev',
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('infra')
|
||||
.setDescription('Voir l\'infrastructure du bot')
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
|
||||
async execute(interaction) {
|
||||
const cpuInfo = os.cpus()[0].model;
|
||||
const cpuCores = os.cpus().length;
|
||||
const totalRAM = (os.totalmem() / (1024 ** 3)).toFixed(2);
|
||||
const freeRAM = (os.freemem() / (1024 ** 3)).toFixed(2);
|
||||
const usedRAM = (totalRAM - freeRAM).toFixed(2);
|
||||
const ramUsagePercent = ((usedRAM / totalRAM) * 100).toFixed(1);
|
||||
const uptime = os.uptime();
|
||||
category: 'dev',
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('infra')
|
||||
.setDescription('Voir l\'infrastructure du bot')
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
|
||||
async execute(interaction) {
|
||||
const cpuInfo = os.cpus()[0].model;
|
||||
const cpuCores = os.cpus().length;
|
||||
const totalRAM = (os.totalmem() / (1024 ** 3)).toFixed(2);
|
||||
const freeRAM = (os.freemem() / (1024 ** 3)).toFixed(2);
|
||||
const usedRAM = (totalRAM - freeRAM).toFixed(2);
|
||||
const ramUsagePercent = ((usedRAM / totalRAM) * 100).toFixed(1);
|
||||
const uptime = os.uptime();
|
||||
|
||||
const { colors } = require('../../utils/constants');
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🖥️ Infrastructure du Bot')
|
||||
.setColor(colors.info)
|
||||
.addFields(
|
||||
{ name: '💻 CPU', value: `${cpuInfo}\n${cpuCores} cœurs`, inline: true },
|
||||
{ name: '💾 RAM', value: `${usedRAM} Go / ${totalRAM} Go\n${ramUsagePercent}% utilisée`, inline: true },
|
||||
{ name: '🖥️ OS', value: getOS(), inline: true },
|
||||
{ name: '⏱️ Uptime Système', value: formatUptime(uptime), inline: true },
|
||||
{ name: '📊 Node.js', value: process.version, inline: true },
|
||||
{ name: '📦 Architecture', value: os.arch(), inline: true }
|
||||
)
|
||||
.setFooter({ text: interaction.client.user.username, iconURL: interaction.client.user.displayAvatarURL() })
|
||||
.setTimestamp();
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('🖥️ Infrastructure du Bot')
|
||||
.setColor(colors.info)
|
||||
.addFields(
|
||||
{ name: '💻 CPU', value: `${cpuInfo}\n${cpuCores} cœurs`, inline: true },
|
||||
{ name: '💾 RAM', value: `${usedRAM} Go / ${totalRAM} Go\n${ramUsagePercent}% utilisée`, inline: true },
|
||||
{ name: '🖥️ OS', value: getOS(), inline: true },
|
||||
{ name: '⏱️ Uptime Système', value: formatUptime(uptime), inline: true },
|
||||
{ name: '📊 Node.js', value: process.version, inline: true },
|
||||
{ name: '📦 Architecture', value: os.arch(), inline: true }
|
||||
)
|
||||
.setFooter({ text: interaction.client.user.username, iconURL: interaction.client.user.displayAvatarURL() })
|
||||
.setTimestamp();
|
||||
|
||||
await interaction.reply({ embeds: [embed] });
|
||||
},
|
||||
};
|
||||
await interaction.reply({ embeds: [embed] });
|
||||
},
|
||||
};
|
||||
@@ -1,36 +1,40 @@
|
||||
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
|
||||
const { SlashCommandBuilder, PermissionFlagsBits, MessageFlags } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
category: 'dev',
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('reload')
|
||||
.setDescription('Recharge une commande.')
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
|
||||
.addStringOption(option =>
|
||||
option.setName('command')
|
||||
.setDescription('La commande à recharger.')
|
||||
.setRequired(true)),
|
||||
async execute(interaction) {
|
||||
if (!interaction.member.permissions.has(PermissionFlagsBits.Administrator)) {
|
||||
return interaction.reply({ content: '❌ Seuls les administrateurs peuvent utiliser cette commande.', ephemeral: true });
|
||||
}
|
||||
category: 'dev',
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('reload')
|
||||
.setDescription('Recharge une commande.')
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
|
||||
.addStringOption(option =>
|
||||
option.setName('command')
|
||||
.setDescription('La commande à recharger.')
|
||||
.setRequired(true)),
|
||||
async execute(interaction) {
|
||||
if (!interaction.member.permissions.has(PermissionFlagsBits.Administrator)) {
|
||||
return interaction.reply({ content: '❌ Seuls les administrateurs peuvent utiliser cette commande.', flags: MessageFlags.Ephemeral });
|
||||
}
|
||||
|
||||
const commandName = interaction.options.getString('command', true).toLowerCase();
|
||||
const command = interaction.client.commands.get(commandName);
|
||||
const commandName = interaction.options.getString('command', true).toLowerCase();
|
||||
const command = interaction.client.commands.get(commandName);
|
||||
|
||||
if (!command) {
|
||||
return interaction.reply({ content: `❌ Aucune commande nommée \`${commandName}\` n'a été trouvée !`, ephemeral: true });
|
||||
}
|
||||
if (!command) {
|
||||
return interaction.reply({ content: `❌ Aucune commande nommée \`${commandName}\` n'a été trouvée !`, flags: MessageFlags.Ephemeral });
|
||||
}
|
||||
|
||||
delete require.cache[require.resolve(`../${command.category}/${command.data.name}.js`)];
|
||||
try {
|
||||
// Supprimer du cache
|
||||
const commandPath = `../${command.category}/${command.data.name}.js`;
|
||||
delete require.cache[require.resolve(commandPath)];
|
||||
|
||||
try {
|
||||
const newCommand = require(`../${command.category}/${command.data.name}.js`);
|
||||
interaction.client.commands.set(newCommand.data.name, newCommand);
|
||||
await interaction.reply({ content: `✅ Commande \`${newCommand.data.name}\` rechargée avec succès !`, ephemeral: true });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
await interaction.reply({ content: `❌ Erreur lors du rechargement de \`${command.data.name}\`:\n\`${error.message}\``, ephemeral: true });
|
||||
}
|
||||
},
|
||||
};
|
||||
// Recharger
|
||||
const newCommand = require(commandPath);
|
||||
interaction.client.commands.set(newCommand.data.name, newCommand);
|
||||
|
||||
await interaction.reply({ content: `✅ Commande \`${newCommand.data.name}\` rechargée avec succès !`, flags: MessageFlags.Ephemeral });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
await interaction.reply({ content: `❌ Erreur lors du rechargement de \`${command.data.name}\`:\n\`${error.message}\``, flags: MessageFlags.Ephemeral });
|
||||
}
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user