blob: e31696b6d019e9a1010f9b7cdb893cebb7eeed51 [file] [log] [blame]
import { LoadingEmbed } from './../../utils/defaultEmbeds.js';
import { ButtonStyle, CommandInteraction } from "discord.js";
import Discord from "discord.js";
import type { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import confirmationMessage from "../../utils/confirmationMessage.js";
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
import client from "../../utils/client.js";
import getEmojiByName from '../../utils/getEmojiByName.js';
const command = (builder: SlashCommandSubcommandBuilder) =>
builder
.setName("suggest")
.setDescription("Sends a suggestion to the developers")
.addStringOption((option) =>
option.setName("suggestion").setDescription("The suggestion to send").setRequired(true)
);
const callback = async (interaction: CommandInteraction): Promise<void> => {
await interaction.guild?.members.fetch(interaction.member!.user.id)
const { renderUser } = client.logger;
const suggestion = interaction.options.get("suggestion")?.value as string;
await interaction.reply({embeds: LoadingEmbed, ephemeral: true})
const confirmation = await new confirmationMessage(interaction)
.setEmoji("ICONS.OPP.ADD")
.setTitle("Suggest")
.setDescription(
`**Suggestion:**\n> ${suggestion}\n` +
"Your username and ID will also be sent with your suggestion.\n\nAre you sure you want to send this suggestion?"
)
.setColor("Danger")
.setInverted(true)
.send(true);
if (confirmation.cancelled) return;
if (confirmation.success) {
await (client.channels.cache.get("955161206459600976") as Discord.TextChannel).send({
embeds: [
new EmojiEmbed()
.setTitle("Suggestion")
.setDescription(
`**From:** ${renderUser(interaction.member!.user as Discord.User)}\n**Suggestion:**\n> ${suggestion}\n\n` +
`**Server:** ${interaction.guild!.name} (${interaction.guild!.id})\n`,
)
.setStatus("Warning")
], components: [new Discord.ActionRowBuilder<Discord.ButtonBuilder>().addComponents(
new Discord.ButtonBuilder()
.setCustomId("suggestionAccept")
.setLabel("Accept")
.setStyle(ButtonStyle.Secondary)
.setEmoji(getEmojiByName("ICONS.ADD", "id")),
new Discord.ButtonBuilder()
.setCustomId("suggestionDeny")
.setLabel("Delete")
.setStyle(ButtonStyle.Secondary)
.setEmoji(getEmojiByName("ICONS.REMOVE", "id"))
)]
});
await interaction.editReply({
embeds: [
new EmojiEmbed()
.setEmoji("ICONS.ADD")
.setTitle("Suggest")
.setDescription("Your suggestion was sent successfully")
.setStatus("Success")
],
components: []
});
} else {
await interaction.editReply({
embeds: [
new EmojiEmbed()
.setEmoji("ICONS.OPP.ADD")
.setTitle("Suggest")
.setDescription("No changes were made")
.setStatus("Danger")
],
components: []
});
}
};
const check = (_interaction: CommandInteraction) => {
return true;
};
export { command };
export { callback };
export { check };