fix: /rating use midnight leaderboard

This commit is contained in:
TrèsAbhi committed 2024-03-30 12:38:53 -05:00
1 parent 095ffc3d6a
commit c18ee70eba
1 file changed
+13 -8
+13 -8
View File
@@ -10,7 +10,7 @@ import getRatingInfo from '../core/blitz/getRatingInfo';
import { getRatingNeighbors } from '../core/blitz/getRatingNeighbors'; import { getRatingNeighbors } from '../core/blitz/getRatingNeighbors';
import { normalizeLeagueIcon } from '../core/blitz/normalizeLeagueIcon'; import { normalizeLeagueIcon } from '../core/blitz/normalizeLeagueIcon';
import { emblemURL } from '../core/blitzkrieg/emblemURL'; import { emblemURL } from '../core/blitzkrieg/emblemURL';
import { getArchivedRatingLeaderboard } from '../core/blitzkrieg/getArchivedRatingLeaderboard'; import getArchivedRatingMidnightLeaderboard from '../core/blitzkrieg/getArchivedRatingMidnightLeaderboard';
import { webpToPng } from '../core/blitzkrieg/iconPng'; import { webpToPng } from '../core/blitzkrieg/iconPng';
import addUsernameChoices from '../core/discord/addUsernameChoices'; import addUsernameChoices from '../core/discord/addUsernameChoices';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
@@ -42,9 +42,12 @@ export const ratingCommand = new Promise<CommandRegistry>((resolve) => {
const { id, region } = await resolvePlayerFromCommand(interaction); const { id, region } = await resolvePlayerFromCommand(interaction);
const clan = (await getClanAccountInfo(region, id, ['clan']))?.clan; const clan = (await getClanAccountInfo(region, id, ['clan']))?.clan;
const clanImage = clan ? emblemURL(clan.emblem_set_id) : undefined; const clanImage = clan ? emblemURL(clan.emblem_set_id) : undefined;
const leaderboard = await getArchivedRatingLeaderboard(region, 53); const leaderboard = await getArchivedRatingMidnightLeaderboard(
region,
53,
);
if (leaderboard.format === BkrlFormat.Base) { if (leaderboard?.format === BkrlFormat.Base) {
throw new Error( throw new Error(
'Encountered bkrl minimal format in latest season. Wait till next cron?', 'Encountered bkrl minimal format in latest season. Wait till next cron?',
); );
@@ -54,11 +57,11 @@ export const ratingCommand = new Promise<CommandRegistry>((resolve) => {
const accountInfo = await getAccountInfo(region, id, [ const accountInfo = await getAccountInfo(region, id, [
'statistics.rating', 'statistics.rating',
]); ]);
const statsIndex = leaderboard.entries.findIndex( const statsIndex = leaderboard?.entries.findIndex(
(entry) => entry.id === id, (entry) => entry.id === id,
); );
const statsA = leaderboard.entries[statsIndex]; const statsA = leaderboard ? leaderboard.entries[statsIndex!] : null;
const numberA = statsIndex + 1; const positionA = leaderboard ? statsIndex! + 1 : undefined;
const statsB1 = accountInfo.statistics.rating!; const statsB1 = accountInfo.statistics.rating!;
const [statsB2] = (await getRatingNeighbors(region, id, 0)).neighbors; const [statsB2] = (await getRatingNeighbors(region, id, 0)).neighbors;
const league = getLeagueFromScore(statsB2.score); const league = getLeagueFromScore(statsB2.score);
@@ -80,7 +83,9 @@ export const ratingCommand = new Promise<CommandRegistry>((resolve) => {
statsB2.number >= reward.from_position && statsB2.number >= reward.from_position &&
statsB2.number <= reward.to_position, statsB2.number <= reward.to_position,
); );
const positionDelta = statsB2.number - numberA; const positionDelta = leaderboard
? statsB2.number - positionA!
: undefined;
const delta = deltaBkrlBlitzStats( const delta = deltaBkrlBlitzStats(
statsA, statsA,
accountInfo.statistics.rating!, accountInfo.statistics.rating!,
@@ -204,7 +209,7 @@ export const ratingCommand = new Promise<CommandRegistry>((resolve) => {
> >
#{statsB2.number.toLocaleString(interaction.locale)} #{statsB2.number.toLocaleString(interaction.locale)}
</span> </span>
{positionDelta !== 0 && ( {positionDelta !== undefined && positionDelta !== 0 && (
<> <>
<DeltaCaret delta={positionDelta} /> <DeltaCaret delta={positionDelta} />
<span <span