mirror of
https://github.com/nx-bat/discordbot-ng.git
synced 2026-11-11 07:13:37 -05:00
(buttons): Implement open-ticket-for-reported-message button.
This commit is contained in:
@@ -1,29 +1,30 @@
|
|||||||
import { ButtonInteraction, Client, MessageFlags, MessageMentions } from 'discord.js';
|
import { ButtonInteraction, Client, MessageFlags, MessageMentions } from 'discord.js';
|
||||||
|
import { Button } from '../types';
|
||||||
import { createPrivateHelpTicketThread } from '../utils';
|
import { createPrivateHelpTicketThread } from '../utils';
|
||||||
|
|
||||||
export default {
|
class OpenTicketForReportedMessageButton implements Button<Client> {
|
||||||
name: 'open-ticket-for-reported-message',
|
id = 'open-ticket-for-reported-message';
|
||||||
handler: async function (client: Client, interaction: ButtonInteraction) {
|
|
||||||
const message = await interaction.message.fetch();
|
|
||||||
const guild = await interaction.guild!.fetch();
|
|
||||||
|
|
||||||
const reportEmbed = message.embeds[0]!;
|
async execute(context: Client<boolean>, interaction: ButtonInteraction, ...args: any[]): Promise<void> {
|
||||||
|
if (!interaction.inGuild()) return;
|
||||||
|
await interaction.deferReply({ flags: MessageFlags.Ephemeral });
|
||||||
|
|
||||||
const regex = new RegExp(MessageMentions.UsersPattern);
|
try {
|
||||||
|
const guild = await context.guilds.fetch(interaction.guildId);
|
||||||
|
const message = await interaction.message.fetch();
|
||||||
|
|
||||||
const reportedMessageUrl = reportEmbed.fields[0].value;
|
const reportEmbed = message.embeds[0]!;
|
||||||
const reporterId = regex.exec(reportEmbed.fields[2].value)!.groups!.id;
|
const regex = new RegExp(MessageMentions.UsersPattern);
|
||||||
const additionalInfo = reportEmbed.fields[3]?.name == 'Additional Information' ? reportEmbed.fields[3].value : '';
|
|
||||||
|
|
||||||
const reporter = await guild.members.fetch(reporterId) ?? await client.users.fetch(reporterId);
|
const reportedMessageUrl = reportEmbed.fields[0].value;
|
||||||
|
const reporterId = regex.exec(reportEmbed.fields[2].value)!.groups!.id;
|
||||||
|
const additionalInfo = reportEmbed.fields[3]?.name == 'Additional Information' ? reportEmbed.fields[3].value : '';
|
||||||
|
const reporter = await guild.members.fetch(reporterId) ?? await context.users.fetch(reporterId);
|
||||||
|
|
||||||
const thread = await createPrivateHelpTicketThread(client, guild, null, `Ticket creted by staff in response to message report: ${message.url}. Reported message: ${reportedMessageUrl}. ${additionalInfo ? `\n\nAdditional information provided in report:\n${additionalInfo.split('\n').map(c => `> ${c}`).join('\n')}` : ''}`, `Ticket: Message Report From ${reporter.displayName}`, [reporterId, interaction.user.id]);
|
const thread = await createPrivateHelpTicketThread(context, guild, null, `Ticket creted by staff in response to message report: ${message.url}. Reported message: ${reportedMessageUrl}. ${additionalInfo ? `\n\nAdditional information provided in report:\n${additionalInfo.split('\n').map(c => `> ${c}`).join('\n')}` : ''}`, `Ticket: Message Report From ${reporter.displayName}`, [reporterId, interaction.user.id]);
|
||||||
|
if (!thread) throw new Error('An error occured and a thread was not created.');
|
||||||
|
|
||||||
if (thread) {
|
await interaction.editReply({ content: `Ticket Created: ${thread}` });
|
||||||
await interaction.reply({
|
|
||||||
flags: [MessageFlags.Ephemeral],
|
|
||||||
content: `Ticket created: ${thread}`
|
|
||||||
});
|
|
||||||
|
|
||||||
const requestIndex = reportEmbed.fields.findIndex(f => f.name == 'User Requested Private Ticket');
|
const requestIndex = reportEmbed.fields.findIndex(f => f.name == 'User Requested Private Ticket');
|
||||||
if (requestIndex != -1) reportEmbed.fields.splice(requestIndex, 1);
|
if (requestIndex != -1) reportEmbed.fields.splice(requestIndex, 1);
|
||||||
@@ -35,6 +36,10 @@ export default {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await message.edit({ embeds: [reportEmbed], components: [] });
|
await message.edit({ embeds: [reportEmbed], components: [] });
|
||||||
|
} catch (error: Error | any) {
|
||||||
|
await interaction.editReply({ content: error.message }).catch(() => {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
export default new OpenTicketForReportedMessageButton();
|
||||||
Reference in New Issue
Block a user