feat: get all rankings

This commit is contained in:
ethanf 2024-01-23 17:38:00 -06:00
parent 163f3fe881
commit 7217e968dd
2 changed files with 45 additions and 3 deletions

View File

@ -406,6 +406,9 @@ client.on("messageCreate", async (message) => {
console.log( console.log(
`getting rank of ${applicableName}, ${playerId} at ${rankingsPath}...` `getting rank of ${applicableName}, ${playerId} at ${rankingsPath}...`
); );
if (!fs.existsSync(rankingsPath)) {
fs.writeFileSync(rankingsPath, "{}");
}
const rankings = JSON.parse(fs.readFileSync(rankingsPath)); const rankings = JSON.parse(fs.readFileSync(rankingsPath));
await message.reply( await message.reply(
`${backticks}${applicableName} - ${"*".repeat( `${backticks}${applicableName} - ${"*".repeat(
@ -418,6 +421,46 @@ client.on("messageCreate", async (message) => {
} }
} }
if (args[0] === "rankings") {
await message.reply("getting rankings...");
try {
console.log(`getting rankings at ${rankingsPath}...`);
if (!fs.existsSync(rankingsPath)) {
fs.writeFileSync(rankingsPath, "{}");
}
const rankings = JSON.parse(fs.readFileSync(rankingsPath));
let players = [];
for (const [playerId, rank] of Object.entries(rankings)) {
if (rank > 0) {
const player = await pickupGuild.members.fetch(playerId);
const applicableName = getApplicableName(player);
players.push({ name: applicableName, rank });
}
}
// sort by rank, then name
players.sort((a, b) => {
if (a.rank === b.rank) {
return a.name.localeCompare(b.name);
}
return b.rank - a.rank;
});
// build string
let str = backticks;
const maxNameLength = Math.max(...players.map((p) => p.name.length));
for (const { name, rank } of players) {
str += `${name.padEnd(maxNameLength, " ")} - ${"*".repeat(rank)}\n`;
}
str += backticks;
if (str === backticks + backticks) str = "no rankings found";
await message.reply(str);
} catch (error) {
console.error(error);
await message.reply(`error getting rankings: ${error.message}`);
}
}
if (args[0] === "whitelist") { if (args[0] === "whitelist") {
// add user to config.json whitelist // add user to config.json whitelist
if (args.length < 2) { if (args.length < 2) {
@ -468,7 +511,7 @@ client.on("messageCreate", async (message) => {
} }
if (args[0] === "getwhitelist") { if (args[0] === "getwhitelist") {
let str = `${backticks}${whitelistStr}${backticks}${backticks}` let str = `${backticks}${whitelistStr}${backticks}${backticks}`;
const whitelistIds = whitelistStr.split(","); const whitelistIds = whitelistStr.split(",");
for (const id of whitelistIds) { for (const id of whitelistIds) {
const player = findPlayer(pickupGuild, id); const player = findPlayer(pickupGuild, id);

View File

@ -1 +0,0 @@
{"233036215610245120":0}