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.
82 lines
3.7 KiB
82 lines
3.7 KiB
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, CommandInteraction } from "discord.js";
|
|
import type { SlashCommandSubcommandBuilder } from "@discordjs/builders";
|
|
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
|
|
import client from "../../utils/client.js";
|
|
import { LoadingEmbed } from "../../utils/defaults.js";
|
|
|
|
const command = (builder: SlashCommandSubcommandBuilder) =>
|
|
builder.setName("premium").setDescription("Information about Nucleus Premium");
|
|
|
|
const callback = async (interaction: CommandInteraction): Promise<void> => {
|
|
await interaction.reply({embeds: LoadingEmbed, ephemeral: true})
|
|
const member = await (await interaction.client.guilds.fetch("684492926528651336")).members.fetch(interaction.user.id)
|
|
const firstDescription = "\n\nPremium allows your server to get access to extra features, for a fixed price per month.\nThis includes:\n" +
|
|
"- Attachment logs - Stores attachments so they can be viewed after a message is deleted.\n" +
|
|
"- Ticket Transcripts - Gives a link to view the history of a ticket after it has been closed.\n"
|
|
if(!member) {
|
|
interaction.editReply({ embeds: [
|
|
new EmojiEmbed()
|
|
.setTitle("Premium")
|
|
.setDescription(
|
|
`*You are not currently in the Clicks Server. To gain access to premium please join.*` + firstDescription
|
|
)
|
|
.setEmoji("NUCLEUS.LOGO")
|
|
.setStatus("Danger")
|
|
], components: [new ActionRowBuilder<ButtonBuilder>().addComponents(new ButtonBuilder().setStyle(ButtonStyle.Link).setLabel("Join").setURL("https://discord.gg/bPaNnxe"))] });
|
|
return;
|
|
}
|
|
const dbMember = await client.database.premium.fetchTotal(interaction.user.id)
|
|
let premium;
|
|
let count = 0;
|
|
if (member.roles.cache.has("1066468879309750313")) {
|
|
premium = `You have Infinite Premium! You have been gifted this by the developers as a thank you. You can give premium to any and all servers you are in.`;
|
|
count = 200;
|
|
} else if (member.roles.cache.has("1066465491713003520")) {
|
|
premium = `You have Premium tier 1! You can give premium to ${1 - dbMember}.`;
|
|
count = 1;
|
|
} else if (member.roles.cache.has("1066439526496604194")) {
|
|
premium = `You have Premium tier 2! You can give premium to ${3 - dbMember}.`;
|
|
count = 3;
|
|
} else if (member.roles.cache.has("1066464134322978912")) {
|
|
premium = `You have Premium Mod! You already give premium to all servers you have a "manage" permission in.`
|
|
count = 3;
|
|
}
|
|
|
|
let closed = false;
|
|
do {
|
|
interaction.editReply({
|
|
embeds: [
|
|
new EmojiEmbed()
|
|
.setTitle("Premium")
|
|
.setDescription(
|
|
premium + firstDescription
|
|
)
|
|
.setEmoji("NUCLEUS.LOGO")
|
|
.setStatus("Danger")
|
|
],
|
|
components: [
|
|
new ActionRowBuilder<ButtonBuilder>()
|
|
.addComponents(
|
|
new ButtonBuilder()
|
|
.setStyle(ButtonStyle.Primary)
|
|
.setLabel("Activate Premium here")
|
|
.setCustomId("premiumActivate")
|
|
.setDisabled(count <= 0)
|
|
)
|
|
]
|
|
});
|
|
|
|
const filter = (i: any) => i.customId === "premiumActivate" && i.user.id === interaction.user.id;
|
|
const collector = interaction.channel?.awaitMessageComponent({ filter, time: 60000 });
|
|
|
|
} while (closed);
|
|
};
|
|
|
|
const check = () => {
|
|
return true;
|
|
};
|
|
|
|
export { command };
|
|
export { callback };
|
|
export { check };
|