const { Client, CommandInteraction, MessageEmbed, MessageButton, MessageActionRow } = require("discord.js"); module.exports = { name: "banno", description: "Banna un utente e invia un messaggio di appello", type: "CHAT_INPUT", options: [ { name: "user", description: "L'utente da bannare", type: "USER", required: true }, { name: "reason", description: "La ragione del ban", type: "STRING", required: true } ], /** * * @param {Client} client * @param {CommandInteraction} interaction * @param {String[]} args */ run: async (client, interaction) => { const user = interaction.options.getUser("user"); const reason = interaction.options.getString("reason"); const appealButton = new MessageButton() .setCustomId('appealBanButton') .setLabel('📝 Appeal Ban') .setStyle('PRIMARY'); const row = new MessageActionRow().addComponents(appealButton); const appealEmbed = new MessageEmbed() .setColor('#ff0000') .setTitle('🚫 Ban Appeal') .setDescription('Sei stato bannato dal server. Se desideri fare appello al tuo ban, per favore clicca il pulsante qui sotto per compilare il modulo.'); try { console.log(`Tentativo di inviare un DM a ${user.tag}`); const dmChannel = await user.createDM(); await dmChannel.send({ embeds: [appealEmbed], components: [row] }); console.log(`Messaggio DM inviato a ${user.tag}`); await interaction.guild.members.ban(user, { reason }); console.log(`Utente ${user.tag} bannato.`); await interaction.followUp({ content: `${user.tag} è stato bannato dal server.`, ephemeral: true }); } catch (err) { console.error(`Errore durante l'invio del DM a ${user.tag}:`, err); if (err.code === 50007) { console.log(`Impossibile inviare un DM a ${user.tag}. Controlla le impostazioni della privacy.`); await interaction.reply({ content: `${user}, non è possibile inviarti un messaggio privato. Verifica le tue impostazioni di privacy per ricevere l'appello.`, ephemeral: true }); } else { console.error('Errore sconosciuto durante l\'invio del DM:', err); await interaction.reply({ content: `Si è verificato un errore durante l'invio del messaggio di appello a ${user.tag}.`, ephemeral: true }); } } }, };