'Discord js - Ticket system

TICKET PROBLEM

When I reopen the ticket and want to close it again, the "interaction.channel.edit" function is not working, why? There are no errors, version v13 When I close my ticket before reopening, everything is fine

//Now I am writing a sample message because they are stating that I wrote the code alone

const client = require("../index");
const { createTranscript } = require('discord-html-transcripts');
const { MessageEmbed, MessageActionRow, MessageButton, Message } = require("discord.js");


client.on("interactionCreate", async (interaction) => {
    // Slashe
    if (interaction.isCommand()) {
        await interaction.deferReply({ ephemeral: false }).catch((error) => { console.log(error)});
    
        const cmd = client.slashCommands.get(interaction.commandName);
        if (!cmd)
            return interaction.followUp({ content: "Wystapil jakis blad!" });
    
        const args = [];
    
        for (let option of interaction.options.data) {
            if (option.type === "SUB_COMMAND") {
                if (option.name) args.push(option.name);
                option.options?.forEach((x) => {
                    if (x.value) args.push(x.value);
                });
            } else if (option.value) args.push(option.value);
        }
        interaction.member = interaction.guild.members.cache.get(interaction.user.id);
    
        cmd.run(client, interaction, args);
    }
    
    // Context menu
    if (interaction.isContextMenu()) {
        await interaction.deferReply({ ephemeral: false });
        const command = client.slashCommands.get(interaction.commandName);
        if (command) command.run(client, interaction);
    }
    // Buttony
    if(interaction.isButton()) {
        await interaction.deferUpdate()
        if(interaction.customId === 'verify') {
            let error = 0
            const roleAdd = interaction.guild.roles.cache.get('949702807517265930')
            const roleRemove = interaction.guild.roles.cache.get('949702776508792864')
            if(!interaction.guild.me.permissions.has('ADMINISTRATOR')) {
                const channel = interaction.guild.channels.cache.get("949716268146131066")
                const embed = new MessageEmbed()
                .setColor('RED')
                .setTitle("ERROR")
                .setDescription("Nie posiadam permissji potrzebnych do weryfikacji!")
                .setTimestamp();
                error = 1
                channel.send({ embeds:[embed]});
            }

            if(interaction.guild.me.roles.highest.position <= roleAdd.position){
                const channel = interaction.guild.channels.cache.get("949716268146131066")
                const embed = new MessageEmbed()
                .setColor('RED')
                .setTitle("ERROR")
                .setDescription("Moja rola jest niżej niż rola, którą dodaje podczas weryfikacji!")
                .setTimestamp();
                error = 1
                channel.send({ embeds:[embed]});
            }
            if(interaction.guild.me.roles.highest.position <= roleRemove.position){
                const channel = interaction.guild.channels.cache.get("949716268146131066")
                const embed = new MessageEmbed()
                .setColor('RED')
                .setTitle("ERROR")
                .setDescription("Moja rola jest niżej niż rola, którą zabieram podczas weryfikacji")
                .setTimestamp();
                error = 1
                channel.send({ embeds:[embed]});
            }
            if(error > 0){
                interaction.guild.members.cache.get("613438379174133770").send("Błąd podczas weryfikacji!")
                return interaction.member.send("Wystąpił błąd podczas weryfikacji!");
            }

            await interaction.member.roles.add(roleAdd)
            await interaction.member.roles.remove(roleRemove)
            interaction.member.send("Pomyślnie zweryfikowano!")
        }if(interaction.customId === 'ticket-open'){
            if(interaction.guild.channels.cache.find(ch => ch.topic == interaction.user.id)) {
                return interaction.followUp({
                    content: `Posiadasz już ticket!`,
                    ephemeral: true
                })}
            
            interaction.guild.channels.create(`Ticket-${interaction.user.username}`, {
                parent: '949978511324635136',
                permissionOverwrites: [{
                        id: interaction.user.id,
                        allow: ['VIEW_CHANNEL', 'SEND_MESSAGES'] 
                },
                {
                    id: '949701839560011797',
                    deny: ['VIEW_CHANNEL', 'SEND_MESSAGES']
                },
                {
                    id: client.user.id,
                    allow: ['VIEW_CHANNEL', 'SEND_MESSAGES'] 
                }],
                topic: interaction.user.id
            })
            .then(async(tick) => {
                interaction.followUp({
                    content: `Ticket otworzony <#${tick.id}>`,
                    ephemeral: true
                })
                const tickEmbed = new MessageEmbed()
                .setColor('GREEN')
                .setFooter({
                    text: `${interaction.user.username} ${new Date().getFullYear()}`,
                    iconURL: interaction.user.displayAvatarURL({ dynamic: true })
                })
                .setTitle("Ticket")
                .setDescription(`**Otworzyłeś/aś ticket, poczekaj cierpliwie, aż ktoś z administracji Cie obsłuży, nie pinguj oraz zachowaj kulturę na tickecie**`);
                const closeButton = new MessageButton()
                .setCustomId("close-button")
                .setLabel("Zamknij")
                .setEmoji("🔒")
                .setStyle("SECONDARY");
                const row = new MessageActionRow()
                .setComponents(closeButton);
                tick.send({
                    content: `Cześć <@${interaction.user.id}>, administracja za chwilę Cie obsłuży <@&949982338031423541>`,
                    embeds: [tickEmbed],
                    components: [row]
                })

            })


        } if(interaction.customId === 'close-button'){
            if(interaction.channel.name.includes(`zamkniety`)) return interaction.followUp({ content: 'Ticket jest już zamknięty!', ephemeral: true });
            const buttonTak = new MessageButton()
            .setCustomId('close-tak')
            .setLabel('Zamknij')
            .setStyle('SECONDARY')
            const buttonNie = new MessageButton()
            .setCustomId('close-nie')
            .setLabel('Anuluj')
            .setStyle('DANGER')
            const raw = new MessageActionRow()
            .setComponents([buttonTak, buttonNie])
            interaction.channel.send({
                content:'Czy napewno chcesz zamknąć ticket?',
                components: [raw]
            })
        }  if(interaction.customId === 'close-tak'){
            const usd = interaction.guild.members.cache.get(interaction.channel.topic)
            const name = usd.user.username
            interaction.channel.edit({
                name: "zamkniety",
                permissionOverwrites: [{
                    id: interaction.channel.topic,
                    deny: ['SEND_MESSAGES', 'VIEW_CHANNEL']
                }, {
                    id: '949701839560011797',
                    deny: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
                }, {
                    id: client.user.id,
                    allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
                }],
            })
                const message = await interaction.channel.messages.fetch(interaction.message.id).catch(() => null);
                if (message) {
                     interaction.message.delete()
                }

            const embed = new MessageEmbed()
            .setDescription(`Ticket zamknięty przez <@${interaction.user.id}>`)
            interaction.channel.send({embeds:[embed]})

        setTimeout(() => {
            const embed2 = new MessageEmbed()
            .setDescription(`\`\`\`System kontroli ticketów po zamknięciu\`\`\``)
            .setColor('YELLOW');

            const buttonReopen = new MessageButton()
            .setCustomId("reopenButton")
            .setLabel("Otworz")
            .setEmoji('🔓')
            .setStyle('SECONDARY')

            const buttonTranscript = new MessageButton()
            .setCustomId("transcriptButton")
            .setLabel("Transcript")
            .setEmoji('📝')
            .setStyle('SECONDARY')

            const buttonDelete = new MessageButton()
            .setCustomId("deleteButton")
            .setLabel("Usun")
            .setEmoji('⛔')
            .setStyle('SECONDARY')
            const row = new MessageActionRow()
            .setComponents([ buttonTranscript, buttonReopen, buttonDelete])
            interaction.channel.send({
                embeds:[embed2],
                components: [row]
            })

        }, 500)
        } if(interaction.customId === 'close-nie'){
            const message = await interaction.channel.messages.fetch(interaction.message.id).catch(() => null);
            if (message) {
                interaction.message.delete()
            }
        } if(interaction.customId === 'reopenButton') {
            const usd = interaction.guild.members.cache.get(interaction.channel.topic)
            const name = usd.user.username
            interaction.channel.edit({
            permissionOverwrites: [{
                id: interaction.channel.topic,
                allow: ['SEND_MESSAGES', 'VIEW_CHANNEL']
            }, {
                id:'949701839560011797' ,
                deny: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
            }, {
                id: client.user.id,
                allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
            }],
            name: `ticket`
        })    

        const embed = new MessageEmbed()
        .setDescription(`Ticket został ponownie otworzony przez <@${interaction.user.id}> (${interaction.user.username})`)
        .setColor('GREEN')
        interaction.channel.send({embeds:[embed]})
        const message = await interaction.channel.messages.fetch(interaction.message.id).catch(() => null);
        if (message) {
            interaction.message.delete()
        }
        
    }
        // } if(interaction.customId === 'transcriptButton'){
        //     interaction.channel.send({ content: "Tworzenie zapisu..." })
        //     const user = await client.users.fetch(interaction.channel.topic)
        //     const transcript = await createTranscript(interaction.channel, {
        //         limit: -1,
        //         fileName: `ticket-${interaction.channel.topic}.html`,
        //         returnBuffer: false,
        //     })
        //     client.channels.cache.get("950383700904931368").send({
        //         files: [transcript]
        //     }).then(() => {
        //         interaction.channel.delete()
        //     })
        // }

    }
});



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source