mirror of
https://github.com/qwerinope/qweribot.git
synced 2025-12-20 05:51:39 +01:00
rewrite kd leaderboard generation, add explicit relations to schema
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { Command, sendMessage } from "commands";
|
||||
import { getAllUserRecords } from "db/dbUser";
|
||||
import { getTimeoutStats } from "lib/getStats";
|
||||
import { getKDLeaderboard } from "db/dbUser";
|
||||
import User from "user";
|
||||
|
||||
type KD = { user: User; kd: number; };
|
||||
@@ -10,27 +9,21 @@ export default new Command({
|
||||
aliases: ['monthlyleaderboard', 'kdleaderboard', 'leaderboard'],
|
||||
usertype: 'chatter',
|
||||
execution: async msg => {
|
||||
const users = await getAllUserRecords();
|
||||
if (!users) return;
|
||||
const monthdata = new Date().toISOString().slice(0, 7);
|
||||
|
||||
const userKDs: KD[] = [];
|
||||
await Promise.all(users.map(async userRecord => {
|
||||
const user = await User.initUserId(userRecord.id.toString());
|
||||
if (!user) return;
|
||||
const data = await getTimeoutStats(user, true);
|
||||
if (!data) return;
|
||||
if (data.hit.blaster < 5) return;
|
||||
|
||||
let kd = data.shot.blaster / data.hit.blaster;
|
||||
if (isNaN(kd)) kd = 0;
|
||||
userKDs.push({ user, kd });
|
||||
}));
|
||||
|
||||
if (userKDs.length === 0) {
|
||||
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[] = [];
|
||||
|
||||
Reference in New Issue
Block a user