const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js"); const { config, lang } = require("../../handlers/configLoader"); const { getTicketByChannel } = require("../../handlers/database"); module.exports = { data: new SlashCommandBuilder() .setName("add") .setDescription(lang.commands.add.description) .addUserOption(option => option.setName("utilisateur") .setDescription("L'utilisateur à ajouter au ticket") .setRequired(true) ), async execute(interaction) { const member = interaction.member; const staffRoles = (Array.isArray(config.staffRoles) ? config.staffRoles : [config.staffRole || config.staffRoles]) .filter(r => r && r.trim() !== ""); if (!staffRoles.some(roleId => member.roles.cache.has(roleId))) { return interaction.reply({ content: lang.permissions.staff_only, flags: 64 }); } const ticket = getTicketByChannel(interaction.channel.id); if (!ticket) { return interaction.reply({ content: lang.ticket.not_in_ticket, flags: 64 }); } const userToAdd = interaction.options.getUser("utilisateur"); const existingOverwrite = interaction.channel.permissionOverwrites.cache.get(userToAdd.id); if (existingOverwrite && existingOverwrite.allow.has(PermissionFlagsBits.ViewChannel)) { return interaction.reply({ content: lang.commands.add.already_added.replace("{user}", userToAdd), flags: 64 }); } try { await interaction.channel.permissionOverwrites.edit(userToAdd.id, { [PermissionFlagsBits.ViewChannel]: true, [PermissionFlagsBits.SendMessages]: true, [PermissionFlagsBits.ReadMessageHistory]: true, }); await interaction.reply({ content: lang.commands.add.success.replace("{user}", userToAdd), flags: 64 }); await interaction.channel.send( lang.commands.add.welcome.replace("{user}", userToAdd) ); } catch (err) { console.error(err); await interaction.reply({ content: lang.commands.add.error, flags: 64 }); } } };