75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
|
const ms = require('ms');
|
||
|
const messages = require("../utils/messages");
|
||
|
|
||
|
module.exports = {
|
||
|
|
||
|
description: 'Start a giveaway',
|
||
|
|
||
|
options: [
|
||
|
{
|
||
|
name: 'duration',
|
||
|
description: 'How long the giveaway should last for. Example values: 1m, 1h, 1d',
|
||
|
type: 'STRING',
|
||
|
required: true
|
||
|
},
|
||
|
{
|
||
|
name: 'winners',
|
||
|
description: 'How many winners the giveaway should have',
|
||
|
type: 'INTEGER',
|
||
|
required: true
|
||
|
},
|
||
|
{
|
||
|
name: 'prize',
|
||
|
description: 'What the prize of the giveaway should be',
|
||
|
type: 'STRING',
|
||
|
required: true
|
||
|
},
|
||
|
{
|
||
|
name: 'channel',
|
||
|
description: 'The channel to start the giveaway in',
|
||
|
type: 'CHANNEL',
|
||
|
required: true
|
||
|
}
|
||
|
],
|
||
|
|
||
|
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 start giveaways.',
|
||
|
ephemeral: true
|
||
|
});
|
||
|
}
|
||
|
|
||
|
const giveawayChannel = interaction.options.getChannel('channel');
|
||
|
const giveawayDuration = interaction.options.getString('duration');
|
||
|
const giveawayWinnerCount = interaction.options.getInteger('winners');
|
||
|
const giveawayPrize = interaction.options.getString('prize');
|
||
|
|
||
|
if(!giveawayChannel.isText()) {
|
||
|
return interaction.reply({
|
||
|
content: ':x: Selected channel is not text-based.',
|
||
|
ephemeral: true
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Start the giveaway
|
||
|
client.giveawaysManager.start(giveawayChannel, {
|
||
|
// The giveaway duration
|
||
|
duration: ms(giveawayDuration),
|
||
|
// The giveaway prize
|
||
|
prize: giveawayPrize,
|
||
|
// The giveaway winner count
|
||
|
winnerCount: giveawayWinnerCount,
|
||
|
// Who hosts this giveaway
|
||
|
hostedBy: client.config.hostedBy ? interaction.user : null,
|
||
|
// Messages
|
||
|
messages
|
||
|
});
|
||
|
|
||
|
interaction.reply(`Giveaway started in ${giveawayChannel}!`);
|
||
|
|
||
|
}
|
||
|
|
||
|
};
|