Listen for a button interaction instead of using a collector for submit confessions button

This commit is contained in:
powermaker450 2024-10-17 16:07:41 -04:00
parent e58239362c
commit 645a8b2ae7
2 changed files with 23 additions and 31 deletions

View file

@ -21,7 +21,6 @@ import {
ButtonBuilder,
ButtonStyle,
ChatInputCommandInteraction,
ComponentType,
EmbedBuilder,
SlashCommandBuilder,
TextChannel
@ -31,7 +30,6 @@ import { dt } from "../main";
import { StoreMan } from "../storeman";
import getRandomColor from "../utils/getRandomColor";
import Logger from "../utils/Logger";
import { submit } from "../modals";
const logger = new Logger("(/) confess");
@ -133,7 +131,7 @@ export async function execute(interaction: ChatInputCommandInteraction) {
isAttachment(attachment) && adminConfessionEmbed.setImage(attachment);
const submitConfessionButton = new ButtonBuilder()
.setCustomId("submitConfession")
.setCustomId("requestSubmit")
.setLabel("Submit a Confession")
.setStyle(ButtonStyle.Primary);
@ -154,22 +152,6 @@ export async function execute(interaction: ChatInputCommandInteraction) {
components: [actionRow]
});
const collector = message.createMessageComponentCollector({
componentType: ComponentType.Button
});
collector.on("collect", i => {
if (i.customId === "submitConfession") {
// Check if the user is banned from confessions first before displaying the modal
dt.isBanned(i.guild.id, i.user.id)
? i.reply({
content: "You are banned from confessions in this server!",
ephemeral: true
})
: i.showModal(submit);
}
});
await (BotClient.channels.cache.get(adminChannel!) as TextChannel).send({
embeds: [adminConfessionEmbed]
});

View file

@ -81,6 +81,28 @@ BotClient.on(Events.MessageDelete, async message => {
}
});
// Submit Confession button
BotClient.on(Events.InteractionCreate, async interaction => {
if (!interaction.isButton()) {
return;
}
// Changed the id of the submit request button, but keep compatibility for now
const requestSubmit =
interaction.customId === "requestSubmit" ||
interaction.customId === "submitConfession";
if (requestSubmit) {
// Check if the user is banned from confessions before showing the modal
dt.isBanned(interaction.guild?.id!, interaction.user.id)
? interaction.reply({
content: "You are banned from confessions in this server!",
ephemeral: true
})
: interaction.showModal(submit);
}
});
BotClient.on(Events.InteractionCreate, async interaction => {
if (!interaction.isModalSubmit()) {
return;
@ -121,7 +143,6 @@ BotClient.on(Events.InteractionCreate, async interaction => {
const userConfessionEmbed = new EmbedBuilder()
.setColor(color)
.setTitle(`Anonymous Confession \`${messageId}\``)
// @ts-ignore
.setDescription(messageContent);
isAttachment(attachment) && userConfessionEmbed.setImage(attachment);
@ -129,7 +150,6 @@ BotClient.on(Events.InteractionCreate, async interaction => {
const adminConfessionEmbed = new EmbedBuilder()
.setColor(color)
.setTitle(`Anonymous Confession \`${messageId}\``)
// @ts-ignore
.setDescription(messageContent)
.addFields(
{
@ -160,16 +180,6 @@ BotClient.on(Events.InteractionCreate, async interaction => {
components: [actionRow]
});
const collector = message.createMessageComponentCollector({
componentType: ComponentType.Button
});
collector.on("collect", i => {
if (i.customId === "submitConfession") {
i.showModal(submit);
}
});
await (BotClient.channels.cache.get(adminChannel!) as TextChannel).send({
embeds: [adminConfessionEmbed]
});