Files
qweribot/src/commands/monthlykdleaderboard.ts

37 lines
1.1 KiB
TypeScript

import { Command, sendMessage } from "commands";
import { getKDLeaderboard } from "db/dbUser";
import User from "user";
type KD = { user: User; kd: number; };
export default new Command({
name: 'monthlykdleaderboard',
aliases: ['monthlyleaderboard', 'kdleaderboard', 'leaderboard'],
usertype: 'chatter',
execution: async msg => {
const monthdata = new Date().toISOString().slice(0, 7);
const rawKD = await getKDLeaderboard(monthdata);
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 < 5 ? userKDs.length : 5); i++) {
txt.push(`${i + 1}. ${userKDs[i]?.user.displayName}: ${userKDs[i]?.kd.toFixed(2)}`);
};
await sendMessage(`Monthly leaderboard: ${txt.join(' | ')}`, msg.messageId);
}
});