50 lines
2.0 KiB
JavaScript
50 lines
2.0 KiB
JavaScript
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js')
|
|
const { mClient } = require('../../../index')
|
|
function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
|
|
require('dotenv').config()
|
|
module.exports = {
|
|
name: 'nutsleaderboard',
|
|
description: 'show nuts leaderboard',
|
|
aliases: ['nl', 'tn', 'topnuts'],
|
|
async execute(message, args) {
|
|
const row = new ActionRowBuilder()
|
|
.addComponents(
|
|
new ButtonBuilder()
|
|
.setLabel('◄')
|
|
.setStyle(ButtonStyle.Primary)
|
|
.setCustomId('nuts_leaderboard_left')
|
|
)
|
|
.addComponents(
|
|
new ButtonBuilder()
|
|
.setLabel('🧑')
|
|
.setStyle(ButtonStyle.Primary)
|
|
.setCustomId('nuts_leaderboard_self')
|
|
)
|
|
.addComponents(
|
|
new ButtonBuilder()
|
|
.setLabel('►')
|
|
.setStyle(ButtonStyle.Primary)
|
|
.setCustomId('nuts_leaderboard_right')
|
|
)
|
|
const db = mClient.db(process.env.M_DB)
|
|
const nutsColl = db.collection('items_nuts')
|
|
let skip = 0
|
|
const nutsData = await nutsColl.find({ nuts: { $gt: 0 } }).sort({ nuts: -1 }).skip(skip).limit(5).toArray()
|
|
let fields
|
|
let placements = skip + 1
|
|
nutsData.forEach((data) => {
|
|
fields = (fields ? fields : '') + (`${placements}. <@${data.userID}> : ${data.nuts} Nuts\r\n`)
|
|
})
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('Nuts Leaderboard')
|
|
.setThumbnail(guild.iconURL({ dynamic: true}))
|
|
.setDescription(fields.toString())
|
|
.setColor('#5865F2') // Discord's blurple color
|
|
.setFooter({ text: 'Use ◄ ► to navigate' });
|
|
await message.reply({
|
|
embeds: [embed],
|
|
components: [row]
|
|
})
|
|
}
|
|
}
|