Guest User

Untitled

a guest
Jun 30th, 2023
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { ButtonInteraction, EmbedBuilder, PermissionFlagsBits } = require('discord.js');
  2. const { createTranscript } = require('discord-html-transcripts');
  3. const { transcripts } = require('../../config.json');
  4. const ticketSchema = require('../../Models/Ticket');
  5.  
  6. module.exports = {
  7.     name: 'interactionCreate',
  8.  
  9.     async execute(interaction) {
  10.         const { guild, member, customId, channel } = interaction;
  11.         const { ManageChannels, SendMessages } = PermissionFlagsBits;
  12.  
  13.         if (!interaction.isButton()) return;
  14.  
  15.         if (!["fermer", "bloquer", "debloquer"].includes(customId)) return;
  16.  
  17.         if (!guild.members.me.permissions.has(ManageChannels))
  18.             return interaction.reply({ content: "Je n'ai pas la permission de faire cela.", ephemeral: true });
  19.  
  20.         const embed = new EmbedBuilder().setColor("Aqua");
  21.  
  22.         ticketSchema.findOne({ channelID: channel.id }, async (err, data) => {
  23.             if (err) throw err;
  24.             if (!data) return;
  25.  
  26.             const fetchedMember = await guild.members.cache.get(data.MemberID);
  27.  
  28.             switch (customId) {
  29.                 case 'fermer':
  30.                     if (data.closed == true)
  31.                         return interaction.reply({ content: 'Le ticket est déjà en cours de suppression...', ephemeral: true });
  32.  
  33.                     const transcript = await createTranscript(channel, {
  34.                         limit: -1,
  35.                         returnBuffer: false,
  36.                         fileName: `${data.Type}-${member.user.username}-${data.TicketID}.html`,
  37.                     });
  38.  
  39.                     await ticketSchema.updateOne({ ChannelID: channel.id }, { Closed: true });
  40.  
  41.                     const transcriptEmbed = new EmbedBuilder()
  42.                         .setTitle(`Type de transcript: ${data.Type}\nId: ${data.TicketID}`)
  43.                         .setFooter({ text: member.user.tag, iconURL: member.displayAvatarURL({ dynamic: true }) })
  44.                         .setTimestamp();
  45.  
  46.                     const transcriptProcess = new EmbedBuilder()
  47.                         .setTitle('Sauvegarde du transcript...')
  48.                         .setDescription('Le ticket sera fermé dans 10 secondes, autorisez les MP pour recevoir le transcript.')
  49.                         .setColor('Red')
  50.                         .setFooter({ text: member.user.tag, iconURL: member.displayAvatarURL({ dynamic: true }) })
  51.                         .setTimestamp();
  52.                    
  53.                     const res = await guild.channels.cache.get(transcripts).send({
  54.                         embeds: [transcriptEmbed],
  55.                         files: [transcript]
  56.                     });
  57.  
  58.                     channel.send({embeds: [transcriptProcess]});
  59.  
  60.                     setTimeout(function () {
  61.                         member.send({
  62.                             embeds: [transcriptEmbed.setDescription(`Accéder au transcript du ticket: ${res.url}`)],
  63.                         }).catch(() => channel.send("Impossible d'envoyer le message privé."));
  64.                         channel.delete();
  65.                     }, 10000);
  66.  
  67.                     break;
  68.  
  69.                     case "bloquer":
  70.                         if(!member.permissions.has(ManageChannels))
  71.                             return interaction.reply({content: "Tu n'as pas la permission de faire cela.", ephemeral: true});
  72.  
  73.                         if(data.Locked == true)
  74.                             return interaction.reply({content: "Le ticket est déjà bloqué.", ephemeral: true});
  75.  
  76.                         await ticketSchema.updateOne({ChannelID: channel.id}, {Locked: true});
  77.                         embed.setDescription("Le ticket a bien été bloqué.");
  78.  
  79.                         channel.permissionOverwrites.edit(fetchedMember, {SendMessages: false});
  80.  
  81.                         return interaction.reply({embeds: [embed]});
  82.  
  83.                     case "debloquer":
  84.                         if(!member.permissions.has(ManageChannels))
  85.                             return interaction.reply({content: "Tu n'as pas la permission de faire cela.", ephemeral: true});
  86.    
  87.                         if(data.Locked == false)
  88.                             return interaction.reply({content: "Le ticket est déjà débloqué.", ephemeral: true});
  89.    
  90.                         await ticketSchema.updateOne({ChannelID: channel.id}, {Locked: false});
  91.                         embed.setDescription("Le ticket a bien été débloqué.");
  92.    
  93.                         channel.permissionOverwrites.edit(fetchedMember, {SendMessages: true});
  94.    
  95.                         return interaction.reply({embeds: [embed]});
  96.             }
  97.         });
  98.     }
  99. }
Add Comment
Please, Sign In to add comment