kmsprozn

lb-submissions

Jul 20th, 2024 (edited)
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const {
  2.   ActionRowBuilder,
  3.   ButtonBuilder,
  4.   ButtonStyle,
  5.   ComponentType,
  6.   EmbedBuilder,
  7.   PermissionsBitField,
  8.   SlashCommandBuilder,
  9. } = require('discord.js');
  10. const mConfig = require('../../utils/messageConfig.json');
  11. const eConfig = require('../../utils/emoji.json');
  12. const leader = require('../../Schemas/leaderSchema');
  13.  
  14. module.exports = {
  15.   data: new SlashCommandBuilder()
  16.     .setName('lb')
  17.     .setDescription('TGR Leaderboard')
  18.     .setDMPermission(false)
  19.     .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageChannels)
  20.     .addSubcommand(command => command
  21.       .setName('add')
  22.       .setDescription('Add an Entry to the Leaderboard Database')
  23.       .addUserOption(option => option
  24.         .setName('setter')
  25.         .setDescription('The Setter for This BG Session')
  26.         .setRequired(true)
  27.       )
  28.       .addNumberOption(option => option
  29.         .setName('relics')
  30.         .setDescription('The Amount of Relics Received')
  31.         .setRequired(true)
  32.       )
  33.       .addStringOption(option => option
  34.         .setName('hero')
  35.         .setDescription('The Hero the Relics were For')
  36.         .setRequired(true)
  37.         .addChoices(
  38.           { name: 'mance', value: `${eConfig.Mance} MANCE ${eConfig.Mance}` },
  39.           { name: 'rattle', value: `${eConfig.Rattle} RATTLE ${eConfig.Rattle}` }
  40.         )
  41.       )
  42.       .addStringOption(option => option
  43.         .setName('fillers')
  44.         .setDescription('The Fillers for This Session')
  45.         .setRequired(true)
  46.       )
  47.     )
  48.     .addSubcommand(command => command
  49.       .setName('check')
  50.       .setDescription('Check the Current Leaderboard Submissions')
  51.     )
  52.     .addSubcommand(command => command
  53.       .setName('remove')
  54.       .setDescription('Remove a Leaderboard Submission')
  55.       .addStringOption(option => option
  56.         .setName('id')
  57.         .setDescription('The ID of the Submission. Use /lb check to Get the ID.')
  58.         .setRequired(true)
  59.       )
  60.     ),
  61.   async execute(interaction) {
  62.     await interaction.deferReply({ ephemeral: true });
  63.     const { options } = interaction;
  64.     if (!interaction.member.permissions.has(
  65.         PermissionsBitField.Flags.ManageChannels)
  66.     )
  67.       return await interaction.reply({
  68.         content: `Sorry You Do Not Have Permission for This Command`,
  69.         ephemeral: true,
  70.       });
  71.     const sub = options.getSubcommand();
  72.     let data;
  73.     //const data = await leader.findOne({ Setter: interaction.guild.id });
  74.  
  75.     switch (sub) {
  76.       case 'add':
  77.         const setter = options.getUser('setter');
  78.         const relics = options.getNumber('relics');
  79.         const hero = options.getString('hero');
  80.         const fillers = options.getString('fillers');
  81.         await leader.create({
  82.           Guild: interaction.guild.id,
  83.           Hero: hero,
  84.           Setter: setter.id,
  85.           Relics: relics,
  86.           Fillers: fillers,
  87.         });
  88.         await interaction.editReply('New Submission Entered');
  89.  
  90.     break;
  91.       case 'check':
  92.         data = await leader.find({Guild: interaction.guild.id});
  93.         var string = ``;
  94.         await data.forEach(async (value) => {
  95.           string += `\n\n> ID: \`${value._id}\`\n> Hero: \`${value.Hero}\`\n> Setter: \`${value.Setter}\`\n> Relics: \`${value.Relics}\`\n> Fillers: \`${value.Fillers}\` \n`;
  96.         });
  97.         if (string.length == 0)
  98.           string = 'Looks Like Nothing Has Been Submitted Yet';
  99.         await interaction.editReply('Submission Embed Sent.');
  100.         const embed = new EmbedBuilder()
  101.           .setColor(`${mConfig.PeachEmbed}`)
  102.           .setTitle('BG Leaderboard Submissions')
  103.           .setDescription(string);
  104.         await interaction.followUp({
  105.           embeds: [embed],
  106.           ephemeral: true,
  107.         });
  108.  
  109.     break;
  110.       case 'remove':
  111.         const lbId = options.getString('id');
  112.         data = await leader.findOne({
  113.           Guild: interaction.guild.id,
  114.           _id: lbId,
  115.         });
  116.         if (!data) {
  117.           await interaction.editReply('This ID is Not in the Database. Please Double Check You Typed it Correctly.');
  118.         } else {
  119.           await leader.deleteOne({
  120.             Guild: interaction.guild.id,
  121.             _id: lbId,
  122.           });
  123.           await interaction.editReply('Successfully Deleted Submission');
  124.         };
  125.     }
  126.   },
  127. };
Advertisement
Add Comment
Please, Sign In to add comment