mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 10:47:04 +02:00
feat: updated tankstats and verify
This commit is contained in:
1 parent
9a9ea3a71a
commit
e78345f144
2 files changed
+24
-20
No files matched your search
@@ -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
@@ -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({
|
||||
|
||||
Reference in new issue
Block a user