feat: no embed errors

This commit is contained in:
TrèsAbhi committed 2024-01-21 18:29:32 -06:00
1 parent 6094875ffb
commit 8946f115c0
8 files changed
+15 -33

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "blitzkrieg", "name": "blitzkrieg",
"version": "1.15.10", "version": "1.15.11",
"description": "🎉 Tools for everything World of Tanks Blitz", "description": "🎉 Tools for everything World of Tanks Blitz",
"main": "src/server.ts", "main": "src/server.ts",
"type": "module", "type": "module",
+2 -2
View File
@@ -4,6 +4,7 @@ import {
SlashCommandSubcommandBuilder, SlashCommandSubcommandBuilder,
} from 'discord.js'; } from 'discord.js';
import { range } from 'lodash'; import { range } from 'lodash';
import markdownEscape from 'markdown-escape';
import { BlitzkriegRatingsLeaderboard } from '../../scripts/buildRatingsLeaderboard'; import { BlitzkriegRatingsLeaderboard } from '../../scripts/buildRatingsLeaderboard';
import * as Leaderboard from '../components/Leaderboard'; import * as Leaderboard from '../components/Leaderboard';
import TitleBar from '../components/TitleBar'; import TitleBar from '../components/TitleBar';
@@ -337,8 +338,7 @@ export const ratingsCommand = new Promise<CommandRegistryPromisable>(
if (playerIndex === -1) { if (playerIndex === -1) {
throw new UserError( throw new UserError(
`${accountInfo.nickname} didn't play ratings in season ${season}`, `# ${markdownEscape(accountInfo.nickname)} didn't play ratings in season ${season}\nThis player did not participate in this season or did not get past calibration.`,
'This player did not participate in this season or did not get past calibration.',
); );
} }
+1 -2
View File
@@ -11,8 +11,7 @@ export default async function getTankStats(region: Region, id: number) {
if (tankStats[id] === null) { if (tankStats[id] === null) {
throw new UserError( throw new UserError(
'No tank stats available', "# No tank stats available\nThis player doesn't have any stats available. This may not be the player you are looking for.",
"This player doesn't have any stats available. This may not be the player you are looking for.",
); );
} }
+3 -4
View File
@@ -1,4 +1,5 @@
import { go } from 'fuzzysort'; import { go } from 'fuzzysort';
import markdownEscape from 'markdown-escape';
import { import {
tankDefinitions, tankDefinitions,
tanksDefinitionsArray, tanksDefinitionsArray,
@@ -16,8 +17,7 @@ export default async function resolveTankId(tank: string | number) {
if (searchResult.length === 0) { if (searchResult.length === 0) {
throw new UserError( throw new UserError(
'Tank not found', `# Tank not found\nCould not find tank by the name "${markdownEscape(tank)}".`,
`Could not find tank by the name "${tank}".`,
); );
} else { } else {
return searchResult[0].obj.id; return searchResult[0].obj.id;
@@ -27,8 +27,7 @@ export default async function resolveTankId(tank: string | number) {
return number; return number;
} else { } else {
throw new UserError( throw new UserError(
'Tank not found', `# Tank not found\nCould not find tank by the ID "${number}". Try typing the name of the tank instead of a number.`,
`Could not find tank by the ID "${number}". Try typing the name of the tank instead of a number.`,
); );
} }
} }
+1 -4
View File
@@ -2,8 +2,5 @@
* Discriminator for user caused errors to not report in logs * Discriminator for user caused errors to not report in logs
*/ */
export class UserError { export class UserError {
constructor( constructor(public message: string) {}
public message: string,
public cause: string,
) {}
} }
+2 -2
View File
@@ -1,4 +1,5 @@
import { ChatInputCommandInteraction } from 'discord.js'; import { ChatInputCommandInteraction } from 'discord.js';
import markdownEscape from 'markdown-escape';
import { Region } from '../../constants/regions'; import { Region } from '../../constants/regions';
import searchClansAcrossRegions from '../blitz/searchClansAcrossRegions'; import searchClansAcrossRegions from '../blitz/searchClansAcrossRegions';
import { UserError } from '../blitzkrieg/userError'; import { UserError } from '../blitzkrieg/userError';
@@ -19,8 +20,7 @@ export default async function resolveClanFromCommand(
return { region: accounts[0].region, id: accounts[0].clan_id }; return { region: accounts[0].region, id: accounts[0].clan_id };
} else { } else {
throw new UserError( throw new UserError(
'Could not find clan', `# Could not find clan\nCouldn't find "${markdownEscape(clan)}". Try selecting a clan from the search result.`,
`\`${clan}\` was not found. Try selecting a clan from the search result.`,
); );
} }
} }
+2 -4
View File
@@ -35,8 +35,7 @@ export default async function resolvePlayerFromCommand(
} satisfies ResolvedPlayer; } satisfies ResolvedPlayer;
} else { } else {
throw new UserError( throw new UserError(
'Could not find user', `# Could not find user\nI couldn't find user "${markdownEscape(
`I couldn't find user "${markdownEscape(
commandUsername, commandUsername,
)}". Try picking an user from the search result, typing in a valid username, or using the \`/link\` command.`, )}". Try picking an user from the search result, typing in a valid username, or using the \`/link\` command.`,
); );
@@ -49,8 +48,7 @@ export default async function resolvePlayerFromCommand(
return { region: account.region, id: account.blitz }; return { region: account.region, id: account.blitz };
} else { } else {
throw new UserError( throw new UserError(
"You're account isn't linked with Blitzkrieg yet", "# I don't know who you are\nUse the `/link` command to get started.",
'Use the `/link` command to get started.',
); );
} }
} }
@@ -11,7 +11,6 @@ import { commands } from '..';
import discord from '../../../../discord.json' assert { type: 'json' }; import discord from '../../../../discord.json' assert { type: 'json' };
import { UserError } from '../../../core/blitzkrieg/userError'; import { UserError } from '../../../core/blitzkrieg/userError';
import buttonLink from '../../../core/discord/buttonLink'; import buttonLink from '../../../core/discord/buttonLink';
import embedNegative from '../../../core/discord/embedNegative';
import embedWarning from '../../../core/discord/embedWarning'; import embedWarning from '../../../core/discord/embedWarning';
import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable'; import normalizeInteractionReturnable from '../../../core/discord/normalizeInteractionReturnable';
import { psa } from '../../../core/discord/psa'; import { psa } from '../../../core/discord/psa';
@@ -119,25 +118,15 @@ export default async function handleChatInputCommand(
if (error instanceof UserError) { if (error instanceof UserError) {
interaction.editReply({ interaction.editReply({
embeds: [ content: error.message,
embedNegative(
error.message,
(error.cause as string | undefined) ??
'No further information is available.',
),
],
components, components,
}); });
} else { } else {
console.error(interaction.commandName, error); console.error(interaction.commandName, error);
interaction.editReply({ interaction.editReply({
embeds: [ content:
embedNegative( "# Blitzkrieg ran into an error!\nWe're so sorry about this. Feel free to [join the official Discord server](https://discord.gg/nDt7AjGJQH) to get help.",
'Blitzkrieg ran into an error!',
"We're so sorry about this. Feel free to [join the official Discord server](https://discord.gg/nDt7AjGJQH) to get help.",
),
],
components, components,
}); });
} }