import { getAccountInfo } from '@blitzkit/core'; import { literals } from '@blitzkit/i18n'; import markdownEscape from 'markdown-escape'; import { addUsernameChoices } from '../core/discord/addUsernameChoices'; import { autocompleteUsername } from '../core/discord/autocompleteUsername'; import { createLocalizedCommand } from '../core/discord/createLocalizedCommand'; import { embedInfo } from '../core/discord/embedInfo'; import { markdownTable } from '../core/discord/markdownTable'; import { resolvePlayerFromCommand } from '../core/discord/resolvePlayerFromCommand'; import { translator } from '../core/localization/translator'; import { CommandRegistry } from '../events/interactionCreate'; export const playerInfoCommand = new Promise((resolve) => { resolve({ command: createLocalizedCommand('player-info').addStringOption(addUsernameChoices), async handler(interaction) { const { strings } = translator(interaction.locale); const account = await resolvePlayerFromCommand(interaction); const { id, region: region } = account; const accountInfo = await getAccountInfo(region, id); return embedInfo( literals(strings.bot.commands.player_info.body.title, [ markdownEscape(accountInfo.nickname), ]), markdownTable([ [ strings.bot.commands.player_info.body.nickname, `${accountInfo.nickname}`, ], [ strings.bot.commands.player_info.body.battles, `${accountInfo.statistics.all.battles}`, ], [ strings.bot.commands.player_info.body.winrate, `${( 100 * (accountInfo.statistics.all.wins / accountInfo.statistics.all.battles) ).toFixed(2)}%`, ], [], [ strings.bot.commands.player_info.body.account_id, `${accountInfo.account_id}`, ], [ strings.bot.commands.player_info.body.created, new Date(accountInfo.created_at * 1000).toLocaleDateString( interaction.locale, ), ], [ strings.bot.commands.player_info.body.last_battle, new Date(accountInfo.last_battle_time * 1000).toLocaleDateString( interaction.locale, ), ], ]), ); }, autocomplete: autocompleteUsername, }); });