From dfd98ffc1c0d0cd48086fa883049bc1fbb448cb0 Mon Sep 17 00:00:00 2001 From: bo0tzz Date: Wed, 19 Jun 2024 19:21:08 +0200 Subject: [PATCH 1/4] chore: Extract sendHelpdeskWelcomeMessage func --- src/events/helpTicket/helpticket.ts | 52 ++++++++++++----------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/src/events/helpTicket/helpticket.ts b/src/events/helpTicket/helpticket.ts index e3b69d7..e28d44a 100644 --- a/src/events/helpTicket/helpticket.ts +++ b/src/events/helpTicket/helpticket.ts @@ -13,13 +13,13 @@ import { import { ArgsOf, ButtonComponent, Discord, On, Slash, SlashChoice, SlashOption } from 'discordx'; import { Constants } from '../../constants.js'; import { - getLogsUploadModel, - getHelpDeskWelcomeMessage, - getComposeUploadModal, - getEnvUploadModal, getComposeButton, + getComposeUploadModal, getEnvButton, + getEnvUploadModal, + getHelpDeskWelcomeMessage, getLogsButton, + getLogsUploadModel, } from './util.js'; const submitButton = new ButtonBuilder({ @@ -36,6 +36,20 @@ const mainButtonRow = new ActionRowBuilder().a submitButton, ); +async function sendHelpdeskWelcomeMessage(user: string, thread: ThreadChannel) { + const welcomeMessage = getHelpDeskWelcomeMessage(user); + const message = await thread.send({ + content: welcomeMessage, + components: [mainButtonRow], + flags: [MessageFlags.SuppressEmbeds], + }); + + const itemCount = welcomeMessage.match(new RegExp(Constants.Icons.Unchecked, 'g'))?.length ?? 0; + for (let i = 1; i <= itemCount; i++) { + await message.react(`${i}️⃣`); + } +} + @Discord() export class HelpTicket { @ButtonComponent({ id: 'submit' }) @@ -93,19 +107,8 @@ export class HelpTicket { return; } - const welcomeMessage = getHelpDeskWelcomeMessage(thread.ownerId ?? ''); - const message = await thread.fetch().then((thread) => - thread.send({ - content: welcomeMessage, - components: [mainButtonRow], - flags: [MessageFlags.SuppressEmbeds], - }), - ); - - const itemCount = welcomeMessage.match(new RegExp(Constants.Icons.Unchecked, 'g'))?.length ?? 0; - for (let i = 1; i <= itemCount; i++) { - await message.react(`${i}️⃣`); - } + const user = thread.ownerId ?? ''; + await sendHelpdeskWelcomeMessage(user, await thread.fetch()); } @Slash({ name: 'helpdesk', description: 'Trigger help desk message' }) @@ -118,19 +121,8 @@ export class HelpTicket { return; } - const welcomeMessage = getHelpDeskWelcomeMessage(interaction.channel.ownerId ?? ''); - const message = await interaction.channel.fetch().then((thread) => - thread.send({ - content: welcomeMessage, - components: [mainButtonRow], - flags: [MessageFlags.SuppressEmbeds], - }), - ); - - const itemCount = welcomeMessage.match(new RegExp(Constants.Icons.Unchecked, 'g'))?.length ?? 0; - for (let i = 1; i <= itemCount; i++) { - await message.react(`${i}️⃣`); - } + const user = interaction.channel.ownerId ?? ''; + await sendHelpdeskWelcomeMessage(user, await interaction.channel.fetch()) } @ButtonComponent({ id: 'openTicket' }) From a22ff657b80604f53b7f582cb2adb4d52ddfdabe Mon Sep 17 00:00:00 2001 From: bo0tzz Date: Wed, 19 Jun 2024 19:23:04 +0200 Subject: [PATCH 2/4] feat: Acknowledge /helpdesk command --- src/events/helpTicket/helpticket.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/events/helpTicket/helpticket.ts b/src/events/helpTicket/helpticket.ts index e28d44a..a172840 100644 --- a/src/events/helpTicket/helpticket.ts +++ b/src/events/helpTicket/helpticket.ts @@ -123,6 +123,10 @@ export class HelpTicket { const user = interaction.channel.ownerId ?? ''; await sendHelpdeskWelcomeMessage(user, await interaction.channel.fetch()) + await interaction.reply({ + content: 'Helpdesk welcome message sent', + flags: [MessageFlags.Ephemeral], + }); } @ButtonComponent({ id: 'openTicket' }) From ba9b652f52701b5c7ac333a61616098a6920da28 Mon Sep 17 00:00:00 2001 From: bo0tzz Date: Wed, 19 Jun 2024 19:27:01 +0200 Subject: [PATCH 3/4] fix: Retry helpdesk welcome message Kinda lazy tbh --- src/events/helpTicket/helpticket.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/events/helpTicket/helpticket.ts b/src/events/helpTicket/helpticket.ts index a172840..98fa159 100644 --- a/src/events/helpTicket/helpticket.ts +++ b/src/events/helpTicket/helpticket.ts @@ -108,7 +108,13 @@ export class HelpTicket { } const user = thread.ownerId ?? ''; - await sendHelpdeskWelcomeMessage(user, await thread.fetch()); + const t = await thread.fetch(); + try { + await sendHelpdeskWelcomeMessage(user, t); + } catch (e) { + console.error("Retrying helpdesk welcome message:", e); + setTimeout(async () => await sendHelpdeskWelcomeMessage(user, t), 5000); + } } @Slash({ name: 'helpdesk', description: 'Trigger help desk message' }) From 940037e4326cf44091f97888c46282db642db741 Mon Sep 17 00:00:00 2001 From: bo0tzz Date: Wed, 19 Jun 2024 20:20:45 +0200 Subject: [PATCH 4/4] chore: format:fix --- src/events/helpTicket/helpticket.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/events/helpTicket/helpticket.ts b/src/events/helpTicket/helpticket.ts index 98fa159..6dc9826 100644 --- a/src/events/helpTicket/helpticket.ts +++ b/src/events/helpTicket/helpticket.ts @@ -39,10 +39,10 @@ const mainButtonRow = new ActionRowBuilder().a async function sendHelpdeskWelcomeMessage(user: string, thread: ThreadChannel) { const welcomeMessage = getHelpDeskWelcomeMessage(user); const message = await thread.send({ - content: welcomeMessage, - components: [mainButtonRow], - flags: [MessageFlags.SuppressEmbeds], - }); + content: welcomeMessage, + components: [mainButtonRow], + flags: [MessageFlags.SuppressEmbeds], + }); const itemCount = welcomeMessage.match(new RegExp(Constants.Icons.Unchecked, 'g'))?.length ?? 0; for (let i = 1; i <= itemCount; i++) { @@ -112,7 +112,7 @@ export class HelpTicket { try { await sendHelpdeskWelcomeMessage(user, t); } catch (e) { - console.error("Retrying helpdesk welcome message:", e); + console.error('Retrying helpdesk welcome message:', e); setTimeout(async () => await sendHelpdeskWelcomeMessage(user, t), 5000); } } @@ -128,7 +128,7 @@ export class HelpTicket { } const user = interaction.channel.ownerId ?? ''; - await sendHelpdeskWelcomeMessage(user, await interaction.channel.fetch()) + await sendHelpdeskWelcomeMessage(user, await interaction.channel.fetch()); await interaction.reply({ content: 'Helpdesk welcome message sent', flags: [MessageFlags.Ephemeral],