From 9bc16356800a31ab33aa3b9a077d407e78c4425d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 13 Apr 2024 18:20:49 -0500 Subject: [PATCH] feat: base work --- scripts/buildTest.ts | 32 +++++++++++++++++++++++++ src/core/blitz/fetchBlitz.ts | 3 ++- src/core/blitz/getTankStats.ts | 5 ---- src/core/blitz/idToRegion.ts | 2 +- src/core/blitzkrieg/discordBlitzLink.ts | 4 ++-- src/types/tanksStats.ts | 2 +- 6 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 scripts/buildTest.ts diff --git a/scripts/buildTest.ts b/scripts/buildTest.ts new file mode 100644 index 000000000..82f96880e --- /dev/null +++ b/scripts/buildTest.ts @@ -0,0 +1,32 @@ +import { Locale } from 'discord.js'; +import { REGIONS } from '../src/constants/regions'; +import getTankStats from '../src/core/blitz/getTankStats'; +import { idToRegion } from '../src/core/blitz/idToRegion'; +import usersRaw from '../test.users.json'; + +let done = 0; + +const users = usersRaw.slice(0, 100); +const regionUsers = REGIONS.map((region) => + users.filter((user) => idToRegion(user.blitz) === region), +); +const regionChunkedUsers = await Promise.all( + regionUsers.map(async (regionUsers, index) => { + return await Promise.all( + regionUsers.map(async (user) => { + const region = REGIONS[index]; + const stats = await getTankStats(region, user.blitz, Locale.EnglishUS); + + console.log(`Fetch user ${++done} / ${users.length}`); + + return stats; + }), + ); + }), +); + +regionChunkedUsers.map((users, regionIndex) => { + const region = REGIONS[regionIndex]; + + console.log(region, users.length); +}); diff --git a/src/core/blitz/fetchBlitz.ts b/src/core/blitz/fetchBlitz.ts index 48bd1f211..cc631e376 100644 --- a/src/core/blitz/fetchBlitz.ts +++ b/src/core/blitz/fetchBlitz.ts @@ -10,7 +10,8 @@ type BlitzResponse = data: Data; }; -const MAX_CALLS_PER_SECOND = 10; +// 1 less than 10 to ensure not bad things lol +const MAX_CALLS_PER_SECOND = 9; const queue: { url: string; resolve: (data: object) => void }[] = []; let inProgress = 0; diff --git a/src/core/blitz/getTankStats.ts b/src/core/blitz/getTankStats.ts index 918afc7ee..d83af7a3f 100644 --- a/src/core/blitz/getTankStats.ts +++ b/src/core/blitz/getTankStats.ts @@ -1,7 +1,6 @@ import { Locale } from 'discord.js'; import { Region } from '../../constants/regions'; import { WARGAMING_APPLICATION_ID } from '../../constants/wargamingApplicationID'; -import { UserError } from '../../hooks/userError'; import { TanksStats } from '../../types/tanksStats'; import { translator } from '../localization/translator'; import fetchBlitz from './fetchBlitz'; @@ -16,9 +15,5 @@ export default async function getTankStats( `https://api.wotblitz.${region}/wotb/tanks/stats/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${id}`, ); - if (tankStats[id] === null) { - throw new UserError(t`bot.common.errors.no_tank_stats`); - } - return tankStats[id]; } diff --git a/src/core/blitz/idToRegion.ts b/src/core/blitz/idToRegion.ts index 2c95af2a1..81b6e5b4f 100644 --- a/src/core/blitz/idToRegion.ts +++ b/src/core/blitz/idToRegion.ts @@ -1,6 +1,6 @@ import { Region } from '../../constants/regions'; -export function idToRange(id: number): Region { +export function idToRegion(id: number): Region { if (id >= 42e8) { throw new Error('bot id'); } else if (id >= 31e8) { diff --git a/src/core/blitzkrieg/discordBlitzLink.ts b/src/core/blitzkrieg/discordBlitzLink.ts index 987c95d14..4fdaf5e75 100644 --- a/src/core/blitzkrieg/discordBlitzLink.ts +++ b/src/core/blitzkrieg/discordBlitzLink.ts @@ -1,5 +1,5 @@ import { usersDatabase } from '../../databases/users'; -import { idToRange } from '../blitz/idToRegion'; +import { idToRegion } from '../blitz/idToRegion'; export async function flagUserActivity(blitz: number) { await usersDatabase.users.upsert({ @@ -26,5 +26,5 @@ export async function getBlitzFromDiscord(discord: bigint) { if (unique === null) return null; await flagUserActivity(unique.blitz); - return { id: unique.blitz, region: idToRange(unique.blitz) }; + return { id: unique.blitz, region: idToRegion(unique.blitz) }; } diff --git a/src/types/tanksStats.ts b/src/types/tanksStats.ts index 70aa4986d..73c73fda9 100644 --- a/src/types/tanksStats.ts +++ b/src/types/tanksStats.ts @@ -15,7 +15,7 @@ export interface IndividualTankStats { } export interface TanksStats { - [accountId: number]: IndividualTankStats[]; + [accountId: number]: null | IndividualTankStats[]; } export interface NormalizedTankStats {