mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +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 { SlashCommandBuilder } from 'discord.js';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import { CommandRegistry } from '../behaviors/interactionCreate.js';
|
import { CommandRegistry } from '../behaviors/interactionCreate.js';
|
||||||
import { BlitzServer } from '../constants/servers.js';
|
|
||||||
import tanksAutocomplete from '../core/autocomplete/tanks.js';
|
import tanksAutocomplete from '../core/autocomplete/tanks.js';
|
||||||
import usernameAutocomplete from '../core/autocomplete/username.js';
|
import usernameAutocomplete from '../core/autocomplete/username.js';
|
||||||
import getBlitzAccount from '../core/blitz/getBlitzAccount.js';
|
import getBlitzAccount from '../core/blitz/getBlitzAccount.js';
|
||||||
|
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
||||||
import { tankopedia } from '../core/blitzstars/tankopedia.js';
|
import { tankopedia } from '../core/blitzstars/tankopedia.js';
|
||||||
import getPeriodicStats, {
|
import getPeriodicStats, {
|
||||||
Period,
|
Period,
|
||||||
@@ -13,9 +13,10 @@ import cleanTable from '../core/interaction/cleanTable.js';
|
|||||||
import cmdName from '../core/interaction/cmdName.js';
|
import cmdName from '../core/interaction/cmdName.js';
|
||||||
import errorEmbed from '../core/interaction/errorEmbed.js';
|
import errorEmbed from '../core/interaction/errorEmbed.js';
|
||||||
import sklldEmbed from '../core/interaction/sklldEmbed.js';
|
import sklldEmbed from '../core/interaction/sklldEmbed.js';
|
||||||
import addServerChoices from '../core/options/addServerChoices.js';
|
|
||||||
import addTankChoices from '../core/options/addTankChoices.js';
|
import addTankChoices from '../core/options/addTankChoices.js';
|
||||||
import addUsernameOption from '../core/options/addUsernameOption.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';
|
import resolveTankName from '../utilities/resolveTankName.js';
|
||||||
|
|
||||||
type Periods = '30' | '60' | '90';
|
type Periods = '30' | '60' | '90';
|
||||||
@@ -40,22 +41,23 @@ export default {
|
|||||||
)
|
)
|
||||||
.setRequired(true),
|
.setRequired(true),
|
||||||
)
|
)
|
||||||
.addStringOption(addServerChoices)
|
|
||||||
.addStringOption(addUsernameOption),
|
.addStringOption(addUsernameOption),
|
||||||
|
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
const server = interaction.options.getString('server') as BlitzServer;
|
|
||||||
const name = interaction.options.getString('username')!;
|
const name = interaction.options.getString('username')!;
|
||||||
const tankId = interaction.options.getString('tank')!;
|
const tankId = interaction.options.getString('tank')!;
|
||||||
const period = interaction.options.getString('period') as Periods;
|
const period = interaction.options.getString('period') as Periods;
|
||||||
const blitzAccount = await getBlitzAccount(interaction, name, server);
|
const blitzAccount = await getBlitzAccount(interaction, name);
|
||||||
if (!blitzAccount) return;
|
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];
|
const tank = tankopedia.data[tankId as unknown as number];
|
||||||
|
|
||||||
if (tank) {
|
if (tank) {
|
||||||
const periodicStats = (
|
const periodicStats = (await getPeriodicStats(id, Number(period)))
|
||||||
await getPeriodicStats(blitzAccount.account_id, Number(period))
|
|
||||||
)
|
|
||||||
.filter((stats) => stats.tank_id === tank.tank_id)
|
.filter((stats) => stats.tank_id === tank.tank_id)
|
||||||
.filter((stats) => !stats.isRating);
|
.filter((stats) => !stats.isRating);
|
||||||
|
|
||||||
@@ -79,7 +81,7 @@ export default {
|
|||||||
embeds: [
|
embeds: [
|
||||||
sklldEmbed(
|
sklldEmbed(
|
||||||
`${period} day stats for ${markdownEscape(
|
`${period} day stats for ${markdownEscape(
|
||||||
blitzAccount.nickname,
|
accountInfo[id].nickname,
|
||||||
)}'s ${resolveTankName(tank)}`,
|
)}'s ${resolveTankName(tank)}`,
|
||||||
periodicStats.length > 0
|
periodicStats.length > 0
|
||||||
? cleanTable([
|
? cleanTable([
|
||||||
|
|||||||
+13
-11
@@ -3,14 +3,13 @@ import markdownEscape from 'markdown-escape';
|
|||||||
import discord from '../../discord.json' assert { type: 'json' };
|
import discord from '../../discord.json' assert { type: 'json' };
|
||||||
import { CommandRegistry } from '../behaviors/interactionCreate.js';
|
import { CommandRegistry } from '../behaviors/interactionCreate.js';
|
||||||
import { NEGATIVE_COLOR, POSITIVE_COLOR } from '../constants/colors.js';
|
import { NEGATIVE_COLOR, POSITIVE_COLOR } from '../constants/colors.js';
|
||||||
import { BlitzServer } from '../constants/servers.js';
|
|
||||||
import usernameAutocomplete from '../core/autocomplete/username.js';
|
import usernameAutocomplete from '../core/autocomplete/username.js';
|
||||||
import getBlitzAccount from '../core/blitz/getBlitzAccount.js';
|
import getBlitzAccount from '../core/blitz/getBlitzAccount.js';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
||||||
import cmdName from '../core/interaction/cmdName.js';
|
import cmdName from '../core/interaction/cmdName.js';
|
||||||
import addServerChoices from '../core/options/addServerChoices.js';
|
|
||||||
import addUsernameOption from '../core/options/addUsernameOption.js';
|
import addUsernameOption from '../core/options/addUsernameOption.js';
|
||||||
import { args } from '../core/process/args.js';
|
import { args } from '../core/process/args.js';
|
||||||
|
import { AccountInfo } from '../types/accountInfo.js';
|
||||||
import { PlayerClanData } from '../types/playerClanData.js';
|
import { PlayerClanData } from '../types/playerClanData.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -21,19 +20,22 @@ export default {
|
|||||||
command: new SlashCommandBuilder()
|
command: new SlashCommandBuilder()
|
||||||
.setName(cmdName('verify'))
|
.setName(cmdName('verify'))
|
||||||
.setDescription("Set's the user's username to their in-game name")
|
.setDescription("Set's the user's username to their in-game name")
|
||||||
.addStringOption(addServerChoices)
|
|
||||||
.addStringOption(addUsernameOption),
|
.addStringOption(addUsernameOption),
|
||||||
|
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
const name = interaction.options.getString('username')!;
|
const name = interaction.options.getString('username')!;
|
||||||
const server = interaction.options.getString('server') as BlitzServer;
|
const blitzAccount = await getBlitzAccount(interaction, name);
|
||||||
const account = await getBlitzAccount(interaction, name, server);
|
if (!blitzAccount) return;
|
||||||
if (!account) 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>(
|
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;
|
if (!clanData) return;
|
||||||
const clan = clanData[account.account_id]?.clan;
|
const clan = clanData[id]?.clan;
|
||||||
const clanTag = clan ? ` [${clan!.tag}]` : '';
|
const clanTag = clan ? ` [${clan!.tag}]` : '';
|
||||||
|
|
||||||
if (!interaction.guild?.members.me?.permissions.has('ManageNicknames')) {
|
if (!interaction.guild?.members.me?.permissions.has('ManageNicknames')) {
|
||||||
@@ -64,7 +66,7 @@ export default {
|
|||||||
|
|
||||||
if (member) {
|
if (member) {
|
||||||
try {
|
try {
|
||||||
await member.setNickname(`${account.nickname}${clanTag}`);
|
await member.setNickname(`${accountInfo[id].nickname}${clanTag}`);
|
||||||
|
|
||||||
if (interaction.guildId === discord.guild_id) {
|
if (interaction.guildId === discord.guild_id) {
|
||||||
if (
|
if (
|
||||||
@@ -103,14 +105,14 @@ export default {
|
|||||||
.setTitle(`${interaction.user.username} is verified`)
|
.setTitle(`${interaction.user.username} is verified`)
|
||||||
.setDescription(
|
.setDescription(
|
||||||
`The user is now verified as ${markdownEscape(
|
`The user is now verified as ${markdownEscape(
|
||||||
account.nickname,
|
accountInfo[id].nickname,
|
||||||
)}${markdownEscape(clanTag)}`,
|
)}${markdownEscape(clanTag)}`,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
`${interaction.user.username} verified as ${account.nickname}${clanTag}`,
|
`${interaction.user.username} verified as ${accountInfo[id].nickname}${clanTag}`,
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await interaction.editReply({
|
await interaction.editReply({
|
||||||
|
|||||||
Reference in new issue
Block a user