const { SlashCommandBuilder } = require('discord.js');
const { checkRAMUsage, getMonitoringStatus } = require('../../src/monitoring/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.');
		}
	},
};
