Files
blitzkit/packages/bot/src/core/blitzstars/getPlayerStats.ts
T

37 lines
985 B
TypeScript
Raw Normal View History

2025-10-13 23:20:26 -05:00
import type { BlitzStats, Region } from "@blitzkit/core";
2023-10-12 13:00:33 -05:00
2024-03-12 23:36:56 -05:00
interface IndividualPlayerStats {
2023-10-12 13:00:33 -05:00
clan: { clan_id: number; name: string; tag: string };
statistics: {
2024-08-10 13:29:10 -05:00
all: BlitzStats;
2023-10-12 13:00:33 -05:00
wn8: number;
wn7: number;
average_tier: number;
};
last_battle_time: number;
nickname: string;
account_id: number;
achievements: {
account_id: number;
[key: string]: number;
};
region: Region;
}
export type PlayerStats = IndividualPlayerStats[];
export async function getPlayerStats<
Ids extends number | number[],
ReturnType = Ids extends number ? PlayerStats : PlayerStats[],
>(region: Region, ids: Ids) {
const stats = await Promise.all(
2025-10-13 23:20:26 -05:00
((typeof ids === "number" ? [ids] : ids) as number[]).map((id) =>
2023-10-12 13:00:33 -05:00
fetch(`https://www.blitzstars.com/api/playerstats/${id}`).then(
2025-10-13 23:20:26 -05:00
(response) => response.json() as Promise<PlayerStats>
)
)
2023-10-12 13:00:33 -05:00
);
2025-10-13 23:20:26 -05:00
if (typeof ids === "number") return stats[0] as ReturnType;
2023-10-12 13:00:33 -05:00
return stats as ReturnType;
}