const { SlashCommandBuilder } = require('discord.js');
const axios = require('axios');

module.exports = {
	data: new SlashCommandBuilder()
		.setName('start-server')
		.setDescription('Démarre le serveur Palworld s\'il n\'est pas déjà en cours d\'exécution'),
	async execute(interaction, headers) {

		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 {
			// Vérifier l'état actuel du serveur
			const statusResponse = await axios.get('https://panel.louismazin.ovh/api/client/servers/ae4a628f/resources', {
				headers: headers
			});

			const currentState = statusResponse.data.attributes.current_state;

			if (currentState === 'running') {
				await interaction.editReply('✅ Le serveur Palworld est déjà en cours d\'exécution !');
				return;
			}

			// Démarrer le serveur
			await axios.post('https://panel.louismazin.ovh/api/client/servers/ae4a628f/power', {
				signal: 'start'
			}, {
				headers: headers
			});

			await interaction.editReply('🚀 Commande de démarrage envoyée au serveur Palworld ! Le serveur va démarrer dans quelques instants...');

			// Vérifier l'état du serveur toutes les 5 secondes jusqu'à ce qu'il soit en cours d'exécution
            
            var run = false;
            while (!run) {
                await new Promise(resolve => setTimeout(resolve, 5000));
                try {
                    const checkResponse = await axios.get('https://panel.louismazin.ovh/api/client/servers/ae4a628f/resources', {
                        headers: headers
                    });

                    const newState = checkResponse.data.attributes.current_state;
                    
                    if (newState === 'running') {
                        run = true;
                        await interaction.editReply('✅ Le serveur Palworld a été démarré avec succès !');
                    }
                } catch (error) {
                    console.error('Erreur lors de la vérification de l\'état du serveur:', error);
                }
            }

		} catch (error) {
			console.error('Erreur lors du démarrage du serveur:', error);
			await interaction.editReply('❌ Erreur lors du démarrage du serveur. Veuillez réessayer plus tard.');
		}
	},
};
