feat: improved error messages

This commit is contained in:
TrèsAbhi committed 2024-01-19 16:07:15 -06:00
1 parent 890a4d142b
commit 4c746cbb86
6 files changed
+32 -25

No files matched your search

+2 -5
View File
@@ -337,11 +337,8 @@ export const ratingsCommand = new Promise<CommandRegistryRaw>(
if (playerIndex === -1) {
throw new UserError(
`${accountInfo.nickname} didn't player ratings in season ${season}`,
{
cause:
'This player did not participate in this season or did not get past calibration.',
},
`${accountInfo.nickname} didn't play ratings in season ${season}`,
'This player did not participate in this season or did not get past calibration.',
);
}
+4 -4
View File
@@ -10,10 +10,10 @@ export default async function getTankStats(region: Region, id: number) {
);
if (tankStats[id] === null) {
throw new UserError('No tank stats available', {
cause:
"This player doesn't have any stats for tanks available. This may not be the player you are looking for.",
});
throw new UserError(
'No tank stats available',
"This player doesn't have any stats available. This may not be the player you are looking for.",
);
}
return tankStats[id];
+8 -6
View File
@@ -15,9 +15,10 @@ export default async function resolveTankId(tank: string | number) {
});
if (searchResult.length === 0) {
throw new UserError('Tank not found', {
cause: `Could not find tank by the name "${tank}".`,
});
throw new UserError(
'Tank not found',
`Could not find tank by the name "${tank}".`,
);
} else {
return searchResult[0].obj.id;
}
@@ -25,9 +26,10 @@ export default async function resolveTankId(tank: string | number) {
if ((await tankDefinitions)[number]) {
return number;
} else {
throw new UserError('Tank not found', {
cause: `Could not find tank by the ID "${number}".`,
});
throw new UserError(
'Tank not found',
`Could not find tank by the ID "${number}". Try typing the name of the tank instead of a number.`,
);
}
}
}
+6 -1
View File
@@ -1,4 +1,9 @@
/**
* Discriminator for user caused errors to not report in logs
*/
export class UserError extends Error {}
export class UserError {
constructor(
public message: string,
public cause: string,
) {}
}
+4 -3
View File
@@ -18,9 +18,10 @@ export default async function resolveClanFromCommand(
if (accounts[0]) {
return { region: accounts[0].region, id: accounts[0].clan_id };
} else {
throw new UserError('Could not find clan', {
cause: `I couldn't find clan \`${clan}\`. Try selecting a username from the search result.`,
});
throw new UserError(
'Could not find clan',
`\`${clan}\` was not found. Try selecting a clan from the search result.`,
);
}
}
}
+8 -6
View File
@@ -34,11 +34,12 @@ export default async function resolvePlayerFromCommand(
id: accounts[0].account_id,
} satisfies ResolvedPlayer;
} else {
throw new UserError('Could not find user', {
cause: `I couldn't find user "${markdownEscape(
throw new UserError(
'Could not find user',
`I couldn't find user "${markdownEscape(
commandUsername,
)}". Try picking an user from the search result, typing in a valid username, or using the \`/link\` command.`,
});
);
}
}
} else {
@@ -47,9 +48,10 @@ export default async function resolvePlayerFromCommand(
if (account) {
return { region: account.region, id: account.blitz };
} else {
throw new UserError('Use the `/link` command', {
cause: 'Link your Blitz and Discord accounts to get started.',
});
throw new UserError(
"You're account isn't linked with Blitzkrieg yet",
'Use the `/link` command to get started.', // TODO: add shortcut button too
);
}
}
}