Files
blitzkit/src/commands/playerInfo.ts
T

68 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-05-20 00:48:52 +00:00
import markdownEscape from 'markdown-escape';
2023-10-14 11:06:03 -05:00
import { getAccountInfo } from '../core/blitz/getAccountInfo';
2023-10-14 11:32:02 -05:00
import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername';
2024-03-08 20:43:30 -06:00
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
2023-10-14 11:32:02 -05:00
import embedInfo from '../core/discord/embedInfo';
2023-10-14 11:36:10 -05:00
import markdownTable from '../core/discord/markdownTable';
import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
2024-03-08 20:43:30 -06:00
import { translator } from '../core/localization/translator';
2023-07-11 19:54:57 +00:00
import { CommandRegistry } from '../events/interactionCreate';
2023-05-20 00:13:32 +00:00
2024-03-06 15:34:10 -06:00
export const playerInfoCommand = new Promise<CommandRegistry>((resolve) => {
resolve({
inProduction: true,
inPublic: true,
2023-05-20 00:13:32 +00:00
2024-03-08 20:43:30 -06:00
command:
createLocalizedCommand('player-info').addStringOption(addUsernameChoices),
2023-05-20 00:13:32 +00:00
2024-03-06 15:34:10 -06:00
async handler(interaction) {
2024-03-08 20:43:30 -06:00
const { t, translate } = translator(interaction.locale);
2024-03-06 15:34:10 -06:00
const account = await resolvePlayerFromCommand(interaction);
const { id, region: region } = account;
const accountInfo = await getAccountInfo(region, id);
2023-05-20 00:13:32 +00:00
2024-03-06 15:34:10 -06:00
return embedInfo(
2024-03-08 20:43:30 -06:00
translate('bot.command.player_info.body.title', [
markdownEscape(accountInfo.nickname),
]),
2023-05-20 00:13:32 +00:00
2024-03-06 15:34:10 -06:00
markdownTable([
2024-03-08 20:43:30 -06:00
[t`bot.command.player_info.body.nickname`, `${accountInfo.nickname}`],
2024-03-06 15:34:10 -06:00
[
2024-03-08 20:43:30 -06:00
t`bot.command.player_info.body.battles`,
`${accountInfo.statistics.all.battles}`,
],
[
t`bot.command.player_info.body.winrate`,
2024-03-06 15:34:10 -06:00
`${(
100 *
(accountInfo.statistics.all.wins /
accountInfo.statistics.all.battles)
).toFixed(2)}%`,
],
[],
[
2024-03-08 20:43:30 -06:00
t`bot.command.player_info.body.account_id`,
`${accountInfo.account_id}`,
2024-03-06 15:34:10 -06:00
],
[
2024-03-08 20:43:30 -06:00
t`bot.command.player_info.body.created`,
new Date(accountInfo.created_at * 1000).toLocaleDateString(
interaction.locale,
),
],
[
t`bot.command.player_info.body.last_battle`,
new Date(accountInfo.last_battle_time * 1000).toLocaleDateString(
interaction.locale,
),
2024-03-06 15:34:10 -06:00
],
]),
);
},
2023-05-20 00:13:32 +00:00
2024-03-06 15:34:10 -06:00
autocomplete: autocompleteUsername,
});
});