| import Discord, { CommandInteraction } from "discord.js"; |
| import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; |
| import { WrappedCheck } from "jshaiku"; |
| import confirmationMessage from "../../utils/confirmationMessage.js"; |
| import EmojiEmbed from "../../utils/generateEmojiEmbed.js"; |
| import client from "../../utils/client.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> => { |
| const { renderUser } = client.logger; |
| const suggestion = interaction.options.getString("suggestion"); |
| 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(); |
| 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)}\n**Suggestion:**\n> ${suggestion}` |
| ) |
| .setStatus("Danger") |
| .setEmoji("NUCLEUS.LOGO") |
| ] |
| }); |
| 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, _defaultCheck: WrappedCheck) => { |
| return true; |
| }; |
| |
| export { command }; |
| export { callback }; |
| export { check }; |