mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 12:09:51 +02:00
feat: added limits to /today
This commit is contained in:
1 parent
438feefa83
commit
297f2f6580
3 files changed
+46
-33
No files matched your search
+12
-2
@@ -21,10 +21,20 @@ export const todayCommand: CommandRegistry = {
|
|||||||
command: new SlashCommandBuilder()
|
command: new SlashCommandBuilder()
|
||||||
.setName('today')
|
.setName('today')
|
||||||
.setDescription('A general daily breakdown of your performance')
|
.setDescription('A general daily breakdown of your performance')
|
||||||
.addStringOption(addUsernameChoices),
|
.addStringOption(addUsernameChoices)
|
||||||
|
.addIntegerOption((option) =>
|
||||||
|
option
|
||||||
|
.setName('limit')
|
||||||
|
.setDescription(
|
||||||
|
'The maximum number of tanks to display (default: Infinity)',
|
||||||
|
)
|
||||||
|
.setRequired(false)
|
||||||
|
.setMinValue(1),
|
||||||
|
),
|
||||||
|
|
||||||
async handler(interaction) {
|
async handler(interaction) {
|
||||||
const player = await resolvePlayerFromCommand(interaction);
|
const player = await resolvePlayerFromCommand(interaction);
|
||||||
|
const limit = interaction.options.getInteger('limit') ?? Infinity;
|
||||||
const { nickname } = (
|
const { nickname } = (
|
||||||
await getWargamingResponse<AccountInfo>(
|
await getWargamingResponse<AccountInfo>(
|
||||||
`https://api.wotblitz.${player.server}/wotb/account/info/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${player.id}`,
|
`https://api.wotblitz.${player.server}/wotb/account/info/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${player.id}`,
|
||||||
@@ -33,7 +43,7 @@ export const todayCommand: CommandRegistry = {
|
|||||||
const path = interactionToURL(interaction, player);
|
const path = interactionToURL(interaction, player);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
await today(player),
|
await today(player, limit, false),
|
||||||
primaryButton(path, 'Refresh'),
|
primaryButton(path, 'Refresh'),
|
||||||
linkButton(`${CYCLIC_API}/${path}`, 'Embed'),
|
linkButton(`${CYCLIC_API}/${path}`, 'Embed'),
|
||||||
linkButton(
|
linkButton(
|
||||||
|
|||||||
+29
-30
@@ -22,6 +22,7 @@ import { PossiblyPromise } from '../types/possiblyPromise.js';
|
|||||||
|
|
||||||
export default async function today(
|
export default async function today(
|
||||||
{ server, id }: ResolvedPlayer,
|
{ server, id }: ResolvedPlayer,
|
||||||
|
limit = Infinity,
|
||||||
naked?: boolean,
|
naked?: boolean,
|
||||||
) {
|
) {
|
||||||
const { diffed, order } = await getDiffedTankStats(
|
const { diffed, order } = await getDiffedTankStats(
|
||||||
@@ -113,37 +114,35 @@ export default async function today(
|
|||||||
);
|
);
|
||||||
|
|
||||||
const rows = await Promise.all(
|
const rows = await Promise.all(
|
||||||
[...(order.length === 0 ? [] : [0]), ...order].map(
|
[
|
||||||
async (tankId, index) => {
|
// this code unreadable on god will forget tomorrow no cap
|
||||||
const tankStats = diffed[tankId];
|
...(order.length === 0 ? [] : [0]),
|
||||||
const career = careerStats[tankId];
|
...(isFinite(limit) ? order.slice(0, limit) : order),
|
||||||
|
].map(async (tankId, index) => {
|
||||||
|
const tankStats = diffed[tankId];
|
||||||
|
const career = careerStats[tankId];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Breakdown.Row
|
<Breakdown.Row
|
||||||
naked={naked}
|
naked={naked}
|
||||||
isListing={tankId !== 0}
|
isListing={tankId !== 0}
|
||||||
minimized={index > 4}
|
minimized={index > 4}
|
||||||
key={tankId}
|
key={tankId}
|
||||||
name={tankId === 0 ? 'Total' : await resolveTankName(tankId)}
|
name={tankId === 0 ? 'Total' : await resolveTankName(tankId)}
|
||||||
winrate={tankStats.wins / tankStats.battles}
|
winrate={tankStats.wins / tankStats.battles}
|
||||||
careerWinrate={career.wins / career.battles}
|
careerWinrate={career.wins / career.battles}
|
||||||
WN8={isNaN(todayWN8s[tankId]) ? undefined : todayWN8s[tankId]}
|
WN8={isNaN(todayWN8s[tankId]) ? undefined : todayWN8s[tankId]}
|
||||||
careerWN8={
|
careerWN8={isNaN(careerWN8s[tankId]) ? undefined : careerWN8s[tankId]}
|
||||||
isNaN(careerWN8s[tankId]) ? undefined : careerWN8s[tankId]
|
damage={tankStats.damage_dealt / tankStats.battles}
|
||||||
}
|
careerDamage={career.damage_dealt / career.battles}
|
||||||
damage={tankStats.damage_dealt / tankStats.battles}
|
battles={tankStats.battles}
|
||||||
careerDamage={career.damage_dealt / career.battles}
|
careerBattles={career.battles}
|
||||||
battles={tankStats.battles}
|
icon={
|
||||||
careerBattles={career.battles}
|
tankId === 0 ? undefined : (await tankopedia)[tankId]?.images.normal
|
||||||
icon={
|
}
|
||||||
tankId === 0
|
/>
|
||||||
? undefined
|
);
|
||||||
: (await tankopedia)[tankId]?.images.normal
|
}),
|
||||||
}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return naked ? (
|
return naked ? (
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ export const todayRoute: RouteRegistry = {
|
|||||||
async handler(req) {
|
async handler(req) {
|
||||||
const player = resolvePlayerFromRequest(req);
|
const player = resolvePlayerFromRequest(req);
|
||||||
|
|
||||||
return await today(player, true);
|
return await today(
|
||||||
|
player,
|
||||||
|
req.query.limit ? parseInt(req.query.limit as string) : undefined,
|
||||||
|
true,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
Reference in new issue
Block a user