removed ticket command in favor of discord forms
This commit is contained in:
parent
759c4e2bd1
commit
cde8e6c827
@ -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 });
|
|
||||||
},
|
|
||||||
};
|
|
Loading…
Reference in New Issue
Block a user