discord-multipurpose-bot/commands/fun/leaderboard.js

52 lines
1.5 KiB
JavaScript

const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
const Leaderboard = require("../../models/Leaderboard");
module.exports = {
data: new SlashCommandBuilder()
.setName("leaderboard")
.setDescription("Displays the trivia leaderboard"),
async execute(interaction, client) {
const guild = interaction.guild;
try {
const scores = await Leaderboard.find()
.sort({ correctAnswers: -1 })
.limit(10);
const leaderboardEmbed = new EmbedBuilder()
.setColor("#0099ff")
.setTitle("Trivia Leaderboard")
.setDescription(
scores
.map(
(entry, index) =>
`${index + 1}. ${entry.username}: ${
entry.correctAnswers
} correct answers in ${entry.gamesPlayed} games`
)
.join("\n")
)
.setTimestamp();
if (guild.iconURL()) {
leaderboardEmbed.setFooter({
text: guild.name,
iconURL: guild.iconURL(),
});
} else {
leaderboardEmbed.setFooter({
text: guild.name,
});
}
await interaction.reply({ embeds: [leaderboardEmbed] });
} catch (error) {
console.error("Error executing leaderboard command:", error);
await interaction.reply({
content: "There was an error while executing this command!",
ephemeral: true,
});
}
},
};