Advertisement
kmsprozn

leaderboard view

Jul 20th, 2024
112
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('leaderboard')
  17.     .setDescription('TGR Leaderboard')
  18.     .setDMPermission(false),
  19.   async execute(interaction) {
  20.     await interaction.deferReply({ ephemeral: true });
  21.     const { options } = interaction;
  22.     async function total() {
  23.       var data = await leader.find({Guild: interaction.guild.id});
  24.       var standings = [];
  25.       await data.forEach(async d => {
  26.         standings.push({
  27.           setter: d.Setter,
  28.           relics: d.Relics,
  29.           fillers: d.Fillers
  30.         });
  31.       });
  32.       return standings;
  33.     }
  34.       async function lbSetter(setter) {
  35.         var data = await leader.find({Guild: interaction.guild.id});
  36.         if (!data) return 'No Data Found';
  37.  
  38.         if (setter) {
  39.           var standings = await total();
  40.           standings.sort((a, b) => b.relics - a.relics);
  41.           return standings.findIndex((item) => item.setter === setter) + 1;
  42.         }
  43.       }
  44.     const data = await leader.findOne({Guild: interaction.guild.id});
  45.     if (!data) return await interaction.editReply('There Appears to be 0 Submissions Yet');
  46.     else {
  47.       var lBoard = await total();
  48.       lBoard.sort((a, b) => b.relics - a.relics)
  49.       var output = lBoard.slice(0, 5);
  50.       var string;
  51.       var num = 1;
  52.       await output.forEach(async value => {
  53.         const member = await interaction.guild.members.cache.get(value.setter);
  54.         string += `#${num} **Setter:** **${member.user.username}**, Relics: \`${value.relics}\`\n*w/* *${value.fillers}*\n`;
  55.         num++;
  56.       });
  57.       string = string.replace('undefined', '');
  58.       const embed = new EmbedBuilder()
  59.         .setColor(`${mConfig.PeachEmbed}`)
  60.         .setTitle(`${interaction.guild.name}'s BG Leaderboard`)
  61.         .setDescription(`${string}`);
  62.       await interaction.editReply('Leaderboard Sent Below');
  63.       await interaction.followUp({embeds: [embed]});
  64.  
  65.     }
  66.   },
  67. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement