diff --git a/discord-bot/commands/ticket.js b/discord-bot/commands/ticket.js deleted file mode 100644 index e90ee07..0000000 --- a/discord-bot/commands/ticket.js +++ /dev/null @@ -1,121 +0,0 @@ -const { SlashCommandBuilder, PermissionsBitField, ChannelType, ButtonStyle, ButtonBuilder, ActionRowBuilder } = require('discord.js'); - -module.exports = { - data: new SlashCommandBuilder() - .setName('ticket') - .setDescription('Create a ticket!') - .addStringOption(option => option - .setName('category') - .setDescription('The category of the ticket') - .setRequired(true) - .addChoices( - { name: 'Technical Problem', value: 'tech-problem' }, - { name: 'Griefing or Harm', value: 'grief-or-harm' }, - { name: 'Suggestion', value: 'suggestion' }, - { name: 'Other', value: 'other' }, - )), - - async execute({ interaction, createEmbed }) { - await interaction.reply({ embeds: [createEmbed.basic('Creating ticket channel...')], fetchReply: true, ephemeral: true }); - - const category = interaction.options.getString('category'); - - let ticketChannel; - - if (category === 'grief-or-harm') { - ticketChannel = await interaction.member.guild.channels.create({ - name: `ticket-${interaction.user.username}`, - type: ChannelType.GuildText, - parent: process.env.TICKET_CATEGORY_ID, - permissionOverwrites: [ - { - id: interaction.guild.id, - deny: [PermissionsBitField.Flags.ViewChannel], - }, - { - id: process.env.MODERATOR_ROLE_ID, - allow: [PermissionsBitField.Flags.ViewChannel], - }, - { - id: interaction.user.id, - allow: [PermissionsBitField.Flags.ViewChannel], - }, - ], - - }); - } else if (category === 'tech-problem') { - ticketChannel = await interaction.member.guild.channels.create({ - name: `ticket-${interaction.user.username}`, - type: ChannelType.GuildText, - parent: process.env.TICKET_CATEGORY_ID, - permissionOverwrites: [ - { - id: interaction.guild.id, - deny: [PermissionsBitField.Flags.ViewChannel], - }, - { - id: process.env.CONTRIBUTER_ROLE_ID, - allow: [PermissionsBitField.Flags.ViewChannel], - }, - { - id: interaction.user.id, - allow: [PermissionsBitField.Flags.ViewChannel], - }, - ], - }); - } else { - ticketChannel = await interaction.member.guild.channels.create({ - name: `ticket-${interaction.user.username}`, - type: ChannelType.GuildText, - parent: process.env.TICKET_CATEGORY_ID, - permissionOverwrites: [ - { - id: interaction.guild.id, - deny: [PermissionsBitField.Flags.ViewChannel], - }, - { - id: interaction.user.id, - allow: [PermissionsBitField.Flags.ViewChannel], - }, - ], - }); - } - - const closeRow = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId('close') - .setLabel('Close Ticket') - .setStyle(ButtonStyle.Danger), - ); - - const cancelRow = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId('cancel') - .setLabel('Cancel') - .setStyle(ButtonStyle.Danger), - ); - - const ticketMessage = await ticketChannel.send({ embeds: [createEmbed.basic(`${interaction.user} created a ticket with the category **${category}**`)], components: [closeRow] }); - - const collector = ticketMessage.createMessageComponentCollector(); - - let ticketCancelMessage; - let timeout; - collector.on('collect', async i => { - if (i.customId === 'close') { - ticketCancelMessage = await ticketChannel.send({ embeds: [createEmbed.basic('Closing ticket in 10 seconds...')] }); - await ticketMessage.createMessageComponentCollector(); - await i.update({ components: [cancelRow] }); - timeout = setTimeout(() => ticketChannel.delete(), 10000); - } else { - clearTimeout(timeout); - await ticketCancelMessage.edit({ embeds: [createEmbed.basic('Ticket closing has been stopped')] }); - await i.update({ components: [closeRow] }); - } - }); - - interaction.editReply({ embeds: [createEmbed.basic(`${ticketChannel} has been created`)], emphemeral: true }); - }, -};