couteau_suisse/commands/utility/afficher-lies.js
2025-12-09 22:16:53 +01:00

67 lines
2.6 KiB
JavaScript

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 embed = new EmbedBuilder()
.setColor(0x0099FF)
.setTitle('🔗 Liste des comptes liés')
.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));
}
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.globalName ? user.globalName : user.username) : link.discord_username;
const discordMention = `<@${link.discord_id}>`;
const lastConn = link.lastConnection
? `📅 Dernière connexion: <t:${Math.floor(new Date(link.lastConnection).getTime() / 1000)}:R>`
: '📅 Dernière connexion: Jamais vu';
embed.addFields({
name: `👤 ${discordName}`,
value: `${discordMention}
🎮 Palworld: **${link.palworld_username}**
🆔 Steam ID: \`${link.steam_id}\`
🎯 Player ID: \`${link.player_id || 'N/A'}\`
${lastConn}
📅 Lié le: ${new Date(link.linked_at).toLocaleDateString('fr-FR')}`,
inline: false
});
}
}
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.',
flags: MessageFlags.Ephemeral
});
}
},
};