Basic leaderboard implimentation, will upgrade later

This commit is contained in:
Christopher Cookman 2023-04-19 22:39:31 -06:00
parent 5a5345b429
commit 07921164fb
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42
2 changed files with 34 additions and 0 deletions

View file

@ -11,5 +11,10 @@
"required": false
}
]
},
{
"name": "leaderboard",
"description": "Get the top 10 users",
"type": 1
}
]

View file

@ -156,6 +156,35 @@ client.on("interactionCreate", async interaction => {
}
});
break;
case "leaderboard":
await db.all(`SELECT * FROM levels ORDER BY totalXp DESC`, async (err, rows) => {
if (err) {
console.error(err);
}
if (!rows) return interaction.reply({
content: "No one has sent any messages yet.",
ephemeral: true
});
if (rows) {
let leaderboard = [];
// Top 10
for (let i = 0; i < 10; i++) {
if (rows[i]) {
let user = await client.users.fetch(rows[i].id);
let lvl = rows[i].lvl;
leaderboard.push(`${i + 1}. <@${user.id}> - Level ${rows[i].lvl} - ${rows[i].totalXp} XP - ${rows[i].msgCount} Messages`);
}
}
interaction.reply({
embeds: [{
title: "Leaderboard",
description: leaderboard.join("\n"),
color: 0x00ff00
}]
});
}
});
break;
};
});