const { SlashCommandBuilder } = require('discord.js'); const axios = require('axios'); module.exports = { data: new SlashCommandBuilder() .setName('restart-server') .setDescription('Redémarre le serveur'), async execute(interaction, headers) { await interaction.deferReply(); try { // Vérifier l'état actuel du serveur const statusResponse = await axios.get('https://panel.louismazin.ovh/api/client/servers/' + process.env.PTERODACTYL_SERVER_ID + '/resources', { headers: headers }); const currentState = statusResponse.data.attributes.current_state; if (currentState !== 'running') { await interaction.editReply('⚠️ Le serveur n\'est pas en cours d\'exécution. Utilisez `/start-server` pour le démarrer.'); return; } // Étape 1: Sauvegarder le serveur await interaction.editReply('💾 Sauvegarde du serveur en cours...'); await axios.post('https://panel.louismazin.ovh/api/client/servers/' + process.env.PTERODACTYL_SERVER_ID + '/command', { command: 'save-all' }, { headers: headers }); await axios.post('https://panel.louismazin.ovh/api/client/servers/' + process.env.PTERODACTYL_SERVER_ID + '/command', { command: "say 'Redemarrage du serveur (Ca prends 20 secondes)'" }, { headers: headers }); // Attendre un peu pour la sauvegarde await new Promise(resolve => setTimeout(resolve, 2000)); // Étape 2: Arrêter le serveur await interaction.editReply('⏹️ Arrêt du serveur...'); await axios.post('https://panel.louismazin.ovh/api/client/servers/' + process.env.PTERODACTYL_SERVER_ID + '/power', { signal: 'stop' }, { headers: headers }); // Étape 3: Attendre 25 secondes await interaction.editReply('⏳ Attente de 25 secondes...'); await new Promise(resolve => setTimeout(resolve, 25000)); // Étape 4: Redémarrer le serveur await interaction.editReply('🚀 Redémarrage du serveur...'); await axios.post('https://panel.louismazin.ovh/api/client/servers/' + process.env.PTERODACTYL_SERVER_ID + '/power', { signal: 'start' }, { headers: headers }); 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/' + process.env.PTERODACTYL_SERVER_ID + '/resources', { headers: headers }); const newState = checkResponse.data.attributes.current_state; if (newState === 'running') { run = true; await interaction.editReply('✅ Le serveur a été redé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 redémarrage du serveur:', error); await interaction.editReply('❌ Erreur lors du redémarrage du serveur. Veuillez réessayer plus tard.'); } }, };