feat: updated tankstats and verify

This commit is contained in:
TresAbhi committed 2023-05-16 02:12:51 +00:00
1 parent 9a9ea3a71a
commit e78345f144
2 files changed
+24 -20

No files matched your search

+11 -9
View File
@@ -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<AccountInfo>(
`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([
+13 -11
View File
@@ -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<AccountInfo>(
`https://api.wotblitz.${server}/wotb/account/info/?application_id=${args['wargaming-application-id']}&account_id=${id}`,
);
if (!accountInfo) return;
const clanData = await getWargamingResponse<PlayerClanData>(
`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({