59 lines
3.1 KiB
JavaScript
59 lines
3.1 KiB
JavaScript
const { SlashCommandBuilder, EmbedBuilder, MessageFlags } = require('discord.js');
|
||
const { generateLinkCode, getUserLink } = require('../../database.js');
|
||
|
||
module.exports = {
|
||
data: new SlashCommandBuilder()
|
||
.setName('lier-rygainland')
|
||
.setDescription('Lier votre compte Discord à votre compte Palworld'),
|
||
|
||
async execute(interaction) {
|
||
try {
|
||
console.log('=== [LIER-RYGAINLAND] Début de l\'exécution ===');
|
||
console.log('[LIER-RYGAINLAND] Utilisateur:', interaction.user.tag, '(ID:', interaction.user.id + ')');
|
||
|
||
console.log('[LIER-RYGAINLAND] Vérification des liaisons existantes...');
|
||
const existingLink = await getUserLink(interaction.user.id);
|
||
console.log('[LIER-RYGAINLAND] Liaison existante:', existingLink);
|
||
if (existingLink) {
|
||
console.log('[LIER-RYGAINLAND] ⚠️ Utilisateur déjà lié à:', existingLink.palworld_username);
|
||
return interaction.reply({
|
||
content: `Vous êtes déjà lié au compte Palworld: **${existingLink.palworld_username}** (Steam ID: ${existingLink.steam_id})`,
|
||
flags: MessageFlags.Ephemeral
|
||
});
|
||
}
|
||
|
||
console.log('[LIER-RYGAINLAND] Génération d\'un nouveau code de liaison...');
|
||
const code = await generateLinkCode(interaction.user.id);
|
||
console.log('[LIER-RYGAINLAND] ✅ Code généré:', code);
|
||
|
||
const embed = new EmbedBuilder()
|
||
.setColor(0x00FF00)
|
||
.setTitle('🔗 Liaison de compte Rygainland')
|
||
.setDescription('Pour lier votre compte Discord à votre compte Palworld:')
|
||
.addFields(
|
||
{ name: '1️⃣ Étape 1', value: 'Connectez-vous sur le serveur Palworld' },
|
||
{ name: '2️⃣ Étape 2', value: `Tapez dans le chat du jeu:\n\`\`\`!lier ${code}\`\`\`` },
|
||
{ name: '⏱️ Expiration', value: 'Ce code expire dans **10 minutes**' },
|
||
{ name: '🔑 Votre code', value: `\`${code}\``, inline: false }
|
||
)
|
||
.setFooter({ text: 'Le système de surveillance démarre automatiquement' })
|
||
.setTimestamp();
|
||
|
||
console.log('[LIER-RYGAINLAND] Envoi de l\'embed avec le code...');
|
||
await interaction.reply({ embeds: [embed], flags: MessageFlags.Ephemeral });
|
||
console.log('[LIER-RYGAINLAND] ✅ Réponse envoyée avec succès');
|
||
console.log('[LIER-RYGAINLAND] Le système WebSocket va surveiller le code:', code);
|
||
|
||
// Le système checkAndManageWebSocket va détecter le nouveau code automatiquement
|
||
|
||
} catch (error) {
|
||
console.error('[LIER-RYGAINLAND] ❌ ERREUR CRITIQUE:', error);
|
||
console.error('[LIER-RYGAINLAND] Stack trace:', error.stack);
|
||
await interaction.reply({
|
||
content: '❌ Une erreur est survenue lors de la génération du code.',
|
||
flags: MessageFlags.Ephemeral
|
||
}).catch(err => console.error('[LIER-RYGAINLAND] Impossible de répondre:', err));
|
||
}
|
||
},
|
||
};
|