mirror of https://github.com/clickscodes/nucleus
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.7 KiB
74 lines
2.7 KiB
import type { CommandInteraction } from "discord.js";
|
|
import type 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";
|
|
|
|
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;
|
|
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 as Discord.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) => {
|
|
return true;
|
|
};
|
|
|
|
export { command };
|
|
export { callback };
|
|
export { check };
|