2025-12-08 23:18:34 +01:00

61 lines
2.5 KiB
JavaScript

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)')
.addUserOption(option =>
option.setName('discord-account')
.setDescription('Le compte Discord à délier')
.setRequired(true)),
async execute(interaction) {
try {
await interaction.deferReply({ flags: MessageFlags.Ephemeral });
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.`,
flags: MessageFlags.Ephemeral
});
}
// Supprimer la liaison
await deleteUserLink(discordUser.id);
const embed = new EmbedBuilder()
.setColor(0xFF0000)
.setTitle('🔓 Liaison supprimée')
.setDescription(`Le compte Discord a été délié avec succès.`)
.addFields(
{ name: '👤 Discord', value: `${discordUser.tag} (<@${discordUser.id}>)`, inline: false },
{ name: '🎮 Palworld (ancien)', value: existingLink.palworld_username, inline: true },
{ name: '🆔 Steam ID (ancien)', value: `\`${existingLink.steam_id}\``, inline: true }
)
.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 \`/rygainland-link\`.`
).catch(() => {});
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.',
flags: MessageFlags.Ephemeral
});
}
},
};