fix: no cross-bot imports

This commit is contained in:
TrèsAbhi committed 2024-09-07 23:00:56 -05:00
1 parent 6c0b46725d
commit 7c6f381bbe
58 files changed
+233 -252

No files matched your search

@@ -1,4 +1,4 @@
import { getBlitzStarsLinkButton } from '../../../../website/src/core/blitzstars/getBlitzStarsLinkButton';
import { getBlitzStarsLinkButton } from '../../core/blitzstars/getBlitzStarsLinkButton';
import addPeriodicFilterOptions from '../../core/discord/addPeriodicFilterOptions';
import addUsernameChoices from '../../core/discord/addUsernameChoices';
import autocompleteTanks from '../../core/discord/autocompleteTanks';
@@ -5,6 +5,7 @@ import {
TankDefinition,
tankDefinitions,
} from '@blitzkit/core';
import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages';
import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8';
import getWN8Percentile from '@blitzkit/core/src/statistics/getWN8Percentile';
import { Locale } from 'discord.js';
@@ -12,13 +13,12 @@ import { chunk } from 'lodash';
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../../website/src/core/blitz/getClanAccountInfo';
import getTankStats from '../../../../website/src/core/blitz/getTankStats';
import { filtersToDescription } from '../../../../website/src/core/blitzkit/filtersToDescription';
import { tankAverages } from '../../../../website/src/core/blitzstars/tankAverages';
import { UserError } from '../../../../website/src/hooks/userError';
import * as Breakdown from '../../components/Breakdown';
import CommandWrapper from '../../components/CommandWrapper';
import NoData from '../../components/NoData';
import TitleBar from '../../components/TitleBar';
import { filtersToDescription } from '../../core/blitzkit/filtersToDescription';
import getStatsInPeriod from '../../core/blitzstars/getStatsInPeriod';
import { ResolvedPeriod } from '../../core/discord/resolvePeriodFromCommand';
import { ResolvedPlayer } from '../../core/discord/resolvePlayerFromCommand';
@@ -35,7 +35,7 @@ export async function renderBreakdown(
) {
const { t, translate } = translator(locale);
const awaitedTankDefinitions = await tankDefinitions;
const awaitedTankAverages = await tankAverages;
const awaitedTankAverages = await blitzStarsTankAverages;
const statsInPeriod = await getStatsInPeriod(region, id, start, end, locale);
const { filteredOrder } = await filterStats(statsInPeriod, filters);
const accountInfo = await getAccountInfo(region, id);
+3 -3
View File
@@ -1,15 +1,15 @@
import { Locale, SlashCommandSubcommandGroupBuilder } from 'discord.js';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import resolveTankId from '../../../website/src/core/blitz/resolveTankId';
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton';
import getPlayerHistories from '../../../website/src/core/blitzstars/getPlayerHistories';
import CommandWrapper from '../components/CommandWrapper';
import * as Graph from '../components/Graph';
import { LineColor } from '../components/Graph/components/Line/constants';
import NoData from '../components/NoData';
import TitleBar from '../components/TitleBar';
import resolveTankId from '../core/blitz/resolveTankId';
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
import getPlayerHistories from '../core/blitzstars/getPlayerHistories';
import getTankHistories from '../core/blitzstars/getTankHistories';
import { addPeriodSubCommands } from '../core/discord/addPeriodSubCommands';
import addTankChoices from '../core/discord/addTankChoices';
+2 -2
View File
@@ -3,13 +3,13 @@ import { Locale } from 'discord.js';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
import { filtersToDescription } from '../../../website/src/core/blitzkit/filtersToDescription';
import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton';
import CommandWrapper from '../components/CommandWrapper';
import GenericAllStats from '../components/GenericAllStats';
import NoData from '../components/NoData';
import TierWeights from '../components/TierWeights';
import TitleBar from '../components/TitleBar';
import { filtersToDescription } from '../core/blitzkit/filtersToDescription';
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions';
import addUsernameChoices from '../core/discord/addUsernameChoices';
@@ -2,6 +2,7 @@ import {
BkrlDiscriminatedEntries,
FIRST_MINIMAL_ARCHIVED_RATING_SEASON,
LEAGUES,
RatingInfo,
Region,
} from '@blitzkit/core';
import {
@@ -34,93 +35,6 @@ import resolvePlayerFromCommand from '../core/discord/resolvePlayerFromCommand';
import { translator } from '../core/localization/translator';
import { CommandRegistry } from '../events/interactionCreate';
export interface RatingPlayer {
spa_id: number;
mmr: number;
season_number: number;
calibrationBattlesLeft: number;
number: number;
percentile: number;
skip: boolean;
updated_at: string;
score: number;
nickname: string;
clan_tag: string;
}
export interface LeagueTop {
result: RatingPlayer[];
}
export type RatingReward = {
from_position: number;
to_position: number;
count: number;
} & (
| {
type: 'vehicle';
vehicle: {
id: number;
name: string;
nation: string;
subnation: string;
use_subnation_flag: boolean;
type_slug: string;
level: number;
roman_level: string;
user_string: string;
image_url: string;
preview_image_url: string;
is_premium: boolean;
is_collectible: boolean;
};
}
| {
type: 'stuff';
stuff: {
name: string;
count: number;
title: string;
image_url: string;
type: string;
sizes: {};
};
}
);
export interface RatingLeague {
title: string;
small_icon: string;
big_icon: string;
background: string;
index: number;
percentile: number;
}
export type RatingInfo =
| {
detail: undefined;
title: string;
icon: string | null;
start_at: string;
finish_at: string;
current_season: number;
updated_at: string;
count: number;
rewards: RatingReward[];
leagues: RatingLeague[];
}
| { detail: { error: string } };
export interface RatingNeighbors {
neighbors: RatingPlayer[];
}
interface SimplifiedPlayer {
id: number;
score: number;
@@ -256,7 +170,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
name_localizations: localizationObject(
`common.leagues.${name}`,
),
} satisfies APIApplicationCommandOptionChoice<string>),
}) satisfies APIApplicationCommandOptionChoice<string>,
),
)
.setRequired(true);
@@ -279,8 +193,8 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
const season = seasonOption
? parseInt(seasonOption)
: onGoingSeason
? latestArchivedSeasonNumber + 1
: latestArchivedSeasonNumber;
? latestArchivedSeasonNumber + 1
: latestArchivedSeasonNumber;
const isCurrentSeason = season === latestArchivedSeasonNumber + 1;
let titleName: string;
let titleImage: string | undefined;
@@ -313,7 +227,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
position: player.number,
clan: player.clan_tag,
nickname: player.nickname,
} satisfies SimplifiedPlayer),
}) satisfies SimplifiedPlayer,
),
)
: await getArchivedRatingLeaderboard(region, season!).then(
@@ -349,7 +263,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
'bot.commands.rating_leaderboard.body.deleted_player',
[`${player.id}`],
),
} satisfies SimplifiedPlayer),
}) satisfies SimplifiedPlayer,
);
},
);
@@ -398,7 +312,7 @@ export const ratingLeaderboardCommand = new Promise<CommandRegistry>(
score: player.score,
clan: player.clan_tag,
nickname: player.nickname,
} satisfies SimplifiedPlayer),
}) satisfies SimplifiedPlayer,
),
)
: await getArchivedRatingLeaderboard(region, season!).then(
+2 -2
View File
@@ -4,6 +4,7 @@ import {
TIER_ROMAN_NUMERALS,
} from '@blitzkit/core';
import { tankIcon } from '@blitzkit/core/src/blitzkit/tankIcon';
import { blitzStarsTankAverages } from '@blitzkit/core/src/blitzstars/tankAverages';
import calculateWN8 from '@blitzkit/core/src/statistics/calculateWN8';
import { clamp } from 'lodash';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
@@ -11,7 +12,6 @@ import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
import { iconPng } from '../../../website/src/core/blitzkit/iconPng';
import { mapDefinitions } from '../../../website/src/core/blitzkit/mapDefinitions';
import { RenderConfiguration } from '../../../website/src/core/blitzkit/renderConfiguration';
import { tankAverages } from '../../../website/src/core/blitzstars/tankAverages';
import CommandWrapper from '../components/CommandWrapper';
import TitleBar from '../components/TitleBar';
import buttonLink from '../core/discord/buttonLink';
@@ -221,7 +221,7 @@ async function playerListing(
winningTeam: number,
recordingPlayer = false,
) {
const awaitedTankAverages = await tankAverages;
const awaitedTankAverages = await blitzStarsTankAverages;
const awaitedTankDefinitions = await tankDefinitions;
const tank = awaitedTankDefinitions[player.vehicle_descr];
const blockAccent = recordingPlayer ? '_amber' : '';
+1 -1
View File
@@ -9,7 +9,6 @@ import { escapeMarkdown, Locale } from 'discord.js';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import getTankStats from '../../../website/src/core/blitz/getTankStats';
import resolveTankId from '../../../website/src/core/blitz/resolveTankId';
import { buildTechTreeLine } from '../../../website/src/core/blitzkit/buildTechTreeLine';
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
import { iconPng } from '../../../website/src/core/blitzkit/iconPng';
@@ -17,6 +16,7 @@ import { resolveAncestry } from '../../../website/src/core/blitzkit/resolveAnces
import { tankIconPng } from '../../../website/src/core/blitzkit/tankIconPng';
import CommandWrapper from '../components/CommandWrapper';
import TitleBar from '../components/TitleBar';
import resolveTankId from '../core/blitz/resolveTankId';
import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteTanks from '../core/discord/autocompleteTanks';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
+1 -1
View File
@@ -1,4 +1,5 @@
import { Region } from '@blitzkit/core';
import { ClanList } from '@blitzkit/core/src/blitz/clanList';
import { Locale } from 'discord.js';
import markdownEscape from 'markdown-escape';
import fetchBlitz from '../../../website/src/core/blitz/fetchBlitz';
@@ -9,7 +10,6 @@ import embedInfo from '../core/discord/embedInfo';
import { localizationObject } from '../core/discord/localizationObject';
import { translator } from '../core/localization/translator';
import { CommandRegistry } from '../events/interactionCreate';
import { ClanList } from '../types/clanList';
const DEFAULT_LIMIT = 25;
+2 -2
View File
@@ -3,12 +3,12 @@ import { Locale } from 'discord.js';
import { getAccountInfo } from '../../../website/src/core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../../../website/src/core/blitz/getClanAccountInfo';
import { emblemURL } from '../../../website/src/core/blitzkit/emblemURL';
import { filtersToDescription } from '../../../website/src/core/blitzkit/filtersToDescription';
import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton';
import AllStatsOverview from '../components/AllStatsOverview';
import CommandWrapper from '../components/CommandWrapper';
import NoData from '../components/NoData';
import TitleBar from '../components/TitleBar';
import { filtersToDescription } from '../core/blitzkit/filtersToDescription';
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
import getStatsInPeriod from '../core/blitzstars/getStatsInPeriod';
import addPeriodicFilterOptions from '../core/discord/addPeriodicFilterOptions';
import addUsernameChoices from '../core/discord/addUsernameChoices';
+1 -1
View File
@@ -1,5 +1,5 @@
import { gameDefinitions } from '@blitzkit/core/src/blitzkit/gameDefinitions';
import { getBlitzStarsLinkButton } from '../../../website/src/core/blitzstars/getBlitzStarsLinkButton';
import { getBlitzStarsLinkButton } from '../core/blitzstars/getBlitzStarsLinkButton';
import { addFilterOptions } from '../core/discord/addFilterOptions';
import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteTanks from '../core/discord/autocompleteTanks';
@@ -1,4 +1,5 @@
import { TankClass, TreeType } from '@blitzkit/core';
import { TREE_TYPE_ICONS } from '@blitzkit/core/src/blitzkit/tankDefinitions/constants';
import { Percentile } from '@blitzkit/core/src/statistics/percentiles';
import { createColors } from 'bepaint';
import {
@@ -6,7 +7,6 @@ import {
GrayColor,
PALETTES,
} from '../../../core/radix/radixColors';
import { TREE_TYPE_ICONS } from '../../Tanks/components/Item/constants';
import { RowStat } from './RowStat';
export interface RowStatItem {
@@ -82,8 +82,8 @@ export function Row({
? treeType === 'collector'
? theme.textLowContrast_blue
: treeType === 'premium'
? theme.textLowContrast_amber
: theme.textHighContrast
? theme.textLowContrast_amber
: theme.textHighContrast
: theme.textLowContrast,
fontWeight: 900,
fontSize: 16,
@@ -1,23 +0,0 @@
import {
TANK_ICONS,
TANK_ICONS_COLLECTOR,
TANK_ICONS_PREMIUM,
TankClass,
TreeType,
} from '@blitzkit/core';
export const TREE_TYPE_NAMES: Record<TreeType, string> = {
researchable: 'Tech tree',
premium: 'Premium',
collector: 'Collector',
};
export const TREE_TYPE_IMAGES: Record<TreeType, string> = {
researchable: 'https://i.imgur.com/pJxO2XY.png',
premium: 'https://i.imgur.com/mZzSwOU.png',
collector: 'https://i.imgur.com/7A0RsG5.png',
};
export const TREE_TYPE_ICONS: Record<TreeType, Record<TankClass, string>> = {
researchable: TANK_ICONS,
premium: TANK_ICONS_PREMIUM,
collector: TANK_ICONS_COLLECTOR,
};
@@ -1,6 +1,6 @@
import { TankClass, TreeType } from '@blitzkit/core';
import { TREE_TYPE_ICONS } from '@blitzkit/core/src/blitzkit/tankDefinitions/constants';
import { theme } from '../../../../stitches.config';
import { TREE_TYPE_ICONS } from './constants';
export interface ItemProps {
tankType?: TankClass;
+1 -3
View File
@@ -1,8 +1,6 @@
import { Tier } from '@blitzkit/core';
import { TierWeightsRecord } from '@blitzkit/core/src/statistics/getTierWeights';
import { theme } from '../stitches.config';
export type TierWeightsRecord = Partial<Record<Tier, number>>;
interface TierWeightsProps {
weights: TierWeightsRecord;
}
@@ -0,0 +1,45 @@
import { tankDefinitions, tankNames } from '@blitzkit/core';
import { Locale } from 'discord.js';
import { go } from 'fuzzysort';
import markdownEscape from 'markdown-escape';
import { UserError } from '../../../../website/src/hooks/userError';
import { tankNamesTechTreeOnly } from '../discord/autocompleteTanks';
import { translator } from '../localization/translator';
export default async function resolveTankId(
tank: string | number,
locale: Locale,
techTreeOnly = false,
) {
const { translate } = translator(locale);
const number = typeof tank === 'string' ? Number(tank) : tank;
if (Number.isNaN(number)) {
const searchResult = go(
`${tank}`,
await (techTreeOnly ? tankNamesTechTreeOnly : tankNames),
{
keys: ['searchableName', 'searchableNameDeburr', 'camouflages'],
limit: 1,
},
);
if (searchResult.length === 0) {
throw new UserError(
translate('bot.common.errors.tank_name_not_found', [
markdownEscape(`${tank}`),
]),
);
} else {
return searchResult[0].obj.id;
}
} else {
if ((await tankDefinitions)[number]) {
return number;
} else {
throw new UserError(
translate('bot.common.errors.tank_id_not_found', [`${number}`]),
);
}
}
}
@@ -0,0 +1,32 @@
import {
StatFilters,
tankDefinitions,
Tier,
TIER_ROMAN_NUMERALS,
} from '@blitzkit/core';
import { Locale } from 'discord.js';
import { translator } from '../localization/translator';
export async function filtersToDescription(
{ nation, tier, tankType, treeType, tank }: StatFilters,
locale: Locale,
) {
const { translate } = translator(locale);
const awaitedTankDefinitions = await tankDefinitions;
const info: string[] = [];
// TODO: somehow localize tank names?
if (tank) return awaitedTankDefinitions[tank].name;
if (nation) info.push(translate(`common.nations.${nation}`));
if (tier) {
info.push(
translate('bot.common.filters.tier', [TIER_ROMAN_NUMERALS[tier as Tier]]),
);
}
if (tankType) info.push(translate(`common.tank_class_short.${tankType}`));
if (treeType) info.push(translate(`common.tree_type.${treeType}`));
return info.length === 0
? translate('bot.common.filters.none')
: info.join(', ');
}
@@ -0,0 +1,29 @@
import { usersDatabase } from '@blitzkit/core';
import { client } from '../discord/client';
const EXIT_EVENTS = [
'beforeExit',
'exit',
'SIGINT',
'SIGTERM',
'SIGUSR1',
'SIGUSR2',
];
async function cleanup() {
console.log('Cleaning up...');
await Promise.all([usersDatabase.$disconnect(), client.destroy()]);
console.log('Gracefully exiting...');
EXIT_EVENTS.forEach((event) => process.off(event, cleanup));
process.exit(0);
}
export function registerProcesses() {
process.on('uncaughtException', console.error);
client.on('error', console.error);
EXIT_EVENTS.forEach((event) => process.on(event, cleanup));
}
@@ -0,0 +1,18 @@
import { Region } from '@blitzkit/core';
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
import buttonLink from '../discord/buttonLink';
export async function getBlitzStarsLinkButton(
region: Region,
id: number,
tankId?: number,
) {
const { nickname } = await getAccountInfo(region, id);
return buttonLink(
`https://www.blitzstars.com/player/${region}/${nickname}${
tankId ? `/tank/${tankId!}` : ''
}`,
'BlitzStars',
);
}
@@ -0,0 +1,63 @@
import { Region, emptyAllStats } from '@blitzkit/core';
import { getAccountInfo } from '../../../../website/src/core/blitz/getAccountInfo';
import {
GetHistoriesOptions,
Histories,
History,
getHistoriesDefaultOptions,
} from '../../types/histories';
import { PlayerStats } from './getPlayerStats';
export default async function getPlayerHistories(
server: Region,
id: number,
options?: Partial<GetHistoriesOptions>,
) {
const mergedOptions = { ...getHistoriesDefaultOptions, ...options };
const response = await fetch(
`https://www.blitzstars.com/api/playerstats/${id}`,
);
const playerHistories = ((await response.json()) as PlayerStats).map(
(history) =>
({
all: history.statistics.all,
last_battle_time: history.last_battle_time,
}) satisfies History,
);
let lastNonCompliantIndex = -1;
let hasCompliedOnce = false;
const filtered = playerHistories.filter(({ last_battle_time }, index) => {
const complies =
last_battle_time >= mergedOptions.start &&
last_battle_time <= mergedOptions.end;
if (complies && !hasCompliedOnce) hasCompliedOnce = true;
if (!hasCompliedOnce) lastNonCompliantIndex = index;
return complies;
});
const latestNodes: Histories = [];
if (mergedOptions.includeLatestHistories) {
const { last_battle_time, statistics } = await getAccountInfo(server, id);
latestNodes.push({ all: statistics.all, last_battle_time });
}
const previousNodes: Histories = [];
if (mergedOptions.includePreviousHistories) {
if (lastNonCompliantIndex !== -1) {
previousNodes.push(
playerHistories[lastNonCompliantIndex] ??
({
all: emptyAllStats,
last_battle_time: -Infinity,
} satisfies History),
);
}
}
return [...latestNodes, ...filtered, ...previousNodes] satisfies Histories;
}
@@ -0,0 +1,37 @@
import { BlitzStats, Region } from '@blitzkit/core';
interface IndividualPlayerStats {
clan: { clan_id: number; name: string; tag: string };
statistics: {
all: BlitzStats;
wn8: number;
wn7: number;
average_tier: number;
};
last_battle_time: number;
nickname: string;
account_id: number;
achievements: {
account_id: number;
[key: string]: number;
};
region: Region;
}
export type PlayerStats = IndividualPlayerStats[];
export async function getPlayerStats<
Ids extends number | number[],
ReturnType = Ids extends number ? PlayerStats : PlayerStats[],
>(region: Region, ids: Ids) {
const stats = await Promise.all(
((typeof ids === 'number' ? [ids] : ids) as number[]).map((id) =>
fetch(`https://www.blitzstars.com/api/playerstats/${id}`).then(
(response) => response.json() as Promise<PlayerStats>,
),
),
);
if (typeof ids === 'number') return stats[0] as ReturnType;
return stats as ReturnType;
}
@@ -1,4 +1,5 @@
import { BlitzStats, emptyAllStats, Region } from '@blitzkit/core';
import { DiffedTankStats } from '@blitzkit/core/src/statistics/filterStats';
import { Locale } from 'discord.js';
import getTankHistories, {
TankHistories,
@@ -14,11 +15,6 @@ const emptyTankHistoryNode: TankHistoryRaw = {
all: emptyAllStats,
};
export interface DiffedTankStats {
diff: Record<number, BlitzStats>;
order: number[];
}
// BIG TODO: merge this neatly with diffNormalizedTankStats
export default async function getStatsInPeriod(
server: Region,
@@ -1,9 +1,9 @@
import searchClansAcrossRegions from '@blitzkit/core/src/blitz/searchClansAcrossRegions';
import {
ApplicationCommandOptionChoiceData,
AutocompleteInteraction,
CacheType,
} from 'discord.js';
import searchClansAcrossRegions from '../../../../../website/src/core/blitz/searchClansAcrossRegions';
import { translator } from '../../localization/translator';
import { DISCORD_CHOICES_MAX_NAME_SIZE, OVERFLOW_SUFFIX } from './constants';
@@ -1,6 +1,6 @@
import { StatFilters, TreeType } from '@blitzkit/core';
import { ChatInputCommandInteraction } from 'discord.js';
import resolveTankId from '../../../../website/src/core/blitz/resolveTankId';
import resolveTankId from '../blitz/resolveTankId';
export async function getFiltersFromCommand(
interaction: ChatInputCommandInteraction,
@@ -1,7 +1,7 @@
import { Region } from '@blitzkit/core';
import searchClansAcrossRegions from '@blitzkit/core/src/blitz/searchClansAcrossRegions';
import { ChatInputCommandInteraction } from 'discord.js';
import markdownEscape from 'markdown-escape';
import searchClansAcrossRegions from '../../../../website/src/core/blitz/searchClansAcrossRegions';
import { UserError } from '../../../../website/src/hooks/userError';
import { translator } from '../localization/translator';
import { serverAndIdPattern } from './resolvePlayerFromCommand/constants';
File renamed without changes.
-9
View File
@@ -1,9 +0,0 @@
export interface Clan {
members_count: number;
created_at: number;
clan_id: number;
tag: string;
name: string;
}
export type ClanList = Clan[];
+1 -1
View File
@@ -1,5 +1,5 @@
import { assertSecret } from '@blitzkit/core';
import { registerProcesses } from '../../../website/src/core/blitzkit/processes';
import { registerProcesses } from '../core/blitzkit/processes';
import { client } from '../core/discord/client';
console.log(`🟡 Launching bot ${client.shard?.ids[0]}`);