2026-02-01 19:50:27 +01:00

61 lines
2.1 KiB
JavaScript

const { SlashCommandBuilder } = require('discord.js');
const { checkRAMUsage, getMonitoringStatus } = require('../../ramMonitor.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('ram-status')
.setDescription('Affiche l\'utilisation actuelle de la RAM du serveur Palworld'),
async execute(interaction) {
if (!interaction.member.roles.cache.has('1444684935632912394')) {
await interaction.reply({ content: '❌ Il faut avoir le rôle Rygainland pour pouvoir utiliser cette commande.', flags: 64 });
return;
}
await interaction.deferReply();
try {
// Récupérer les informations sur la RAM
const ramInfo = await checkRAMUsage();
const monitorStatus = getMonitoringStatus();
if (!ramInfo) {
await interaction.editReply('❌ Impossible de récupérer les informations de RAM du serveur.');
return;
}
const { ramUsedGB, currentState } = ramInfo;
const thresholdGB = (monitorStatus.threshold / 1024).toFixed(2);
const percentUsed = ((ramInfo.ramUsedMB / monitorStatus.threshold) * 100).toFixed(1);
// Construire le message avec indicateur visuel
let indicator;
let color;
if (percentUsed < 70) {
indicator = '🟢';
color = 'Normale';
} else if (percentUsed < 90) {
indicator = '🟡';
color = 'Élevée';
} else {
indicator = '🔴';
color = 'Critique';
}
const message = `${indicator} **État de la RAM du serveur Palworld**\n\n` +
`📊 **Utilisation actuelle:** ${ramUsedGB} Go / ${thresholdGB} Go (${percentUsed}%)\n` +
`⚠️ **Seuil de redémarrage:** ${thresholdGB} Go\n` +
`🔄 **État du serveur:** ${currentState}\n` +
`💡 **Niveau:** ${color}\n\n` +
`${monitorStatus.isMonitoring ? '✅ Surveillance automatique active' : '⚠️ Surveillance automatique inactive'}\n` +
`${monitorStatus.isRebooting ? '🔄 Redémarrage en cours...' : ''}`;
await interaction.editReply(message);
} catch (error) {
console.error('Erreur lors de la récupération de l\'état RAM:', error);
await interaction.editReply('❌ Erreur lors de la récupération des informations du serveur.');
}
},
};