mirror of
https://github.com/qwerinope/qweribot.git
synced 2025-12-19 08:41:39 +01:00
39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
import { getKDLeaderboard } from "db/dbUser";
|
|
import { Command, sendMessage } from "lib/commandUtils";
|
|
import User from "user";
|
|
|
|
type KD = { user: User; kd: number };
|
|
|
|
export default new Command({
|
|
name: "alltimekdleaderboard",
|
|
aliases: ["alltimeleaderboard", "alltimekdleaderboard"],
|
|
usertype: "chatter",
|
|
execution: async (msg) => {
|
|
const rawKD = await getKDLeaderboard();
|
|
if (rawKD.length === 0) {
|
|
await sendMessage(`No users on leaderboard yet!`, msg.messageId);
|
|
return;
|
|
}
|
|
|
|
const userKDs: KD[] = [];
|
|
await Promise.all(
|
|
rawKD.map(async (userRecord) => {
|
|
const user = await User.initUserId(userRecord.userId.toString());
|
|
if (!user) return;
|
|
userKDs.push({ user, kd: userRecord.KD });
|
|
}),
|
|
);
|
|
|
|
userKDs.sort((a, b) => b.kd - a.kd);
|
|
|
|
const txt: string[] = [];
|
|
for (let i = 0; i < (userKDs.length < 10 ? userKDs.length : 10); i++) {
|
|
txt.push(
|
|
`${i + 1}. ${userKDs[i]?.user.displayName}: ${userKDs[i]?.kd.toFixed(2)}`,
|
|
);
|
|
}
|
|
|
|
await sendMessage(`Alltime leaderboard: ${txt.join(" | ")}`, msg.messageId);
|
|
},
|
|
});
|