Holana/commands/end.js

71 lines
1.8 KiB
JavaScript
Raw Normal View History

2022-12-02 08:54:36 +00:00
const Discord = require("discord.js");
2021-10-08 23:58:57 +00:00
module.exports = {
2022-12-02 08:54:36 +00:00
description: "End a giveaway",
2021-10-09 07:31:19 +00:00
2022-12-02 08:54:36 +00:00
options: [
{
name: "giveaway",
description: "The giveaway to end (message ID or giveaway prize)",
type: Discord.ApplicationCommandOptionType.String,
required: true,
},
],
2021-10-09 07:31:19 +00:00
2022-12-02 08:54:36 +00:00
run: async (client, interaction) => {
// If the member doesn't have enough permissions
if (
!interaction.member.permissions.has("MANAGE_MESSAGES") &&
!interaction.member.roles.cache.some((r) => r.name === "Giveaways")
) {
return interaction.reply({
content:
":x: You need to have the manage messages permissions to end giveaways.",
ephemeral: true,
});
}
2021-10-08 23:58:57 +00:00
2022-12-02 08:54:36 +00:00
const query = interaction.options.getString("giveaway");
2021-10-08 23:58:57 +00:00
2022-12-02 08:54:36 +00:00
// try to found the giveaway with prize then with ID
const giveaway =
// Search with giveaway prize
client.giveawaysManager.giveaways.find(
(g) => g.prize === query && g.guildId === interaction.guild.id
) ||
// Search with giveaway ID
client.giveawaysManager.giveaways.find(
(g) => g.messageId === query && g.guildId === interaction.guild.id
);
2021-10-09 07:31:19 +00:00
2022-12-02 08:54:36 +00:00
// If no giveaway was found
if (!giveaway) {
return interaction.reply({
content: "Unable to find a giveaway for `" + query + "`.",
ephemeral: true,
});
}
2021-10-08 23:58:57 +00:00
2022-12-02 08:54:36 +00:00
if (giveaway.ended) {
return interaction.reply({
content: "This giveaway is already ended.",
ephemeral: true,
});
}
2021-10-08 23:58:57 +00:00
2022-12-02 08:54:36 +00:00
// Edit the giveaway
client.giveawaysManager
.end(giveaway.messageId)
// Success message
.then(() => {
2021-10-08 23:58:57 +00:00
// Success message
2022-12-02 08:54:36 +00:00
interaction.reply("Giveaway ended!");
})
.catch((e) => {
interaction.reply({
content: e,
ephemeral: true,
2021-10-08 23:58:57 +00:00
});
2022-12-02 08:54:36 +00:00
});
},
2021-10-08 23:58:57 +00:00
};