diff --git a/src/behaviors/interactionCreate.ts b/src/behaviors/interactionCreate.ts index bd4ae2925..4b9f674e4 100644 --- a/src/behaviors/interactionCreate.ts +++ b/src/behaviors/interactionCreate.ts @@ -38,7 +38,7 @@ try { const data = (await rest.put( Routes.applicationGuildCommands(getClientId(), discord.guild_id), { body: commands }, - )) as { length: number }; + )) as RESTPostAPIChatInputApplicationCommandsJSONBody[]; console.log(`Successfully reloaded ${data.length} command(s).`); } catch (error) { diff --git a/src/commands/eligible.ts b/src/commands/eligible.ts index a5d4e84e7..0d9cd5860 100644 --- a/src/commands/eligible.ts +++ b/src/commands/eligible.ts @@ -11,8 +11,6 @@ import getBlitzAccount from '../utilities/getBlitzAccount.js'; import getBlitzStarsAccount from '../utilities/getBlitzStarsAccount.js'; import poweredByBlitzStars from '../utilities/poweredByBlitzStars.js'; -export const inDev = true; - export const CLANS = { sklld: { name: 'Skilled', diff --git a/src/commands/inactive.ts b/src/commands/inactive.ts index da839ffc4..5237997c8 100644 --- a/src/commands/inactive.ts +++ b/src/commands/inactive.ts @@ -10,8 +10,6 @@ import { ClanDetails } from '../types/clanDetails.js'; import { PlayerPersonalData } from '../types/playerPersonalData.js'; import { CLANS } from './eligible.js'; -export const inDev = true; - const DEFAULT_THRESHOLD = 7; export async function execute( @@ -28,7 +26,7 @@ export async function execute( ).json()) as ClanDetails; const clan = clanData.data[CLANS[clanName].id]; const memberIds = clan.members_ids; - const accountInfo = (await ( + const playerPersonalData = (await ( await fetch( `https://api.wotblitz.com/wotb/account/info/?application_id=${ process.env.WARGAMING_APPLICATION_ID @@ -38,10 +36,10 @@ export async function execute( const inactiveInfo = memberIds .map((memberId) => { - const member = accountInfo.data[memberId]; + const member = playerPersonalData.data[memberId]; const inactiveDays = (time - member.last_battle_time) / 60 / 60 / 24; - return [member.nickname, inactiveDays] as [string, number]; + return [member.nickname, inactiveDays] as const; }) .filter(([, inactiveDays]) => inactiveDays >= threshold) .sort((a, b) => b[1] - a[1]) diff --git a/src/commands/stats.ts b/src/commands/stats.ts index 7e8a3009d..6e564dc15 100644 --- a/src/commands/stats.ts +++ b/src/commands/stats.ts @@ -11,8 +11,6 @@ import getBlitzAccount from '../utilities/getBlitzAccount.js'; import getBlitzStarsAccount from '../utilities/getBlitzStarsAccount.js'; import poweredByBlitzStars from '../utilities/poweredByBlitzStars.js'; -export const inDev = true; - export async function execute( interaction: ChatInputCommandInteraction, ) { diff --git a/src/commands/verify.ts b/src/commands/verify.ts index 046729c03..6f3a1e28f 100644 --- a/src/commands/verify.ts +++ b/src/commands/verify.ts @@ -8,10 +8,9 @@ import fetch from 'node-fetch'; import discord from '../../discord.json' assert { type: 'json' }; import { NEGATIVE_COLOR, POSITIVE_COLOR } from '../constants/colors.js'; import { SERVERS } from '../constants/servers.js'; +import { PlayerClanData } from '../types/playerClanData.js'; import getBlitzAccount from '../utilities/getBlitzAccount.js'; -export const inDev = true; - export async function execute( interaction: ChatInputCommandInteraction, ) { @@ -24,11 +23,9 @@ export async function execute( // good match const clanData = (await fetch( `https://api.wotblitz.${server}/wotb/clans/accountinfo/?application_id=${process.env.WARGAMING_APPLICATION_ID}&account_id=${account.account_id}&extra=clan`, - ).then((response) => response.json())) as { - data: { [key: number]: { clan: { tag: string } | null } }; - }; + ).then((response) => response.json())) as PlayerClanData; const clan = clanData.data[account.account_id].clan; - const clanTag = clan === null ? '' : ` [${clan.tag}]`; + const clanTag = clan === null ? '' : ` [${clan!.tag}]`; if (interaction.member && interaction.guild) { const member = interaction.guild?.members.cache.get( diff --git a/src/types/clanDetails.ts b/src/types/clanDetails.ts index 0154c3441..7d52db452 100644 --- a/src/types/clanDetails.ts +++ b/src/types/clanDetails.ts @@ -2,7 +2,7 @@ import { WargamingResponse } from './wargamingResponse.js'; export interface ClanDetails extends WargamingResponse { data: { - [key: number]: { + [accountId: number]: { recruiting_options: { vehicles_level: number; wins_ratio: number; diff --git a/src/types/playerClanData.ts b/src/types/playerClanData.ts new file mode 100644 index 000000000..9b22b71bc --- /dev/null +++ b/src/types/playerClanData.ts @@ -0,0 +1,22 @@ +import { WargamingResponse } from './wargamingResponse.js'; + +export interface PlayerClanData extends WargamingResponse { + data: { + [accountId: number]: { + account_id: number; + joined_at: number; + clan_id: number; + role: string; + account_name: string; + + clan?: { + members_count: number; + name: string; + created_at: number; + tag: string; + clan_id: number; + emblem_set_id: number; + }; + }; + }; +} diff --git a/src/types/playerPersonalData.ts b/src/types/playerPersonalData.ts index 7792be55d..e9f7f4aa0 100644 --- a/src/types/playerPersonalData.ts +++ b/src/types/playerPersonalData.ts @@ -2,7 +2,7 @@ import { WargamingResponse } from './wargamingResponse.js'; export interface PlayerPersonalData extends WargamingResponse { data: { - [key: number]: { + [accountId: number]: { statistics: { clan: { spotted: number;