feat: added more mature periods

This commit is contained in:
TresAbhi committed 2023-08-04 18:24:20 +00:00
1 parent 91f364b76a
commit 91dc45c880
27 files changed
+68 -67

No files matched your search

+13 -14
View File
@@ -2,10 +2,9 @@ import {
SlashCommandSubcommandBuilder,
SlashCommandSubcommandGroupBuilder,
} from 'discord.js';
import { PERIOD_NAMES } from '../discord/resolvePeriodFromCommand';
export type PeriodSubcommand = 'period' | 'custom';
export type PeriodOption = `${number}` | 'career';
export type PeriodType = 'period' | 'custom';
export type PeriodSize = `${number}` | 'career';
export default function addPeriodSubCommands(
option: SlashCommandSubcommandGroupBuilder,
@@ -17,18 +16,18 @@ export default function addPeriodSubCommands(
.addSubcommand((option) =>
extra(
option
.setName('period' satisfies PeriodSubcommand)
.setDescription(PERIOD_NAMES.period)
.setName('period' satisfies PeriodType)
.setDescription("Preset period's statistics")
.addStringOption((option) =>
option
.setName('period')
.setDescription('A preset period')
.setChoices(
{ name: 'Today', value: '1' satisfies PeriodOption },
{ name: '30 days', value: '30' satisfies PeriodOption },
{ name: '60 days', value: '60' satisfies PeriodOption },
{ name: '90 days', value: '90' satisfies PeriodOption },
{ name: 'Career', value: 'career' satisfies PeriodOption },
{ name: 'Today', value: '1' satisfies PeriodSize },
{ name: '30 days', value: '30' satisfies PeriodSize },
{ name: '60 days', value: '60' satisfies PeriodSize },
{ name: '90 days', value: '90' satisfies PeriodSize },
{ name: 'Career', value: 'career' satisfies PeriodSize },
)
.setRequired(true),
),
@@ -37,19 +36,19 @@ export default function addPeriodSubCommands(
.addSubcommand((option) =>
extra(
option
.setName('custom' satisfies PeriodSubcommand)
.setDescription(PERIOD_NAMES.custom)
.setName('custom' satisfies PeriodType)
.setDescription("Custom period's statistics")
.addIntegerOption((option) =>
option
.setName('start')
.setDescription('Start of period in days ago from today')
.setDescription('Days ago from today')
.setMinValue(0)
.setRequired(true),
)
.addIntegerOption((option) =>
option
.setName('end')
.setDescription('End of period in days ago from today')
.setDescription('Days ago from today')
.setMinValue(0)
.setRequired(true),
),
@@ -29,6 +29,7 @@ export default async function addStatTypeSubCommandGroups(
.addSubcommandGroup((option) =>
addPeriodSubCommands(option, (option) =>
option
.addStringOption(addUsernameChoices)
.addStringOption((option) => {
option
.setName('nation')
+10 -15
View File
@@ -3,17 +3,11 @@ import { Region } from '../../constants/regions';
import getPeriodNow from '../blitzstars/getPeriodNow';
import getPeriodStart from '../blitzstars/getPeriodStart';
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
import { PeriodSubcommand } from '../discord/addPeriodSubCommands';
import { PeriodSize, PeriodType } from '../discord/addPeriodSubCommands';
export const PERIOD_NAMES: Record<PeriodSubcommand, string> = {
period: "Preset period's statistics",
custom: "Custom period's statistics",
};
export const EVOLUTION_PERIOD_NAMES: Record<PeriodSubcommand, string> = {
period: "Preset period's evolution",
custom: "Custom period's evolution",
};
export function getPeriodOptionName(period: PeriodSize) {
return period === 'career' ? 'Career' : `${period}-day`;
}
export interface ResolvedPeriod {
statsName: string;
@@ -30,9 +24,10 @@ export default function resolvePeriodFromCommand(
let evolutionName: string;
let start: number;
let end: number;
const period = interaction.options.getSubcommand() as PeriodSubcommand;
const periodSubcommand = interaction.options.getSubcommand() as PeriodType;
const periodOption = interaction.options.getString('period') as PeriodSize;
if (period === 'custom') {
if (periodSubcommand === 'custom') {
const startRaw = interaction.options.getInteger('start')!;
const endRaw = interaction.options.getInteger('end')!;
const startMin = Math.min(startRaw, endRaw);
@@ -43,9 +38,9 @@ export default function resolvePeriodFromCommand(
start = getTimeDaysAgo(server, startMin);
end = getTimeDaysAgo(server, endMax);
} else {
statsName = PERIOD_NAMES[period];
evolutionName = EVOLUTION_PERIOD_NAMES[period];
start = getPeriodStart(server, period);
statsName = `${getPeriodOptionName(periodOption)} Statistics`;
evolutionName = `${getPeriodOptionName(periodOption)} Evolution`;
start = getPeriodStart(server, periodOption);
end = getPeriodNow();
}