goofybot/commands/server/restart-server.js
2026-04-16 00:21:06 +02:00

85 lines
3.1 KiB
JavaScript

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.');
}
},
};