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}!`); } };