From 9d28bff7df2483353b93cb4220dc3b9333cc3a85 Mon Sep 17 00:00:00 2001 From: Louis Mazin Date: Mon, 8 Dec 2025 23:18:34 +0100 Subject: [PATCH] nice --- commands/utility/afficher-lies.js | 17 ++++++------- commands/utility/delier-rygainland.js | 8 +++--- commands/utility/delier.js | 20 ++++++++------- commands/utility/lier-rygainland.js | 35 ++++++++------------------- commands/utility/lier.js | 24 ++++++++++-------- 5 files changed, 47 insertions(+), 57 deletions(-) diff --git a/commands/utility/afficher-lies.js b/commands/utility/afficher-lies.js index f5657cb..33291d1 100644 --- a/commands/utility/afficher-lies.js +++ b/commands/utility/afficher-lies.js @@ -1,22 +1,21 @@ -const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, MessageFlags } = require('discord.js'); const { getAllLinks } = require('../../database.js'); module.exports = { data: new SlashCommandBuilder() .setName('afficher-lies') - .setDescription('Afficher tous les comptes liés (Admin uniquement)') - .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), + .setDescription('Afficher tous les comptes liés'), async execute(interaction) { try { - await interaction.deferReply({ ephemeral: true }); + await interaction.deferReply({}); const links = await getAllLinks(); if (links.length === 0) { return interaction.editReply({ content: '📝 Aucun compte lié pour le moment.', - ephemeral: true + flags: MessageFlags.Ephemeral }); } @@ -26,6 +25,7 @@ module.exports = { .setDescription(`Total: **${links.length}** compte(s) lié(s)`) .setTimestamp(); + // Diviser en plusieurs embeds si nécessaire (limite de 25 fields) const chunks = []; for (let i = 0; i < links.length; i += 10) { chunks.push(links.slice(i, i + 10)); @@ -34,8 +34,7 @@ module.exports = { for (const chunk of chunks) { for (const link of chunk) { const user = await interaction.client.users.fetch(link.discord_id).catch(() => null); - const discordName = user ? user.tag : link.discord_username; - + const discordName = user ? user.globalName : link.discord_username; embed.addFields({ name: `👤 ${discordName}`, value: `🎮 Palworld: **${link.palworld_username}**\n🆔 Steam ID: \`${link.steam_id}\`\n🎯 Player ID: \`${link.player_id || 'N/A'}\`\n📅 Lié le: ${new Date(link.linked_at).toLocaleDateString('fr-FR')}`, @@ -44,13 +43,13 @@ module.exports = { } } - await interaction.editReply({ embeds: [embed], ephemeral: true }); + await interaction.editReply({ embeds: [embed]}); } catch (error) { console.error('Erreur lors de la récupération des liaisons:', error); await interaction.editReply({ content: '❌ Une erreur est survenue lors de la récupération des liaisons.', - ephemeral: true + flags: MessageFlags.Ephemeral }); } }, diff --git a/commands/utility/delier-rygainland.js b/commands/utility/delier-rygainland.js index 2dd75b9..ab51db5 100644 --- a/commands/utility/delier-rygainland.js +++ b/commands/utility/delier-rygainland.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, MessageFlags } = require('discord.js'); const { getUserLink, deleteUserLink } = require('../../database.js'); module.exports = { @@ -20,7 +20,7 @@ module.exports = { ) .setTimestamp(); - return interaction.reply({ embeds: [embed], ephemeral: true }); + return interaction.reply({ embeds: [embed], flags: MessageFlags.Ephemeral }); } // Afficher un embed de confirmation avec boutons @@ -52,7 +52,7 @@ module.exports = { const response = await interaction.reply({ embeds: [confirmEmbed], components: [row], - ephemeral: true + flags: MessageFlags.Ephemeral }); // Attendre la réponse de l'utilisateur (60 secondes) @@ -114,7 +114,7 @@ module.exports = { console.error('Erreur lors de la déliaison:', error); await interaction.reply({ content: '❌ Une erreur est survenue lors de la déliaison.', - ephemeral: true + flags: MessageFlags.Ephemeral }); } }, diff --git a/commands/utility/delier.js b/commands/utility/delier.js index 772ac04..9cef536 100644 --- a/commands/utility/delier.js +++ b/commands/utility/delier.js @@ -1,31 +1,32 @@ -const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, MessageFlags } = require('discord.js'); const { getUserLink, deleteUserLink } = require('../../database.js'); module.exports = { data: new SlashCommandBuilder() .setName('delier') .setDescription('Délier un compte Discord de son compte Palworld (Admin)') - .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .addUserOption(option => - option.setName('compte-discord') + option.setName('discord-account') .setDescription('Le compte Discord à délier') .setRequired(true)), async execute(interaction) { try { - await interaction.deferReply({ ephemeral: true }); + await interaction.deferReply({ flags: MessageFlags.Ephemeral }); - const discordUser = interaction.options.getUser('compte-discord'); + const discordUser = interaction.options.getUser('discord-account'); + // Vérifier si l'utilisateur est lié const existingLink = await getUserLink(discordUser.id); if (!existingLink) { return interaction.editReply({ content: `❌ Le compte <@${discordUser.id}> n'est pas lié à un compte Palworld.`, - ephemeral: true + flags: MessageFlags.Ephemeral }); } + // Supprimer la liaison await deleteUserLink(discordUser.id); const embed = new EmbedBuilder() @@ -39,19 +40,20 @@ module.exports = { ) .setTimestamp(); + // Envoyer un MP au joueur délié await discordUser.send( `🔓 **Liaison supprimée**\n\n` + `Votre compte Discord a été délié de votre compte Palworld par un administrateur.\n` + - `Vous pouvez vous lier à nouveau avec \`/lier-rygainland\`.` + `Vous pouvez vous lier à nouveau avec \`/rygainland-link\`.` ).catch(() => {}); - await interaction.editReply({ embeds: [embed], ephemeral: true }); + await interaction.editReply({ embeds: [embed], flags: MessageFlags.Ephemeral }); } catch (error) { console.error('Erreur lors de la suppression de la liaison:', error); await interaction.editReply({ content: '❌ Une erreur est survenue lors de la suppression de la liaison.', - ephemeral: true + flags: MessageFlags.Ephemeral }); } }, diff --git a/commands/utility/lier-rygainland.js b/commands/utility/lier-rygainland.js index 6f4143a..c77f35c 100644 --- a/commands/utility/lier-rygainland.js +++ b/commands/utility/lier-rygainland.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); +const { SlashCommandBuilder, EmbedBuilder, MessageFlags } = require('discord.js'); const { generateLinkCode, getUserLink } = require('../../database.js'); module.exports = { @@ -10,27 +10,10 @@ module.exports = { try { const existingLink = await getUserLink(interaction.user.id); if (existingLink) { - const embed = new EmbedBuilder() - .setColor(0x0099FF) - .setTitle('🔗 Votre compte est déjà lié') - .setDescription('Votre compte Discord est déjà associé à un compte Palworld.') - .addFields( - { name: '👤 Discord', value: `${interaction.user.tag}`, inline: false }, - { name: '🎮 Palworld', value: `**${existingLink.palworld_username}**`, inline: true }, - { name: '🆔 Steam ID', value: `\`${existingLink.steam_id}\``, inline: true }, - { name: '🎯 Player ID', value: `\`${existingLink.player_id || 'N/A'}\``, inline: false }, - { name: '📅 Lié le', value: new Date(existingLink.linked_at).toLocaleDateString('fr-FR', { - year: 'numeric', - month: 'long', - day: 'numeric', - hour: '2-digit', - minute: '2-digit' - }), inline: false } - ) - .setFooter({ text: 'Contactez un administrateur pour modifier votre liaison' }) - .setTimestamp(); - - return interaction.reply({ embeds: [embed], ephemeral: true }); + return interaction.reply({ + content: `Vous êtes déjà lié au compte Palworld: **${existingLink.palworld_username}** (Steam ID: ${existingLink.steam_id})`, + flags: MessageFlags.Ephemeral + }); } const code = await generateLinkCode(interaction.user.id); @@ -41,20 +24,22 @@ module.exports = { .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: '2️⃣ Étape 2', value: `Tapez dans le chat du jeu:\n\`\`\`!link ${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(); - await interaction.reply({ embeds: [embed], ephemeral: true }); + await interaction.reply({ embeds: [embed], flags: MessageFlags.Ephemeral }); + + // Le système checkAndManageWebSocket va détecter le nouveau code automatiquement } catch (error) { console.error('Erreur lors de la génération du code:', error); await interaction.reply({ content: '❌ Une erreur est survenue lors de la génération du code.', - ephemeral: true + flags: MessageFlags.Ephemeral }); } }, diff --git a/commands/utility/lier.js b/commands/utility/lier.js index 7eca8ca..915d2d4 100644 --- a/commands/utility/lier.js +++ b/commands/utility/lier.js @@ -1,28 +1,28 @@ -const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js'); -const { getPendingPlayer, verifyLinkCode, updateUserLinkWithUsername } = require('../../database.js'); +const { SlashCommandBuilder, EmbedBuilder, MessageFlags } = require('discord.js'); +const { verifyLinkCode, updateUserLinkWithUsername } = require('../../database.js'); const axios = require('axios'); module.exports = { data: new SlashCommandBuilder() .setName('lier') .setDescription('Lier manuellement un compte Discord à un compte Palworld (Admin)') - .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .addStringOption(option => option.setName('pseudo-palworld') .setDescription('Le pseudo du joueur sur Palworld') .setRequired(true)) .addUserOption(option => - option.setName('compte-discord') + option.setName('discord-account') .setDescription('Le compte Discord à lier') .setRequired(true)), async execute(interaction) { try { - await interaction.deferReply({ ephemeral: true }); + await interaction.deferReply({ flags: MessageFlags.Ephemeral }); const palworldName = interaction.options.getString('pseudo-palworld'); - const discordUser = interaction.options.getUser('compte-discord'); + const discordUser = interaction.options.getUser('discord-account'); + // Récupérer le Steam ID depuis l'API Palworld const response = await axios({ method: 'get', url: 'http://play.louismazin.ovh:8212/v1/api/players', @@ -35,6 +35,7 @@ module.exports = { const players = response.data.players || {}; let playerData = null; + // Chercher le joueur par nom for (const [id, player] of Object.entries(players)) { if (player.name === palworldName) { playerData = { @@ -50,13 +51,15 @@ module.exports = { return interaction.editReply({ content: `❌ Impossible de trouver le joueur **${palworldName}** sur le serveur.\n\n` + `💡 Le joueur doit être connecté sur le serveur Palworld.`, - ephemeral: true + flags: MessageFlags.Ephemeral }); } + // Créer un code temporaire pour la liaison manuelle const { generateLinkCode } = require('../../database.js'); const code = await generateLinkCode(discordUser.id); + // Effectuer la liaison immédiatement const result = await verifyLinkCode(code, playerData.steamId, playerData.name, playerData.playerId); if (result.success) { @@ -73,6 +76,7 @@ module.exports = { ) .setTimestamp(); + // Envoyer un MP au joueur lié await discordUser.send( `✅ **Liaison effectuée par un administrateur**\n\n` + `Votre compte Discord a été lié à votre compte Palworld:\n` + @@ -81,11 +85,11 @@ module.exports = { `🎯 Player ID: \`${playerData.playerId}\`` ).catch(() => {}); - await interaction.editReply({ embeds: [embed], ephemeral: true }); + await interaction.editReply({ embeds: [embed], flags: MessageFlags.Ephemeral }); } else { await interaction.editReply({ content: `❌ Erreur lors de la liaison: ${result.message}`, - ephemeral: true + flags: MessageFlags.Ephemeral }); } @@ -93,7 +97,7 @@ module.exports = { console.error('Erreur lors de la liaison manuelle:', error); await interaction.editReply({ content: '❌ Une erreur est survenue lors de la liaison.', - ephemeral: true + flags: MessageFlags.Ephemeral }); } },