TheDanniCraft

Untitled

Mar 4th, 2022
1,664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const logger = require(__dirname + '/../logger');
  2. const db = require('quick.db');
  3. const ms = require('ms');
  4. const { MessageEmbed } = require('discord.js');
  5. const { SlashCommandBuilder } = require('@discordjs/builders');
  6.  
  7. module.exports = {
  8.     data: new SlashCommandBuilder()
  9.         .setName('giveaway')
  10.         .setDescription('Verwalte Giveaways')
  11.         .addSubcommand(subcommand =>
  12.             subcommand
  13.                 .setName('start')
  14.                 .setDescription('Starte ein Giveaway')
  15.                 .addStringOption(option =>
  16.                     option.setName('price')
  17.                         .setDescription('Preis für das Giveaway')
  18.                         .setRequired(true))
  19.                 .addIntegerOption(option =>
  20.                     option.setName('winners')
  21.                         .setDescription('Wie viele User das Giveaway gewinnen können')
  22.                         .setRequired(true))
  23.                 .addStringOption(option =>
  24.                     option.setName('duration')
  25.                         .setDescription('Wie lange das Giveaway gehen soll(z.B.: 3d1m für 3 Tage 1 Minute)')
  26.                         .setRequired(true))
  27.                 .addStringOption(option =>
  28.                     option.setName('requirements')
  29.                         .setDescription('Was User tun müssen um das Giveaway zu gewinnen'))
  30.                 .addUserOption(option =>
  31.                     option.setName('sponsor')
  32.                         .setDescription('Den Sponsor des Giveaways, bei keinem Input bist du selber der Sponsor'))
  33.                 .addRoleOption(option =>
  34.                     option.setName('ping')
  35.                         .setDescription('Optionaler Ping bei der Message'))
  36.                 .addChannelOption(option =>
  37.                     option.setName('channel')
  38.                         .setDescription('Channel für das Giveaway, bei keinem Input wird der aktuelle Channel genommen')))
  39.         .addSubcommand(subcommand =>
  40.             subcommand
  41.                 .setName('reroll')
  42.                 .setDescription('Lose ein Giveaway neu aus')
  43.                 .addStringOption(option =>
  44.                     option.setName('messageID')
  45.                         .setDescription('ID der Message')
  46.                         .setRequired(true))
  47.                 .addIntegerOption(option =>
  48.                     option.setName('winners')
  49.                         .setDescription('Wie viele Gewinner neu ausgelost werden sollen')
  50.                         .setRequired(true))),
  51.     async execute(interaction) {
  52.         console.log(interaction.options.getSubcommand())
  53.         const NoPermEmbed = new MessageEmbed()
  54.             .setColor('#f05656')
  55.             .setTitle('Error')
  56.             .setDescription('Du hast nicht die Rechte Giveaways zu erstellen/bearbeiten')
  57.             .setTimestamp();
  58.         const toLowWinnersEmbed = new MessageEmbed()
  59.             .setColor('#f05656')
  60.             .setTitle('Error')
  61.             .setDescription('Du hast nicht die Rechte Giveaways zu erstellen/bearbeiten')
  62.             .setTimestamp();
  63.         const InvalidTimeEmbed = new MessageEmbed()
  64.             .setColor('#f05656')
  65.             .setTitle('Error')
  66.             .setDescription('Wir konnten das Datum nicht ermitteln. Bitte überprüfe deinen Input.')
  67.             .setTimestamp();
  68.  
  69.         if (!interaction.member.permissions.has('ADMINISTRATOR') && !interaction.member.roles.cache.has('822785561819217930')) return interaction.reply({ embeds: [NoPermEmbed], ephemeral: true });
  70.  
  71.         const prize = interaction.options.getString('price');
  72.         let time = ms(interaction.options.getString('duration'));
  73.         let sponsor = interaction.options.getUser('sponsor');
  74.         let channel = interaction.options.getChannel('channel');
  75.         const winners = interaction.options.getInteger('winners');
  76.         let requirements = interaction.options.getString('requirements');
  77.         const ping = interaction.options.getRole('ping');
  78.  
  79.         if (!time) return interaction.reply({ embeds: [InvalidTimeEmbed], ephemeral: true });
  80.  
  81.         if (winners <= 0) return interaction.reply({ embeds: [toLowWinnersEmbed], ephemeral: true });
  82.  
  83.         if (!requirements) requirements = 'Keine Anforderungen!';
  84.  
  85.         if (!channel) channel = interaction.channel;
  86.  
  87.         if (!sponsor) sponsor = interaction.member;
  88.        
  89.         let pingstring = 'Neues Giveaway'
  90.         if(ping) pingstring = `${ping} Neues Giveaway`
  91.  
  92.         time = Date.now() + time;
  93.  
  94.         const unixtime = Math.round(time / 1000);
  95.  
  96.         const giveawayEmbed = new MessageEmbed()
  97.             .setColor('#56f067')
  98.             .setTitle('<a:tada_animated:944275577316196382> Neues Giveaway <a:tada_animated:944275577316196382>')
  99.             .setDescription('Reagiere mit :gift: um am Giveaway teilzunehmen.\n**Wenn du gewinnst und die unten stehenden Anforderungen NICHT erfüllst, bekommst du einen <@&892113387197198376>**')
  100.             .addField('Preis', `**${prize}**`)
  101.             .addField('Sponsor', `Dises Giveaway wurde von ${sponsor} gesponsert! Bedankt euch in <#820711921358733357>!`, true)
  102.             .addField('Endet', `<t:${unixtime}:R>`, true)
  103.             .addField('Gewinner', `${winners} Gewinner`, true)
  104.             .addField('Anforderungen', requirements, false)
  105.             .setTimestamp();
  106.  
  107.         channel.send({ content: pingstring , embeds: [giveawayEmbed] }).then(message => {
  108.             message.react('🎁');
  109.  
  110.             db.set(`giveaways.${message.id}`, {
  111.                 'endsAtTimestamp' : time,
  112.                 'channel' : channel.id,
  113.                 'message' : message.id,
  114.                 'ended' : false,
  115.                 'users' : [],
  116.                 'winners' : winners,
  117.                 'prize' : prize,
  118.                 'req' : requirements,
  119.             });
  120.  
  121.         });
  122.         logger.info(`${interaction.member.displayName} hat ein Giveaway gestartet`);
  123.  
  124.         interaction.reply({ content: `Giveaway erstellt in ${channel}`, ephemeral: true });
  125.     },
  126. };
Advertisement
Add Comment
Please, Sign In to add comment