85 lines
2.9 KiB
JavaScript
85 lines
2.9 KiB
JavaScript
const { SlashCommandBuilder } = require('discord.js');
|
|
const axios = require('axios');
|
|
|
|
module.exports = {
|
|
data: new SlashCommandBuilder()
|
|
.setName('reboot-server')
|
|
.setDescription('Redémarre le serveur Palworld'),
|
|
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/ae4a628f/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/ae4a628f/command', {
|
|
command: 'save'
|
|
}, {
|
|
headers: headers
|
|
});
|
|
|
|
await axios.post('https://panel.louismazin.ovh/api/client/servers/ae4a628f/command', {
|
|
command: "broadcast '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/ae4a628f/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/ae4a628f/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/ae4a628f/resources', {
|
|
headers: headers
|
|
});
|
|
|
|
const newState = checkResponse.data.attributes.current_state;
|
|
|
|
if (newState === 'running') {
|
|
run = true;
|
|
await interaction.editReply('✅ Le serveur Palworld 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.');
|
|
}
|
|
},
|
|
}; |