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'), async execute(interaction) { try { await interaction.deferReply({}); const links = await getAllLinks(); if (links.length === 0) { return interaction.editReply({ content: '📝 Aucun compte lié pour le moment.', flags: MessageFlags.Ephemeral }); } const embeds = []; const FIELDS_PER_EMBED = 24; // Maximum 25 fields par embed, on garde une marge // Diviser les liens en chunks de 24 pour respecter la limite Discord for (let i = 0; i < links.length; i += FIELDS_PER_EMBED) { const chunk = links.slice(i, i + FIELDS_PER_EMBED); const embed = new EmbedBuilder() .setColor(0x0099FF) .setTitle(i === 0 ? '🔗 Liste des comptes liés' : null) .setDescription(i === 0 ? `Total: **${links.length}** compte(s) lié(s)` : null) // si c'est le dernier embed, on met la date actuelle .setTimestamp(i + FIELDS_PER_EMBED >= links.length ? new Date() : null); for (const link of chunk) { const user = await interaction.client.users.fetch(link.discord_id).catch(() => null); const discordName = user ? (user.globalName ? user.globalName : user.username) : link.discord_username; const discordMention = `<@${link.discord_id}>`; // temps depuis la dernière connexion formatée pour affichage discord let lastConnectionText = 'Jamais connecté'; if (link.lastConnection) { const lastDate = new Date(link.lastConnection); lastConnectionText = ``; } embed.addFields({ name: `👤 ${discordName} - 🎮 ${link.palworld_username} - ${lastConnectionText}`, value: `${discordMention}` }); } embeds.push(embed); } await interaction.editReply({ embeds }); } 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.', flags: MessageFlags.Ephemeral }); } }, };