diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index 618c891e6..2615428af 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -113,6 +113,9 @@ jobs: - name: Install dependencies run: bun install + - name: Lint + run: bun run lint:website + - name: Download depots uses: actions/download-artifact@v4 with: diff --git a/bun.lockb b/bun.lockb index 1e02b7c81..b09f501d1 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/packages/bot/src/core/discord/localizationObject.ts b/packages/bot/src/core/discord/localizationObject.ts index 5faffa7d2..c0f3298a3 100644 --- a/packages/bot/src/core/discord/localizationObject.ts +++ b/packages/bot/src/core/discord/localizationObject.ts @@ -1,5 +1,5 @@ import { Locale } from 'discord.js'; -import { SUPPORTED_DISCORD_LOCALES } from '../localization/strings/constants'; +import { SUPPORTED_LOCALES_DISCORD } from '../localization/strings/constants'; import { translator } from '../localization/translator'; const validNameRegex = /^[-_\p{L}\p{N}\p{sc=Deva}\p{sc=Thai}]{1,32}$/u; @@ -9,7 +9,7 @@ export function localizationObject( literals?: string[], strict = false, ) { - return SUPPORTED_DISCORD_LOCALES.reduce>>( + return SUPPORTED_LOCALES_DISCORD.reduce>>( (localizations, locale) => { const { translate } = translator(locale); const translation = translate(path, literals); diff --git a/packages/bot/src/core/localization/strings/constants.ts b/packages/bot/src/core/localization/strings/constants.ts index 8f750cb64..85a3a24aa 100644 --- a/packages/bot/src/core/localization/strings/constants.ts +++ b/packages/bot/src/core/localization/strings/constants.ts @@ -1,7 +1,7 @@ -import { SupportedLocale } from '@blitzkit/core'; +import { DEFAULT_LOCALE, SupportedLocale } from '@blitzkit/core'; import { Locale } from 'discord.js'; -const DISCORD_SUPPORTED_LOCALES: Record = { +const SUPPORTED_LOCALES_DISCORD_MAP: Record = { en: Locale.EnglishUS, es: Locale.SpanishES, hr: Locale.Croatian, @@ -11,6 +11,13 @@ const DISCORD_SUPPORTED_LOCALES: Record = { zh: Locale.ChineseCN, }; -export const SUPPORTED_DISCORD_LOCALES = Object.values( - DISCORD_SUPPORTED_LOCALES, +export const SUPPORTED_LOCALES_DISCORD_MAP_INVERSE = Object.fromEntries( + Object.entries(SUPPORTED_LOCALES_DISCORD_MAP).map(([k, v]) => [v, k]), +) as Record; + +export const SUPPORTED_LOCALES_DISCORD = Object.values( + SUPPORTED_LOCALES_DISCORD_MAP, ); + +export const DEFAULT_LOCALE_DISCORD = + SUPPORTED_LOCALES_DISCORD_MAP[DEFAULT_LOCALE]; diff --git a/packages/bot/src/core/localization/strings/index.ts b/packages/bot/src/core/localization/strings/index.ts index c47c97d59..8ac34208a 100644 --- a/packages/bot/src/core/localization/strings/index.ts +++ b/packages/bot/src/core/localization/strings/index.ts @@ -1,5 +1,8 @@ import { Locale } from 'discord.js'; -import { SUPPORTED_DISCORD_LOCALES } from './constants'; +import { + SUPPORTED_LOCALES_DISCORD, + SUPPORTED_LOCALES_DISCORD_MAP_INVERSE, +} from './constants'; export type TranslationFragmentTree = { [key: string]: TranslationFragment; @@ -8,12 +11,14 @@ export type TranslationFragmentTree = { }; export type TranslationFragment = string | TranslationFragmentTree; -export const translations = SUPPORTED_DISCORD_LOCALES.reduce< +export const translations = SUPPORTED_LOCALES_DISCORD.reduce< Partial> >( (table, locale) => ({ ...table, - [locale]: require(`../../../../../core/lang/${locale}.json`), + [locale]: require( + `../../../../../core/lang/${SUPPORTED_LOCALES_DISCORD_MAP_INVERSE[locale]}.json`, + ), }), {}, ); diff --git a/packages/bot/src/core/localization/translator.ts b/packages/bot/src/core/localization/translator.ts index d6099197e..2b09fb8b5 100644 --- a/packages/bot/src/core/localization/translator.ts +++ b/packages/bot/src/core/localization/translator.ts @@ -1,13 +1,16 @@ import { Locale } from 'discord.js'; import { translations } from './strings'; -import { SUPPORTED_DISCORD_LOCALES } from './strings/constants'; +import { + DEFAULT_LOCALE_DISCORD, + SUPPORTED_LOCALES_DISCORD, +} from './strings/constants'; export function translator(localeRaw: Locale) { const locale = - localeRaw !== Locale.EnglishUS && - SUPPORTED_DISCORD_LOCALES.includes(localeRaw) + localeRaw !== DEFAULT_LOCALE_DISCORD && + SUPPORTED_LOCALES_DISCORD.includes(localeRaw) ? localeRaw - : Locale.EnglishUS; + : DEFAULT_LOCALE_DISCORD; const strings = translations[locale]!; function translate(path: string, literals?: string[]): string { @@ -26,11 +29,11 @@ export function translator(localeRaw: Locale) { if (typeof fragment === 'undefined') { const message = `Undefined translation at "${pathItem}" in "${path}" for locale "${locale}"`; - if (locale === Locale.EnglishUS) { + if (locale === DEFAULT_LOCALE_DISCORD) { throw new Error(message); } else { console.warn(`${message} falling back to en-US`); - return translator(Locale.EnglishUS).translate(path, literals); + return translator(DEFAULT_LOCALE_DISCORD).translate(path, literals); } } } diff --git a/packages/bot/src/main.ts b/packages/bot/src/main.ts index 713f5795a..e1538f01e 100644 --- a/packages/bot/src/main.ts +++ b/packages/bot/src/main.ts @@ -1,27 +1,30 @@ -import { assertSecret, EventManager } from '@blitzkit/core'; +// import { assertSecret, EventManager } from '@blitzkit/core'; +// import { ActivityType, ShardingManager } from 'discord.js'; +// import { +// discoveredIdsDefinitions, +// tankDefinitions, +// } from './core/blitzkit/nonBlockingPromises'; + +import { assertSecret } from '@blitzkit/core'; import { ActivityType, ShardingManager } from 'discord.js'; import { discoveredIdsDefinitions, tankDefinitions, } from './core/blitzkit/nonBlockingPromises'; -const somethingEvent = new EventManager(); +let iteration = 0; +const interval = setInterval(async () => { + iteration++; + + console.log(`Attempting launch on iteration ${iteration}`); -somethingEvent.on(async () => { const manager = new ShardingManager('dist/bot/workers/bot.js', { token: assertSecret(import.meta.env.DISCORD_TOKEN), }); - const timeout = setTimeout(() => { - console.warn(`Shards didn't launch in 5 seconds; trying again...`); - somethingEvent.emit(undefined); - - shards.forEach((shard) => shard.kill()); - }, 5000); - const shards = await manager .on('shardCreate', (shard) => { - clearTimeout(timeout); + clearInterval(interval); console.log(`🟡 Launching shard ${shard.id}`); shard.on('ready', () => console.log(`🟢 Launched shard ${shard.id}`)); }) @@ -76,6 +79,4 @@ somethingEvent.on(async () => { error, ); } -}); - -somethingEvent.emit(undefined); +}, 5000); diff --git a/packages/bot/tsconfig.json b/packages/bot/tsconfig.json index 52d43eaaa..e86b8943b 100644 --- a/packages/bot/tsconfig.json +++ b/packages/bot/tsconfig.json @@ -1,4 +1,4 @@ { "extends": "../../tsconfig.json", - "include": ["src/**/*"] + "include": ["src/**/*", "../core/src/blitzkit/supportedLocales.ts"] }