From f9f7468544894303d1b488c151ab781d9c167e52 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:22:30 -0600 Subject: [PATCH] feat: replace $ --- packages/bot/src/commands/auction.ts | 8 +- packages/bot/src/commands/inactive.tsx | 2 +- .../bot/src/commands/ratingLeaderboard.tsx | 14 +- packages/bot/src/commands/research.tsx | 9 +- packages/bot/src/commands/searchClans.ts | 4 +- packages/bot/src/commands/searchPlayers.ts | 5 +- .../src/components/GenericAllStats/index.tsx | 8 +- .../bot/src/core/discord/addClanChoices.ts | 2 +- .../bot/src/core/discord/addFilterOptions.ts | 12 +- .../src/core/discord/addPeriodSubCommands.ts | 28 +-- .../bot/src/core/discord/addRegionChoices.ts | 4 +- .../bot/src/core/discord/addTankChoices.ts | 4 +- .../bot/src/core/discord/addTierChoices.ts | 4 +- .../src/core/discord/addUsernameChoices.ts | 4 +- .../bot/src/core/discord/autocompleteTanks.ts | 4 +- .../core/discord/createLocalizedCommand.ts | 10 +- packages/i18n/strings/en.json | 235 +++++++++--------- 17 files changed, 182 insertions(+), 175 deletions(-) diff --git a/packages/bot/src/commands/auction.ts b/packages/bot/src/commands/auction.ts index b04a089b3..68c647f46 100644 --- a/packages/bot/src/commands/auction.ts +++ b/packages/bot/src/commands/auction.ts @@ -10,11 +10,11 @@ import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { translator } from '../core/localization/translator'; import { CommandRegistry } from '../events/interactionCreate'; -interface Auction { +type Auction = null | { count: number; has_next: boolean; results: Result[]; -} +}; type Result = | { @@ -88,12 +88,12 @@ export const auctionCommand = new Promise((resolve) => { pageSize }&type[]=vehicle&saleable=${saleable}`, ).then((response) => response.json() as Promise); - const saleableTanks = data.results.filter((result) => result.available); - if (saleableTanks.length === 0) { + if (data === null) { return strings.bot.commands.auction.errors.no_auction; } + const saleableTanks = data.results.filter((result) => result.available); const nextPricesTimestamp = saleableTanks[0].next_price_timestamp; const title = `# ${strings.bot.commands.auction.body.title}`; diff --git a/packages/bot/src/commands/inactive.tsx b/packages/bot/src/commands/inactive.tsx index 55c3f2d70..ad3f49415 100644 --- a/packages/bot/src/commands/inactive.tsx +++ b/packages/bot/src/commands/inactive.tsx @@ -26,7 +26,7 @@ export const inactiveCommand = new Promise((resolve) => { .setName('threshold') .setNameLocalizations( localizationObject( - (strings) => strings.bot.commands.inactive.options.threshold.$, + (strings) => strings.bot.commands.inactive.options.threshold.name, undefined, true, ), diff --git a/packages/bot/src/commands/ratingLeaderboard.tsx b/packages/bot/src/commands/ratingLeaderboard.tsx index a4dfd961e..6833cbf32 100644 --- a/packages/bot/src/commands/ratingLeaderboard.tsx +++ b/packages/bot/src/commands/ratingLeaderboard.tsx @@ -60,11 +60,11 @@ export const ratingLeaderboardCommand = new Promise( return option .addIntegerOption((option) => option - .setName(strings.bot.commands.rating_leaderboard.options.limit.$) + .setName(strings.bot.commands.rating_leaderboard.options.limit.name) .setNameLocalizations( localizationObject( (strings) => - strings.bot.commands.rating_leaderboard.options.limit.$, + strings.bot.commands.rating_leaderboard.options.limit.name, undefined, true, ), @@ -90,11 +90,13 @@ export const ratingLeaderboardCommand = new Promise( ) .addStringOption((option) => option - .setName(strings.bot.commands.rating_leaderboard.options.season.$) + .setName( + strings.bot.commands.rating_leaderboard.options.season.name, + ) .setNameLocalizations( localizationObject( (strings) => - strings.bot.commands.rating_leaderboard.options.season.$, + strings.bot.commands.rating_leaderboard.options.season.name, undefined, true, ), @@ -159,13 +161,13 @@ export const ratingLeaderboardCommand = new Promise( return option .setName( - strings.bot.commands.rating_leaderboard.options.league.$, + strings.bot.commands.rating_leaderboard.options.league.name, ) .setNameLocalizations( localizationObject( (strings) => strings.bot.commands.rating_leaderboard.options.league - .$, + .name, undefined, true, ), diff --git a/packages/bot/src/commands/research.tsx b/packages/bot/src/commands/research.tsx index 2aa1c4663..c7e98558e 100644 --- a/packages/bot/src/commands/research.tsx +++ b/packages/bot/src/commands/research.tsx @@ -35,10 +35,11 @@ export const researchCommand = new Promise((resolve) => { command: createLocalizedCommand('research') .addStringOption((option) => option - .setName(strings.bot.commands.research.options.target_tank.$) + .setName(strings.bot.commands.research.options.target_tank.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.commands.research.options.target_tank.$, + (strings) => + strings.bot.commands.research.options.target_tank.name, undefined, true, ), @@ -57,11 +58,11 @@ export const researchCommand = new Promise((resolve) => { ) .addStringOption((option) => option - .setName(strings.bot.commands.research.options.starting_tank.$) + .setName(strings.bot.commands.research.options.starting_tank.name) .setNameLocalizations( localizationObject( (strings) => - strings.bot.commands.research.options.starting_tank.$, + strings.bot.commands.research.options.starting_tank.name, undefined, true, ), diff --git a/packages/bot/src/commands/searchClans.ts b/packages/bot/src/commands/searchClans.ts index f3a8502b7..0d481d68f 100644 --- a/packages/bot/src/commands/searchClans.ts +++ b/packages/bot/src/commands/searchClans.ts @@ -23,10 +23,10 @@ export const searchClansCommand = new Promise((resolve) => { const { strings } = translator(Locale.EnglishUS); return option - .setName(strings.bot.commands.search_clans.options.limit.$) + .setName(strings.bot.commands.search_clans.options.limit.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.commands.search_clans.options.limit.$, + (strings) => strings.bot.commands.search_clans.options.limit.name, undefined, true, ), diff --git a/packages/bot/src/commands/searchPlayers.ts b/packages/bot/src/commands/searchPlayers.ts index 636ea636f..0b766cb76 100644 --- a/packages/bot/src/commands/searchPlayers.ts +++ b/packages/bot/src/commands/searchPlayers.ts @@ -28,10 +28,11 @@ export const searchPlayersCommand = new Promise((resolve) => { ) .addIntegerOption((option) => option - .setName(strings.bot.commands.search_players.options.limit.$) + .setName(strings.bot.commands.search_players.options.limit.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.commands.search_players.options.limit.$, + (strings) => + strings.bot.commands.search_players.options.limit.name, undefined, true, ), diff --git a/packages/bot/src/components/GenericAllStats/index.tsx b/packages/bot/src/components/GenericAllStats/index.tsx index 6935944c4..a5650c848 100644 --- a/packages/bot/src/components/GenericAllStats/index.tsx +++ b/packages/bot/src/components/GenericAllStats/index.tsx @@ -30,7 +30,7 @@ export function GenericAllStats({ strings.bot.common.options.clan.$, + (strings) => strings.bot.common.options.clan.name, undefined, true, ), diff --git a/packages/bot/src/core/discord/addFilterOptions.ts b/packages/bot/src/core/discord/addFilterOptions.ts index 4a3ae7e94..5eb27d5ef 100644 --- a/packages/bot/src/core/discord/addFilterOptions.ts +++ b/packages/bot/src/core/discord/addFilterOptions.ts @@ -23,10 +23,10 @@ export function addFilterOptions< option .addStringOption((option) => option - .setName(strings.bot.common.options.filters.nation.$) + .setName(strings.bot.common.options.filters.nation.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.filters.nation.$, + (strings) => strings.bot.common.options.filters.nation.name, undefined, true, ), @@ -60,10 +60,10 @@ export function addFilterOptions< .addStringOption((option) => addTierChoices(option).setRequired(false)) .addStringOption((option) => option - .setName(strings.bot.common.options.filters.class.$) + .setName(strings.bot.common.options.filters.class.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.filters.class.$, + (strings) => strings.bot.common.options.filters.class.name, undefined, true, ), @@ -90,10 +90,10 @@ export function addFilterOptions< ) .addStringOption((option) => option - .setName(strings.bot.common.options.filters.type.$) + .setName(strings.bot.common.options.filters.type.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.filters.type.$, + (strings) => strings.bot.common.options.filters.type.name, undefined, true, ), diff --git a/packages/bot/src/core/discord/addPeriodSubCommands.ts b/packages/bot/src/core/discord/addPeriodSubCommands.ts index b2f1b8c97..94cf335d4 100644 --- a/packages/bot/src/core/discord/addPeriodSubCommands.ts +++ b/packages/bot/src/core/discord/addPeriodSubCommands.ts @@ -19,32 +19,32 @@ export function addPeriodSubCommands( const { strings } = translator(Locale.EnglishUS); const subcommandNameLocalizations = { today: localizationObject( - (strings) => strings.bot.common.subcommands.today.$, + (strings) => strings.bot.common.subcommands.today.name, undefined, true, ), 30: localizationObject( - (strings) => strings.bot.common.subcommands[30].$, + (strings) => strings.bot.common.subcommands[30].name, undefined, true, ), 60: localizationObject( - (strings) => strings.bot.common.subcommands[60].$, + (strings) => strings.bot.common.subcommands[60].name, undefined, true, ), 90: localizationObject( - (strings) => strings.bot.common.subcommands[90].$, + (strings) => strings.bot.common.subcommands[90].name, undefined, true, ), career: localizationObject( - (strings) => strings.bot.common.subcommands.career.$, + (strings) => strings.bot.common.subcommands.career.name, undefined, true, ), custom: localizationObject( - (strings) => strings.bot.common.subcommands.custom.$, + (strings) => strings.bot.common.subcommands.custom.name, undefined, true, ), @@ -74,7 +74,7 @@ export function addPeriodSubCommands( .addSubcommand((option) => extra( option - .setName(strings.bot.common.subcommands.today.$) + .setName(strings.bot.common.subcommands.today.name) .setNameLocalizations(subcommandNameLocalizations.today) .setDescription(strings.bot.common.subcommands.today.description) .setDescriptionLocalizations( @@ -85,7 +85,7 @@ export function addPeriodSubCommands( .addSubcommand((option) => extra( option - .setName(strings.bot.common.subcommands[30].$) + .setName(strings.bot.common.subcommands[30].name) .setNameLocalizations(subcommandNameLocalizations[30]) .setDescription(strings.bot.common.subcommands[30].description) .setDescriptionLocalizations(subcommandDescriptionLocalizations[30]), @@ -94,7 +94,7 @@ export function addPeriodSubCommands( .addSubcommand((option) => extra( option - .setName(strings.bot.common.subcommands[60].$) + .setName(strings.bot.common.subcommands[60].name) .setNameLocalizations(subcommandNameLocalizations[60]) .setDescription(strings.bot.common.subcommands[60].description) .setDescriptionLocalizations(subcommandDescriptionLocalizations[60]), @@ -103,7 +103,7 @@ export function addPeriodSubCommands( .addSubcommand((option) => extra( option - .setName(strings.bot.common.subcommands[90].$) + .setName(strings.bot.common.subcommands[90].name) .setNameLocalizations(subcommandNameLocalizations[90]) .setDescription(strings.bot.common.subcommands[90].description) .setDescriptionLocalizations(subcommandDescriptionLocalizations[90]), @@ -112,7 +112,7 @@ export function addPeriodSubCommands( .addSubcommand((option) => extra( option - .setName(strings.bot.common.subcommands.career.$) + .setName(strings.bot.common.subcommands.career.name) .setNameLocalizations(subcommandNameLocalizations.career) .setDescription(strings.bot.common.subcommands.career.description) .setDescriptionLocalizations( @@ -123,7 +123,7 @@ export function addPeriodSubCommands( .addSubcommand((option) => extra( option - .setName(strings.bot.common.subcommands.custom.$) + .setName(strings.bot.common.subcommands.custom.name) .setNameLocalizations(subcommandNameLocalizations.custom) .setDescription(strings.bot.common.subcommands.custom.description) .setDescriptionLocalizations( @@ -131,7 +131,7 @@ export function addPeriodSubCommands( ) .addIntegerOption((option) => option - .setName(strings.bot.common.subcommands.custom.options.start.$) + .setName(strings.bot.common.subcommands.custom.options.start.name) .setDescription( strings.bot.common.subcommands.custom.options.start.description, ) @@ -139,7 +139,7 @@ export function addPeriodSubCommands( ) .addIntegerOption((option) => option - .setName(strings.bot.common.subcommands.custom.options.end.$) + .setName(strings.bot.common.subcommands.custom.options.end.name) .setDescription( strings.bot.common.subcommands.custom.options.end.description, ) diff --git a/packages/bot/src/core/discord/addRegionChoices.ts b/packages/bot/src/core/discord/addRegionChoices.ts index 4ebe8b9eb..6d6fce252 100644 --- a/packages/bot/src/core/discord/addRegionChoices.ts +++ b/packages/bot/src/core/discord/addRegionChoices.ts @@ -11,10 +11,10 @@ export function addRegionChoices(option: SlashCommandStringOption) { const { strings } = translator(Locale.EnglishUS); return option - .setName(strings.bot.common.options.region.$) + .setName(strings.bot.common.options.region.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.region.$, + (strings) => strings.bot.common.options.region.name, undefined, true, ), diff --git a/packages/bot/src/core/discord/addTankChoices.ts b/packages/bot/src/core/discord/addTankChoices.ts index c14f42dac..0cfafc6f8 100644 --- a/packages/bot/src/core/discord/addTankChoices.ts +++ b/packages/bot/src/core/discord/addTankChoices.ts @@ -6,10 +6,10 @@ export function addTankChoices(option: SlashCommandStringOption) { const { strings } = translator(Locale.EnglishUS); return option - .setName(strings.bot.common.options.tank.$) + .setName(strings.bot.common.options.tank.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.tank.$, + (strings) => strings.bot.common.options.tank.name, undefined, true, ), diff --git a/packages/bot/src/core/discord/addTierChoices.ts b/packages/bot/src/core/discord/addTierChoices.ts index d3a96e7f7..76ae80cb3 100644 --- a/packages/bot/src/core/discord/addTierChoices.ts +++ b/packages/bot/src/core/discord/addTierChoices.ts @@ -13,10 +13,10 @@ export function addTierChoices(option: SlashCommandStringOption) { const { strings } = translator(Locale.EnglishUS); return option - .setName(strings.bot.common.options.tier.$) + .setName(strings.bot.common.options.tier.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.tier.$, + (strings) => strings.bot.common.options.tier.name, undefined, true, ), diff --git a/packages/bot/src/core/discord/addUsernameChoices.ts b/packages/bot/src/core/discord/addUsernameChoices.ts index b1b3d7039..35d851fdd 100644 --- a/packages/bot/src/core/discord/addUsernameChoices.ts +++ b/packages/bot/src/core/discord/addUsernameChoices.ts @@ -6,10 +6,10 @@ export function addUsernameChoices(option: SlashCommandStringOption) { const { strings } = translator(Locale.EnglishUS); return option - .setName(strings.bot.common.options.username.$) + .setName(strings.bot.common.options.username.name) .setNameLocalizations( localizationObject( - (strings) => strings.bot.common.options.username.$, + (strings) => strings.bot.common.options.username.name, undefined, true, ), diff --git a/packages/bot/src/core/discord/autocompleteTanks.ts b/packages/bot/src/core/discord/autocompleteTanks.ts index 8fb029a7b..8a48636e9 100644 --- a/packages/bot/src/core/discord/autocompleteTanks.ts +++ b/packages/bot/src/core/discord/autocompleteTanks.ts @@ -35,8 +35,8 @@ export async function autocompleteTanks( { keys: [ ...SUPPORTED_LOCALES.map((locale) => [ - `searchableName.${locale}`, - `searchableNameDeburr.${locale}`, + `searchableName.{locale}`, + `searchableNameDeburr.{locale}`, ]).flat(), 'camouflages', ], diff --git a/packages/bot/src/core/discord/createLocalizedCommand.ts b/packages/bot/src/core/discord/createLocalizedCommand.ts index 42d15fdfa..32f0e20b3 100644 --- a/packages/bot/src/core/discord/createLocalizedCommand.ts +++ b/packages/bot/src/core/discord/createLocalizedCommand.ts @@ -33,7 +33,7 @@ export function createLocalizedCommand( .setName(command) .setNameLocalizations( localizationObject( - (strings) => strings.bot.commands[commandPathItem].$, + (strings) => strings.bot.commands[commandPathItem].name, undefined, true, ), @@ -52,9 +52,9 @@ export function createLocalizedCommand( (strings) => ( strings.bot.commands[commandPathItem] as unknown as { - subcommands: Record; + subcommands: Record; } - ).subcommands[subItem.subcommand].$, + ).subcommands[subItem.subcommand].name, undefined, true, ); @@ -87,9 +87,9 @@ export function createLocalizedCommand( (strings) => ( strings.bot.commands[commandPathItem] as unknown as { - groups: Record; + groups: Record; } - ).groups[subItem.group].$, + ).groups[subItem.group].name, undefined, true, ); diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 69c06cada..e2b922e71 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -1,6 +1,6 @@ { "test": { - "$": "test", + "default": "test", "long": "This is a long test string. You MUST NEVER see this in the UI. My favorite fruit is %s1 because it has the color of %s2. I like it so much that I will say its name 3 times! %s1! %s1! %s1! Once again, it's %s2, not %s3.", "fox": "The quick brown fox jumps over the lazy dog." }, @@ -202,11 +202,11 @@ "bot": { "common": { "errors": { - "clan_not_found": "# Could not find clan\nCouldn't find \"%s\". Try selecting a clan from the search result.", - "player_not_found": "# Could not find user\nI couldn't find user \"%s\". Try picking an user from the search result, typing in a valid username, or using the `/link` command.", + "clan_not_found": "# Could not find clan\nCouldn't find \"%s1\". Try selecting a clan from the search result.", + "player_not_found": "# Could not find user\nI couldn't find user \"%s1\". Try picking an user from the search result, typing in a valid username, or using the `/link` command.", "player_not_linked": "# Use `/link` to get started\nI don't know who you are but you can tell me today!", - "tank_name_not_found": "# Tank not found\nCould not find tank by the name \"%s\".", - "tank_id_not_found": "# Tank not found\nCould not find tank by the ID \"%s\". Try typing the name of the tank instead of a number.", + "tank_name_not_found": "# Tank not found\nCould not find tank by the name \"%s1\".", + "tank_id_not_found": "# Tank not found\nCould not find tank by the ID \"%s1\". Try typing the name of the tank instead of a number.", "no_tank_stats": "# No tank stats available\nThis player doesn't have any stats available. This may not be the player you are looking for.", "get_help": "Help Discord server", "uncaught_error": "# BlitzKit 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.", @@ -216,51 +216,54 @@ }, "wn8": { - "$": "WN8", - "very_bad": "Very bad", - "bad": "Bad", - "below_average": "Below average", - "average": "Average", - "above_average": "Above average", - "good": "Good", - "very_good": "Very good", - "great": "Great", - "unicum": "Unicum", - "super_unicum": "Super unicum" + "name": "WN8", + + "types": { + "very_bad": "Very bad", + "bad": "Bad", + "below_average": "Below average", + "average": "Average", + "above_average": "Above average", + "good": "Good", + "very_good": "Very good", + "great": "Great", + "unicum": "Unicum", + "super_unicum": "Super unicum" + } }, "subcommands": { "today": { - "$": "today", + "name": "today", "description": "Today" }, "30": { - "$": "30", + "name": "30", "description": "30 days" }, "60": { - "$": "60", + "name": "60", "description": "60 days" }, "90": { - "$": "90", + "name": "90", "description": "90 days" }, "career": { - "$": "career", + "name": "career", "description": "Career" }, "custom": { - "$": "custom", + "name": "custom", "description": "Custom range", "options": { "start": { - "$": "start", + "name": "start", "description": "Start in number of days ago from today" }, "end": { - "$": "end", + "name": "end", "description": "End in number of days ago from today" } } @@ -269,46 +272,46 @@ "options": { "clan": { - "$": "clan", + "name": "clan", "description": "The clan name or tag" }, "tank": { - "$": "tank", + "name": "tank", "description": "The tank to get stats for" }, "username": { - "$": "username", + "name": "username", "description": "The Blitz username of the player" }, "filters": { "nation": { - "$": "nation", + "name": "nation", "description": "Nation" }, "class": { - "$": "class", + "name": "class", "description": "Class" }, "type": { - "$": "type", + "name": "type", "description": "Type" } }, "region": { - "$": "region", + "name": "region", "description": "Region" }, "tier": { - "$": "tier", + "name": "tier", "description": "Tier", "choices": { - "tier": "Tier %s - %s" + "tier": "Tier %s1 - %s2" } } }, @@ -316,13 +319,13 @@ "periods": { "career": "Career", "today": "Today", - "days": "%s days", - "custom": "%s - %s days" + "days": "%s1 days", + "custom": "%s1 - %s2 days" }, "filters": { "none": "No filters", - "tier": "Tier %s" + "tier": "Tier %s1" }, "no_data": { @@ -350,14 +353,14 @@ "commands": { "auction": { - "$": "auction", + "name": "auction", "description": "Tanks available right now in the auction", "body": { "title": "Blitz Auction", - "subtitle": "%s available • next prices %s\nBid now: %s", - "next": "Next price: %s", - "available": "Available: %s / %s" + "subtitle": "%s1 available • next prices %s2\nBid now: %s3", + "next": "Next price: %s1", + "available": "Available: %s1 / %s2" }, "errors": { "no_auction": "# No ongoing auction\n\nCurrently, there are no tanks available for purchase in the auction. If you think this is an error, please report this discrepancy in [the official Discord Server](https://discord.gg/nDt7AjGJQH)." @@ -368,21 +371,21 @@ }, "replay": { - "$": "replay", + "name": "replay", "description": "Display replay results" }, "research": { - "$": "research", + "name": "research", "description": "Lists the expenses in researching a line", "options": { "target_tank": { - "$": "target-tank", + "name": "target-tank", "description": "The final tank to research in the line" }, "starting_tank": { - "$": "starting-tank", + "name": "starting-tank", "description": "The starting tank in the line (inferred automatically if not provided)" } }, @@ -390,57 +393,57 @@ "body": { "subtitle": "Research", "total": "Total", - "research": "Research: %s", - "upgrades": "Upgrades: %s", - "purchase": "Purchase: %s", - "equipment": "Equipment: %s", + "research": "Research: %s1", + "upgrades": "Upgrades: %s1", + "purchase": "Purchase: %s1", + "equipment": "Equipment: %s1", "estimation": "# This is an estimation!\n\nThis list may include already researched tanks because of the inaccurate information Wargaming provides. Try providing a `starting-tank` from the line when using the command if you can." }, "errors": { - "non_tech_tree": "# %s is not on the tech tree\n\nYou cannot research a premium/collector tank.", - "tier_1": "# %s is a tier I\n\nTier I tanks are always unlocked for free for all players.", - "already_researched": "# %s is already researched\n\nTry providing a `starting-tank` when using the command to view the totals for a line you have already researched.", - "start_end_equal": "# %s was provided twice\n\nMake sure `starting-tank` and `target-tank` are different.", - "tanks_not_on_line": "# %s and %s are not on the same line\n\nMake sure `starting-tank` and `target-tank` are on the same tech-tree line.", - "unordered": "# %s higher tiered to %s\n\nMake sure to provide %s as the `starting-tank` instead as it is the lower tiered tank." + "non_tech_tree": "# %s1 is not on the tech tree\n\nYou cannot research a premium/collector tank.", + "tier_1": "# %s1 is a tier I\n\nTier I tanks are always unlocked for free for all players.", + "already_researched": "# %s1 is already researched\n\nTry providing a `starting-tank` when using the command to view the totals for a line you have already researched.", + "start_end_equal": "# %s1 was provided twice\n\nMake sure `starting-tank` and `target-tank` are different.", + "tanks_not_on_line": "# %s1 and %s2 are not on the same line\n\nMake sure `starting-tank` and `target-tank` are on the same tech-tree line.", + "unordered": "# %s1 higher tiered to %s2\n\nMake sure to provide %s3 as the `starting-tank` instead as it is the lower tiered tank." } }, "about": { - "$": "about", + "name": "about", "description": "All the info you need about the bot", "subcommands": { "commands": { - "$": "commands", + "name": "commands", "description": "List of all commands and their descriptions", "body": "# Commands\n\nBlitzKit offers the following commands:\n\n" }, "embeds": { - "$": "embeds", + "name": "embeds", "description": "How embeds work" }, "introduction": { - "$": "introduction", + "name": "introduction", "description": "About the bot" }, "invite": { - "$": "invite", + "name": "invite", "description": "How to invite the bot" }, "timezones": { - "$": "timezones", + "name": "timezones", "description": "How BlitzKit infers and uses your timezone" }, "credits": { - "$": "credits", + "name": "credits", "description": "People who have helped BlitzKit" } } }, "breakdown": { - "$": "breakdown", + "name": "breakdown", "description": "A period's breakdown by tanks played", "body": { @@ -449,19 +452,19 @@ "wn8": "WN8", "winrate": "Winrate", "damage": "Damage", - "unknown_tank": "Unknown tank %s" + "unknown_tank": "Unknown tank %s1" } }, "debug": { - "$": "debug", + "name": "debug", "description": "Debug information about the bot", "body": { "title": "# Debug\n\n", "version": "Version", "shard": { - "$": "Shard", + "label": "Shard", "default": "default" }, "uptime": "Uptime" @@ -469,66 +472,66 @@ }, "evolution": { - "$": "evolution", + "name": "evolution", "description": "Evolution of statistics", "groups": { "player": { - "$": "player", + "name": "player", "description": "Player statistics" }, "tank": { - "$": "tank", + "name": "tank", "description": "Tank statistics" } } }, "inactive": { - "$": "inactive", + "name": "inactive", "description": "Lists all inactive players in a clan above a threshold", "options": { "threshold": { - "$": "threshold", - "description": "The number of days inactive (default: %s days)" + "name": "threshold", + "description": "The number of days inactive (default: %s1 days)" } }, "body": { - "subtitle": "Inactive for %s+ days", - "listing": "%s days" + "subtitle": "Inactive for %s1+ days", + "listing": "%s1 days" } }, "full_stats": { - "$": "full-stats", + "name": "full-stats", "description": "Full in-game statistics", "body": { "cards": { "games": { - "$": "Games", + "title": "Games", "winrate": "Winrate", "battles": "Battles", "wins_losses": "Wins / losses" }, "efficiency": { - "$": "Efficiency", + "title": "Efficiency", "wn8": "WN8", "survival": "Survival", "accuracy": "Accuracy" }, "lethality": { - "$": "Lethality", + "title": "Lethality", "average_damage": "Average damage", "damage_per_tier": "Damage per tier", "damage_ratio": "Damage ratio", "average_kills": "Average kills" }, "miscellaneous": { - "$": "Miscellaneous", + "title": "Miscellaneous", "average_tier": "Average tier", "average_spots": "Average spots", "average_xp": "Average XP", @@ -539,13 +542,13 @@ }, "link": { - "$": "link", + "name": "link", "description": "Links your Blitz and Discord account", "body": { "accounts_linked": "Accounts linked", "no_role_permissions": { - "$": "%s failed to verify", + "title": "%s1 failed to verify", "description": "I don't have the permission to manage roles." } }, @@ -557,111 +560,111 @@ }, "search_clans": { - "$": "search-clans", + "name": "search-clans", "description": "Search clans", "options": { "limit": { - "$": "limit", - "description": "The max number of clan results (default: %s)" + "name": "limit", + "description": "The max number of clan results (default: %s1)" } }, "body": { - "title": "Clan search for %s in region %s", + "title": "Clan search for %s1 in region %s2", "no_results": "No clans found" } }, "search_players": { - "$": "search-players", + "name": "search-players", "description": "Search players", "options": { "limit": { - "$": "limit", - "description": "The max number of player results (default: %s)" + "name": "limit", + "description": "The max number of player results (default: %s1)" } }, "body": { - "title": "Player search for %s in region %s", + "title": "Player search for %s1 in region %s2", "no_results": "No players found" } }, "rating_leaderboard": { - "$": "rating-leaderboard", + "name": "rating-leaderboard", "description": "Rating battles statistics", "subcommands": { "neighbors": { - "$": "neighbors", + "name": "neighbors", "description": "Neighboring players on the leaderboard" }, "league": { - "$": "league", + "name": "league", "description": "Top players of a league" } }, "options": { "limit": { - "$": "limit", - "description": "How many neighbors to display (default: %s)" + "name": "limit", + "description": "How many neighbors to display (default: %s1)" }, "season": { - "$": "season", + "name": "season", "description": "Season number (default: current)", "choices": { - "current": "%s (current)" + "current": "%s1 (current)" } }, "league": { - "$": "league", + "name": "league", "description": "The league to display" } }, "body": { - "top_players": "Top %s players", - "no_participation": "# %s didn't play rating in season %s\n\nThis player did not participate in this season or did not get past calibration.", + "top_players": "Top %s1 players", + "no_participation": "# %s1 didn't play rating in season %s2\n\nThis player did not participate in this season or did not get past calibration.", "no_ongoing_season": "# No ongoing season\n\nThere isn't a currently running rating season.", - "deleted_player": "Deleted %s", + "deleted_player": "Deleted %s1", "neighbors": "Rating neighbors", - "more": "+ %s more" + "more": "+ %s1 more" } }, "today": { - "$": "today", + "name": "today", "description": "Today's played tanks and statistics" }, "stats": { - "$": "stats", + "name": "stats", "description": "Quick statistics for a period" }, "owned_tanks": { - "$": "owned-tanks", + "name": "owned-tanks", "description": "Shows all own tanks in a tier", "body": { - "title": "# %s's owned tier %s tanks\n\n" + "title": "# %s1's owned tier %s2 tanks\n\n" } }, "permissions": { - "$": "permissions", + "name": "permissions", "description": "Checks wether the bot has the required permissions to function", "body": { - "title": "# Permissions\n\n%s", + "title": "# Permissions\n\n%s1", "view_channels": "View channels: needed to find the message the refresh button was used on", "read_message_history": "Read message history: needed to find the message to refresh", "attach_files": "Attach files: needed to add images to image-based commands", @@ -670,32 +673,32 @@ }, "ping": { - "$": "ping", + "name": "ping", "description": "Check wether the bot is alive.", "body": { "pong": "Pong 🏓", - "pong_with_time": "Pong 🏓 - %sms" + "pong_with_time": "Pong 🏓 - %s1ms" }, "subcommands": { "blitzkit": { - "$": "blitzkit", + "name": "blitzkit", "description": "Ping BlitzKit" }, "wotb": { - "$": "wotb", + "name": "wotb", "description": "Ping World of Tanks Blitz" } } }, "player_info": { - "$": "player-info", + "name": "player-info", "description": "Basic information about a player", "body": { - "title": "%s's information", + "title": "%s1's information", "nickname": "Nickname", "battles": "Battles", "winrate": "Winrate", @@ -706,16 +709,16 @@ }, "rating": { - "$": "rating", + "name": "rating", "description": "Rating player's statistics", "subcommands": { "today": { - "$": "today", + "name": "today", "description": "Today's rating statistics" }, "season": { - "$": "season", + "name": "season", "description": "This season's rating statistics" } }, @@ -728,7 +731,7 @@ }, "errors": { - "no_participation": "# %s hasn't played rating\n\nThis player hasn't participated in the rating gamemode this season.", + "no_participation": "# %s1 hasn't played rating\n\nThis player hasn't participated in the rating gamemode this season.", "unrecorded_stats": "# Statistics currently unavailable\n\nWargaming may be currently be facing server downtime. If there is an on-going season, statistics should be available withing 24 hours." } }