mirror of
https://github.com/qwerinope/qweribot.git
synced 2025-12-19 01:01:39 +01:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { Command, sendMessage } from "lib/commandUtils";
|
|
import { getKDLeaderboard } from "db/dbUser";
|
|
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);
|
|
}
|
|
});
|