diff --git a/src/commands/tankstats.ts b/src/commands/tankstats.ts index 541a8ede4..7e33641f7 100644 --- a/src/commands/tankstats.ts +++ b/src/commands/tankstats.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder } from 'discord.js'; import markdownEscape from 'markdown-escape'; import { CommandRegistry } from '../behaviors/interactionCreate.js'; -import { BlitzServer } from '../constants/servers.js'; import tanksAutocomplete from '../core/autocomplete/tanks.js'; import usernameAutocomplete from '../core/autocomplete/username.js'; import getBlitzAccount from '../core/blitz/getBlitzAccount.js'; +import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import { tankopedia } from '../core/blitzstars/tankopedia.js'; import getPeriodicStats, { Period, @@ -13,9 +13,10 @@ import cleanTable from '../core/interaction/cleanTable.js'; import cmdName from '../core/interaction/cmdName.js'; import errorEmbed from '../core/interaction/errorEmbed.js'; import sklldEmbed from '../core/interaction/sklldEmbed.js'; -import addServerChoices from '../core/options/addServerChoices.js'; import addTankChoices from '../core/options/addTankChoices.js'; import addUsernameOption from '../core/options/addUsernameOption.js'; +import { args } from '../core/process/args.js'; +import { AccountInfo } from '../types/accountInfo.js'; import resolveTankName from '../utilities/resolveTankName.js'; type Periods = '30' | '60' | '90'; @@ -40,22 +41,23 @@ export default { ) .setRequired(true), ) - .addStringOption(addServerChoices) .addStringOption(addUsernameOption), async execute(interaction) { - const server = interaction.options.getString('server') as BlitzServer; const name = interaction.options.getString('username')!; const tankId = interaction.options.getString('tank')!; const period = interaction.options.getString('period') as Periods; - const blitzAccount = await getBlitzAccount(interaction, name, server); + const blitzAccount = await getBlitzAccount(interaction, name); if (!blitzAccount) return; + const { server, id } = blitzAccount; + const accountInfo = await getWargamingResponse( + `https://api.wotblitz.${server}/wotb/account/info/?application_id=${args['wargaming-application-id']}&account_id=${id}`, + ); + if (!accountInfo) return; const tank = tankopedia.data[tankId as unknown as number]; if (tank) { - const periodicStats = ( - await getPeriodicStats(blitzAccount.account_id, Number(period)) - ) + const periodicStats = (await getPeriodicStats(id, Number(period))) .filter((stats) => stats.tank_id === tank.tank_id) .filter((stats) => !stats.isRating); @@ -79,7 +81,7 @@ export default { embeds: [ sklldEmbed( `${period} day stats for ${markdownEscape( - blitzAccount.nickname, + accountInfo[id].nickname, )}'s ${resolveTankName(tank)}`, periodicStats.length > 0 ? cleanTable([ diff --git a/src/commands/verify.ts b/src/commands/verify.ts index 99287921c..59e305686 100644 --- a/src/commands/verify.ts +++ b/src/commands/verify.ts @@ -3,14 +3,13 @@ import markdownEscape from 'markdown-escape'; import discord from '../../discord.json' assert { type: 'json' }; import { CommandRegistry } from '../behaviors/interactionCreate.js'; import { NEGATIVE_COLOR, POSITIVE_COLOR } from '../constants/colors.js'; -import { BlitzServer } from '../constants/servers.js'; import usernameAutocomplete from '../core/autocomplete/username.js'; import getBlitzAccount from '../core/blitz/getBlitzAccount.js'; import getWargamingResponse from '../core/blitz/getWargamingResponse.js'; import cmdName from '../core/interaction/cmdName.js'; -import addServerChoices from '../core/options/addServerChoices.js'; import addUsernameOption from '../core/options/addUsernameOption.js'; import { args } from '../core/process/args.js'; +import { AccountInfo } from '../types/accountInfo.js'; import { PlayerClanData } from '../types/playerClanData.js'; export default { @@ -21,19 +20,22 @@ export default { command: new SlashCommandBuilder() .setName(cmdName('verify')) .setDescription("Set's the user's username to their in-game name") - .addStringOption(addServerChoices) .addStringOption(addUsernameOption), async execute(interaction) { const name = interaction.options.getString('username')!; - const server = interaction.options.getString('server') as BlitzServer; - const account = await getBlitzAccount(interaction, name, server); - if (!account) return; + const blitzAccount = await getBlitzAccount(interaction, name); + if (!blitzAccount) return; + const { id, server } = blitzAccount; + const accountInfo = await getWargamingResponse( + `https://api.wotblitz.${server}/wotb/account/info/?application_id=${args['wargaming-application-id']}&account_id=${id}`, + ); + if (!accountInfo) return; const clanData = await getWargamingResponse( - `https://api.wotblitz.${server}/wotb/clans/accountinfo/?application_id=${args['wargaming-application-id']}&account_id=${account.account_id}&extra=clan`, + `https://api.wotblitz.${server}/wotb/clans/accountinfo/?application_id=${args['wargaming-application-id']}&account_id=${id}&extra=clan`, ); if (!clanData) return; - const clan = clanData[account.account_id]?.clan; + const clan = clanData[id]?.clan; const clanTag = clan ? ` [${clan!.tag}]` : ''; if (!interaction.guild?.members.me?.permissions.has('ManageNicknames')) { @@ -64,7 +66,7 @@ export default { if (member) { try { - await member.setNickname(`${account.nickname}${clanTag}`); + await member.setNickname(`${accountInfo[id].nickname}${clanTag}`); if (interaction.guildId === discord.guild_id) { if ( @@ -103,14 +105,14 @@ export default { .setTitle(`${interaction.user.username} is verified`) .setDescription( `The user is now verified as ${markdownEscape( - account.nickname, + accountInfo[id].nickname, )}${markdownEscape(clanTag)}`, ), ], }); console.log( - `${interaction.user.username} verified as ${account.nickname}${clanTag}`, + `${interaction.user.username} verified as ${accountInfo[id].nickname}${clanTag}`, ); } catch (error) { await interaction.editReply({