(buttons): Implement private-help button.

This commit is contained in:
2026-10-14 11:41:51 +08:00
parent 2a96359d8d
commit 9d2b2e6a9e
+22 -12
View File
@@ -1,20 +1,30 @@
import { ButtonInteraction, Client, ModalBuilder, TextInputStyle, MessageFlags } from 'discord.js';
import { Button } from '../types';
import { canOpenPrivateHelpTicket, createTextInput } from '../utils';
export default {
name: 'private-help',
handler: async function (client: Client, interaction: ButtonInteraction) {
if (!(await canOpenPrivateHelpTicket(interaction.user.id)))
return interaction.reply({ flags: [MessageFlags.Ephemeral], content: 'You can only have one open ticket at a time that is less than a day old.' });
class PrivateHelpButton implements Button<Client> {
id = 'private-help';
const modal = new ModalBuilder()
.setCustomId('open-ticket-modal')
.setTitle('Get in contact');
async execute(context: Client<boolean>, interaction: ButtonInteraction, ...args: any[]): Promise<void> {
try {
if (!await canOpenPrivateHelpTicket(interaction.user.id))
throw new Error('You can only have one open ticket at a time that is less than a day old.');
const label = createTextInput('ticket-message', 'What is the reason for your ticket?', null, true, TextInputStyle.Paragraph, 1500, 10);
const modal = new ModalBuilder()
.setCustomId('open-ticket-modal')
.setTitle('Get in contact');
modal.addLabelComponents(label);
const label = createTextInput('ticket-message', 'What is the reason for your ticket?', null, true, TextInputStyle.Paragraph, 1500, 10);
modal.addLabelComponents(label);
await interaction.showModal(modal);
await interaction.showModal(modal);
} catch (error: Error | any) {
await interaction.reply({
content: error.message,
flags: MessageFlags.Ephemeral,
}).catch(() => {});
}
}
};
}
export default new PrivateHelpButton();