Skip to content

Commit

Permalink
feat: check for existing ticket
Browse files Browse the repository at this point in the history
  • Loading branch information
Schlauer-Hax committed Oct 15, 2023
1 parent 3aa4aaa commit 76dc46d
Showing 1 changed file with 63 additions and 56 deletions.
119 changes: 63 additions & 56 deletions interactions.ts
Expand Up @@ -108,66 +108,73 @@ export async function handleInteraction(interaction: Interaction) {
const ticket_user_reason = interaction.fields.getTextInputValue("ticket_reason");
const dbuser = await finduser(interaction.user.id);
const ticketname = `ticket-${interaction.user.id}`;
await interaction.guild!.channels
.create({
name: ticketname,
type: ChannelType.GuildText,
topic: `ticket of ${interaction.user.tag}`,
parent: "1081347349462405221",

const possibleChannel = interaction.guild?.channels.cache.find(ch => ch.name === ticketname);
if (possibleChannel) {
interaction.reply({
content: `> You already have a ticket here: ${possibleChannel}`,
ephemeral: true,
});
return;
}
const ch = await interaction.guild!.channels.create({
name: ticketname,
type: ChannelType.GuildText,
topic: `ticket of ${interaction.user.tag}`,
parent: "1081347349462405221",
});

const fields = [
{
name: `Reason:`,
value: `> ${ticket_user_reason}`,
}
];
const embed = new EmbedBuilder()
.setColor("#5539cc")
.setTitle(`Ticket of ${interaction.user.username}`)
.addFields(fields);
if (dbuser) {
const login = await lastLogin(interaction.user.id) || [];
embed.addFields({
name: `User ID:`,
value: `> ${dbuser.toHexString()}`,
}, {
name: `Server URLs:`,
value: `> ${await getServerURLs(interaction.user.id)}`,
}, {
name: `Last Login:`,
value: `\`\`\`${JSON.stringify(login[ 0 ] ?? "none")}\`\`\``,
});
embed.setFooter({
text: login[ 1 ] ?? "No Login" as string,
iconURL: interaction.user.displayAvatarURL(),
})
.then(async (ch: TextChannel) => {
const fields = [
{
name: `Reason:`,
value: `> ${ticket_user_reason}`,
}
];
const embed = new EmbedBuilder()
.setColor("#5539cc")
.setTitle(`Ticket of ${interaction.user.username}`)
.addFields(fields);
if (dbuser) {
const login = await lastLogin(interaction.user.id) || [];
embed.addFields({
name: `User ID:`,
value: `> ${dbuser.toHexString()}`,
}, {
name: `Server URLs:`,
value: `> ${await getServerURLs(interaction.user.id)}`,
}, {
name: `Last Login:`,
value: `\`\`\`${JSON.stringify(login[ 0 ] ?? "none")}\`\`\``,
});
embed.setFooter({
text: login[ 1 ] ?? "No Login" as string,
iconURL: interaction.user.displayAvatarURL(),
})
embed.setTimestamp(new Date(new Date().toLocaleString('en-US', { timeZone: login[ 2 ] ?? "UTC" })))
}
embed.setTimestamp(new Date(new Date().toLocaleString('en-US', { timeZone: login[ 2 ] ?? "UTC" })))
}


await delay(5000)
ch.permissionOverwrites.create(interaction.user.id, {
"ViewChannel": true
});

const btnrow = new ActionRowBuilder<ButtonBuilder>().addComponents([
new ButtonBuilder()
.setCustomId(`close_ticket`)
.setStyle(ButtonStyle.Danger)
.setLabel(`Close Ticket`),
]);
await ch.send({
content: `${interaction.member} || <@&1120392307087261787>`,
embeds: [ embed ],
components: [ btnrow ],
});
await interaction.reply({
content: `> Successfully created your ticket here: ${ch}`,
ephemeral: true,
});
setTimeout(() => {
ch.permissionOverwrites.create(interaction.user.id, {
"ViewChannel": true
});
}, 5000);

const btnrow = new ActionRowBuilder<ButtonBuilder>().addComponents([
new ButtonBuilder()
.setCustomId(`close_ticket`)
.setStyle(ButtonStyle.Danger)
.setLabel(`Close Ticket`),
]);
await ch.send({
content: `${interaction.member} || <@&1120392307087261787>`,
embeds: [ embed ],
components: [ btnrow ],
});
await interaction.reply({
content: `> Successfully created your ticket here: ${ch}`,
ephemeral: true,
});

} catch (e) {
console.error(e);
}
Expand Down

0 comments on commit 76dc46d

Please sign in to comment.