2024-09-07 21:45:00 -05:00
|
|
|
import { tankDefinitions, tankNames } from '@blitzkit/core';
|
2024-03-09 11:48:35 -06:00
|
|
|
import { Locale } from 'discord.js';
|
2023-05-30 17:24:24 +00:00
|
|
|
import { go } from 'fuzzysort';
|
2024-01-21 18:29:32 -06:00
|
|
|
import markdownEscape from 'markdown-escape';
|
2024-09-07 21:45:00 -05:00
|
|
|
import { tankNamesTechTreeOnly } from '../../../../bot/src/core/discord/autocompleteTanks';
|
|
|
|
|
import { translator } from '../../../../bot/src/core/localization/translator';
|
2024-03-09 11:48:35 -06:00
|
|
|
import { UserError } from '../../hooks/userError';
|
2023-05-30 17:24:24 +00:00
|
|
|
|
2024-03-09 11:48:35 -06:00
|
|
|
export default async function resolveTankId(
|
|
|
|
|
tank: string | number,
|
|
|
|
|
locale: Locale,
|
2024-03-15 21:50:19 -05:00
|
|
|
techTreeOnly = false,
|
2024-03-09 11:48:35 -06:00
|
|
|
) {
|
|
|
|
|
const { translate } = translator(locale);
|
2024-03-09 11:50:47 -06:00
|
|
|
const number = typeof tank === 'string' ? Number(tank) : tank;
|
2023-05-30 17:24:24 +00:00
|
|
|
|
|
|
|
|
if (Number.isNaN(number)) {
|
2024-03-15 21:50:19 -05:00
|
|
|
const searchResult = go(
|
|
|
|
|
`${tank}`,
|
|
|
|
|
await (techTreeOnly ? tankNamesTechTreeOnly : tankNames),
|
|
|
|
|
{
|
2024-08-13 19:44:35 -05:00
|
|
|
keys: ['searchableName', 'searchableNameDeburr', 'camouflages'],
|
2024-03-15 21:50:19 -05:00
|
|
|
limit: 1,
|
|
|
|
|
},
|
|
|
|
|
);
|
2023-05-30 17:24:24 +00:00
|
|
|
|
|
|
|
|
if (searchResult.length === 0) {
|
2024-01-19 16:07:15 -06:00
|
|
|
throw new UserError(
|
2024-03-09 11:48:35 -06:00
|
|
|
translate('bot.common.errors.tank_name_not_found', [
|
|
|
|
|
markdownEscape(`${tank}`),
|
|
|
|
|
]),
|
2024-01-19 16:07:15 -06:00
|
|
|
);
|
2023-05-30 17:24:24 +00:00
|
|
|
} else {
|
2023-11-29 12:17:21 -06:00
|
|
|
return searchResult[0].obj.id;
|
2023-05-30 17:24:24 +00:00
|
|
|
}
|
|
|
|
|
} else {
|
2023-12-05 17:36:18 -06:00
|
|
|
if ((await tankDefinitions)[number]) {
|
2023-05-30 17:24:24 +00:00
|
|
|
return number;
|
|
|
|
|
} else {
|
2024-01-19 16:07:15 -06:00
|
|
|
throw new UserError(
|
2024-03-09 11:48:35 -06:00
|
|
|
translate('bot.common.errors.tank_id_not_found', [`${number}`]),
|
2024-01-19 16:07:15 -06:00
|
|
|
);
|
2023-05-30 17:24:24 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|