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;
}
export interface ClanDetails extends WargamingResponse {
data: { [accountId: number]: ClanDetailsData };
}
export type ClanDetails = WargamingResponse<{
[accountId: number]: ClanDetailsData;
}>;
+1 -3
View File
@@ -8,6 +8,4 @@ export interface Clan {
name: string;
}
export interface ClanList extends WargamingResponse {
data: Clan[];
}
export type ClanList = WargamingResponse<Clan[]>;
+15 -17
View File
@@ -1,22 +1,20 @@
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;
export type PlayerClanData = WargamingResponse<{
[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;
};
clan?: {
members_count: number;
name: string;
created_at: number;
tag: string;
clan_id: number;
emblem_set_id: number;
};
};
}
}>;
+52 -54
View File
@@ -1,59 +1,57 @@
import { WargamingResponse } from './wargamingResponse.js';
export interface PlayerPersonalData extends WargamingResponse {
data: {
[accountId: number]: {
statistics: {
clan: {
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;
};
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;
export type PlayerPersonalData = WargamingResponse<{
[accountId: number]: {
statistics: {
clan: {
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;
};
account_id: number;
created_at: number;
updated_at: number;
private: null;
last_battle_time: number;
nickname: string;
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;
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;
}
export interface Players extends WargamingResponse {
data: Player[];
}
export type Players = WargamingResponse<Player[]>;
+33 -36
View File
@@ -1,38 +1,35 @@
import { WargamingResponse } from './wargamingResponse.js';
export interface TanksStats extends WargamingResponse {
data: {
[accountId: number]:
| {
all: {
spotted: number;
hits: number;
frags: number;
max_xp: 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;
};
last_battle_time: number;
account_id: number;
max_xp: number;
in_garage_updated: number;
max_frags: number;
frags: number | null;
mark_of_mastery: number;
battle_life_time: number;
in_garage: number | null;
tank_id: number;
}[];
};
}
export type TanksStats = WargamingResponse<{
[accountId: number]: {
all: {
spotted: number;
hits: number;
frags: number;
max_xp: 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;
};
last_battle_time: number;
account_id: number;
max_xp: number;
in_garage_updated: number;
max_frags: number;
frags: number | null;
mark_of_mastery: number;
battle_life_time: number;
in_garage: number | null;
tank_id: number;
}[];
}>;
+8 -3
View File
@@ -1,3 +1,8 @@
export interface WargamingResponse {
status: string;
}
export type WargamingResponse<Data extends object> =
| {
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.');
}