Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const { ButtonInteraction, EmbedBuilder, PermissionFlagsBits } = require('discord.js');
- const { createTranscript } = require('discord-html-transcripts');
- const { transcripts } = require('../../config.json');
- const ticketSchema = require('../../Models/Ticket');
- module.exports = {
- name: 'interactionCreate',
- async execute(interaction) {
- const { guild, member, customId, channel } = interaction;
- const { ManageChannels, SendMessages } = PermissionFlagsBits;
- if (!interaction.isButton()) return;
- if (!["fermer", "bloquer", "debloquer"].includes(customId)) return;
- if (!guild.members.me.permissions.has(ManageChannels))
- return interaction.reply({ content: "Je n'ai pas la permission de faire cela.", ephemeral: true });
- const embed = new EmbedBuilder().setColor("Aqua");
- ticketSchema.findOne({ channelID: channel.id }, async (err, data) => {
- if (err) throw err;
- if (!data) return;
- const fetchedMember = await guild.members.cache.get(data.MemberID);
- switch (customId) {
- case 'fermer':
- if (data.closed == true)
- return interaction.reply({ content: 'Le ticket est déjà en cours de suppression...', ephemeral: true });
- const transcript = await createTranscript(channel, {
- limit: -1,
- returnBuffer: false,
- fileName: `${data.Type}-${member.user.username}-${data.TicketID}.html`,
- });
- await ticketSchema.updateOne({ ChannelID: channel.id }, { Closed: true });
- const transcriptEmbed = new EmbedBuilder()
- .setTitle(`Type de transcript: ${data.Type}\nId: ${data.TicketID}`)
- .setFooter({ text: member.user.tag, iconURL: member.displayAvatarURL({ dynamic: true }) })
- .setTimestamp();
- const transcriptProcess = new EmbedBuilder()
- .setTitle('Sauvegarde du transcript...')
- .setDescription('Le ticket sera fermé dans 10 secondes, autorisez les MP pour recevoir le transcript.')
- .setColor('Red')
- .setFooter({ text: member.user.tag, iconURL: member.displayAvatarURL({ dynamic: true }) })
- .setTimestamp();
- const res = await guild.channels.cache.get(transcripts).send({
- embeds: [transcriptEmbed],
- files: [transcript]
- });
- channel.send({embeds: [transcriptProcess]});
- setTimeout(function () {
- member.send({
- embeds: [transcriptEmbed.setDescription(`Accéder au transcript du ticket: ${res.url}`)],
- }).catch(() => channel.send("Impossible d'envoyer le message privé."));
- channel.delete();
- }, 10000);
- break;
- case "bloquer":
- if(!member.permissions.has(ManageChannels))
- return interaction.reply({content: "Tu n'as pas la permission de faire cela.", ephemeral: true});
- if(data.Locked == true)
- return interaction.reply({content: "Le ticket est déjà bloqué.", ephemeral: true});
- await ticketSchema.updateOne({ChannelID: channel.id}, {Locked: true});
- embed.setDescription("Le ticket a bien été bloqué.");
- channel.permissionOverwrites.edit(fetchedMember, {SendMessages: false});
- return interaction.reply({embeds: [embed]});
- case "debloquer":
- if(!member.permissions.has(ManageChannels))
- return interaction.reply({content: "Tu n'as pas la permission de faire cela.", ephemeral: true});
- if(data.Locked == false)
- return interaction.reply({content: "Le ticket est déjà débloqué.", ephemeral: true});
- await ticketSchema.updateOne({ChannelID: channel.id}, {Locked: false});
- embed.setDescription("Le ticket a bien été débloqué.");
- channel.permissionOverwrites.edit(fetchedMember, {SendMessages: true});
- return interaction.reply({embeds: [embed]});
- }
- });
- }
- }
Add Comment
Please, Sign In to add comment