feat: better wargaming error typing

This commit is contained in:
TresAbhi committed 2023-04-26 23:06:04 +00:00
1 parent c37b90caac
commit c494331470
8 files changed
+134 -119

No files matched your search

+3 -3
View File
@@ -29,6 +29,6 @@ export interface ClanDetailsData {
description: string; description: string;
} }
export interface ClanDetails extends WargamingResponse { export type ClanDetails = WargamingResponse<{
data: { [accountId: number]: ClanDetailsData }; [accountId: number]: ClanDetailsData;
} }>;
+1 -3
View File
@@ -8,6 +8,4 @@ export interface Clan {
name: string; name: string;
} }
export interface ClanList extends WargamingResponse { export type ClanList = WargamingResponse<Clan[]>;
data: Clan[];
}
+15 -17
View File
@@ -1,22 +1,20 @@
import { WargamingResponse } from './wargamingResponse.js'; import { WargamingResponse } from './wargamingResponse.js';
export interface PlayerClanData extends WargamingResponse { export type PlayerClanData = WargamingResponse<{
data: { [accountId: number]: {
[accountId: number]: { account_id: number;
account_id: number; joined_at: number;
joined_at: number; clan_id: number;
clan_id: number; role: string;
role: string; account_name: string;
account_name: string;
clan?: { clan?: {
members_count: number; members_count: number;
name: string; name: string;
created_at: number; created_at: number;
tag: string; tag: string;
clan_id: number; clan_id: number;
emblem_set_id: number; emblem_set_id: number;
};
}; };
}; };
} }>;
+52 -54
View File
@@ -1,59 +1,57 @@
import { WargamingResponse } from './wargamingResponse.js'; import { WargamingResponse } from './wargamingResponse.js';
export interface PlayerPersonalData extends WargamingResponse { export type PlayerPersonalData = WargamingResponse<{
data: { [accountId: number]: {
[accountId: number]: { statistics: {
statistics: { clan: {
clan: { spotted: number;
spotted: number; max_frags_tank_id: number;
max_frags_tank_id: number; hits: number;
hits: number; frags: number;
frags: number; max_xp: number;
max_xp: number; max_xp_tank_id: number;
max_xp_tank_id: number; wins: number;
wins: number; losses: number;
losses: number; capture_points: number;
capture_points: number; battles: number;
battles: number; damage_dealt: number;
damage_dealt: number; damage_received: number;
damage_received: number; max_frags: number;
max_frags: number; shots: number;
shots: number; frags8p: number;
frags8p: number; xp: number;
xp: number; win_and_survived: number;
win_and_survived: number; survived_battles: number;
survived_battles: number; dropped_capture_points: number;
dropped_capture_points: number;
};
all: {
spotted: number;
max_frags_tank_id: number;
hits: number;
frags: number;
max_xp: number;
max_xp_tank_id: number;
wins: number;
losses: number;
capture_points: number;
battles: number;
damage_dealt: number;
damage_received: number;
max_frags: number;
shots: number;
frags8p: number;
xp: number;
win_and_survived: number;
survived_battles: number;
dropped_capture_points: number;
};
frags: null;
}; };
account_id: number; all: {
created_at: number; spotted: number;
updated_at: number; max_frags_tank_id: number;
private: null; hits: number;
last_battle_time: number; frags: number;
nickname: string; max_xp: number;
max_xp_tank_id: number;
wins: number;
losses: number;
capture_points: number;
battles: number;
damage_dealt: number;
damage_received: number;
max_frags: number;
shots: number;
frags8p: number;
xp: number;
win_and_survived: number;
survived_battles: number;
dropped_capture_points: number;
};
frags: null;
}; };
account_id: number;
created_at: number;
updated_at: number;
private: null;
last_battle_time: number;
nickname: string;
}; };
} }>;
+1 -3
View File
@@ -5,6 +5,4 @@ export interface Player {
account_id: number; account_id: number;
} }
export interface Players extends WargamingResponse { export type Players = WargamingResponse<Player[]>;
data: Player[];
}
+33 -36
View File
@@ -1,38 +1,35 @@
import { WargamingResponse } from './wargamingResponse.js'; import { WargamingResponse } from './wargamingResponse.js';
export interface TanksStats extends WargamingResponse { export type TanksStats = WargamingResponse<{
data: { [accountId: number]: {
[accountId: number]: all: {
| { spotted: number;
all: { hits: number;
spotted: number; frags: number;
hits: number; max_xp: number;
frags: number; wins: number;
max_xp: number; losses: number;
wins: number; capture_points: number;
losses: number; battles: number;
capture_points: number; damage_dealt: number;
battles: number; damage_received: number;
damage_dealt: number; max_frags: number;
damage_received: number; shots: number;
max_frags: number; frags8p: number;
shots: number; xp: number;
frags8p: number; win_and_survived: number;
xp: number; survived_battles: number;
win_and_survived: number; dropped_capture_points: number;
survived_battles: number; };
dropped_capture_points: number; last_battle_time: number;
}; account_id: number;
last_battle_time: number; max_xp: number;
account_id: number; in_garage_updated: number;
max_xp: number; max_frags: number;
in_garage_updated: number; frags: number | null;
max_frags: number; mark_of_mastery: number;
frags: number | null; battle_life_time: number;
mark_of_mastery: number; in_garage: number | null;
battle_life_time: number; tank_id: number;
in_garage: number | null; }[];
tank_id: number; }>;
}[];
};
}
+8 -3
View File
@@ -1,3 +1,8 @@
export interface WargamingResponse { export type WargamingResponse<Data extends object> =
status: string; | {
} status: 'error';
}
| {
status: 'ok';
data: Data;
};
+21
View File
@@ -0,0 +1,21 @@
import {
CacheType,
ChatInputCommandInteraction,
EmbedBuilder,
} from 'discord.js';
import { NEGATIVE_COLOR } from '../constants/colors.js';
export default async function wargamingError(
interaction: ChatInputCommandInteraction<CacheType>,
) {
await interaction.reply({
embeds: [
new EmbedBuilder()
.setColor(NEGATIVE_COLOR)
.setTitle('Skilled Bot ran into an issue')
.setDescription('Wargaming returned an error. Please try again later.'),
],
});
console.log('Wargaming returned an error.');
}