diff --git a/.gitignore b/.gitignore index 6173793fa..e73d781fc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,5 @@ temp/ /.yarn depots public/sitemap* -/firebase.json \ No newline at end of file +/firebase.json +target \ No newline at end of file diff --git a/package.json b/package.json index a0ca054db..c5d2d39a7 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build:assets": "bun scripts/buildAssets/index.ts", "build:averages": "bun scripts/averages", "build:db": "prisma generate", - "build:bot": "bun scripts/build.ts --production", + "build:bot": "rm -rf dist/bot && bun build src/index.ts src/workers/bot.ts src/workers/render.ts --outdir dist/bot --target=bun --splitting --sourcemap=inline && cp -R src/lang dist/bot/lang", "build:website": "bun build:db && bun build:sitemap && next build", "build:sitemap": "bun scripts/sitemap.ts", "build:docs": "vitepress build docs", @@ -16,7 +16,7 @@ "dev:bot": "vite-node --script scripts/build && yarn start:bot", "dev:docs": "vitepress dev docs", "dev:website": "next dev", - "start:bot": "node --enable-source-maps dist/bot/index.cjs", + "start:bot": "bun dist/bot/index.js", "start:website": "next start", "host:docs": "vitepress preview docs", "lint": "npx tsc", diff --git a/src/bot.ts b/src/bot.ts deleted file mode 100644 index 6aa1fcf20..000000000 --- a/src/bot.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { registerProcesses } from './core/blitzkit/processes'; -import { secrets } from './core/blitzkit/secrets'; -import { client } from './core/discord/client'; - -// console.log(`🟡 Launching bot ${client.shard?.ids[0]}`); - -registerProcesses(); -client.login(secrets.DISCORD_TOKEN); diff --git a/src/core/blitzkit/svgToPngThreaded.ts b/src/core/blitzkit/svgToPngThreaded.ts index 6340861c3..344fb4627 100644 --- a/src/core/blitzkit/svgToPngThreaded.ts +++ b/src/core/blitzkit/svgToPngThreaded.ts @@ -1,10 +1,9 @@ import { Worker } from 'worker_threads'; -const MAX_WORKERS = 2; +const RENDER_WORKERS = 1; -const workers = [...Array(MAX_WORKERS)].map(() => { - // const worker = new Worker('src/workers/render.ts'); - const worker = new Worker(`${__dirname}/workers/render.cjs`); +const workers = [...Array(RENDER_WORKERS)].map(() => { + const worker = new Worker('dist/bot/workers/render.js'); console.log(`🟡 Launching render worker ${worker.threadId}`); return worker; }); diff --git a/src/core/discord/manager.ts b/src/core/discord/manager.ts index ef5d43b55..8c8b249dd 100644 --- a/src/core/discord/manager.ts +++ b/src/core/discord/manager.ts @@ -1,6 +1,6 @@ import { ShardingManager } from 'discord.js'; import { secrets } from '../blitzkit/secrets'; -export const manager = new ShardingManager(`${__dirname}/bot.cjs`, { +export const manager = new ShardingManager('dist/bot/workers/bot.js', { token: secrets.DISCORD_TOKEN, }); diff --git a/src/core/localization/strings/constants.ts b/src/core/localization/strings/constants.ts index 333ea32a2..d3e372cf3 100644 --- a/src/core/localization/strings/constants.ts +++ b/src/core/localization/strings/constants.ts @@ -1,3 +1,3 @@ import { Locale } from 'discord.js'; -export const SUPPORTED_LOCALES: Locale[] = [Locale.SpanishES]; +export const SUPPORTED_LOCALES: Locale[] = [Locale.EnglishUS, Locale.SpanishES]; diff --git a/src/core/localization/strings/index.ts b/src/core/localization/strings/index.ts index fa6057bc6..b2c679268 100644 --- a/src/core/localization/strings/index.ts +++ b/src/core/localization/strings/index.ts @@ -1,5 +1,4 @@ import { Locale } from 'discord.js'; -import enUS from '../../../lang/en-US.json'; import { SUPPORTED_LOCALES } from './constants'; export type TranslationFragmentTree = { @@ -9,15 +8,12 @@ export type TranslationFragmentTree = { }; export type TranslationFragment = string | TranslationFragmentTree; -export const translations = SUPPORTED_LOCALES.map((locale) => ({ - locale, - translations: require(`../../../lang/${locale}.json`), -})).reduce( - (table, { locale, translations }) => ({ +export const translations = SUPPORTED_LOCALES.reduce< + Partial> +>( + (table, locale) => ({ ...table, - [locale]: translations, + [locale]: require(`../lang/${locale}.json`), }), - { - [Locale.EnglishUS]: enUS, - }, -) as Partial>; + {}, +); diff --git a/src/core/localization/translator.ts b/src/core/localization/translator.ts index a4f8c4265..2428b75b2 100644 --- a/src/core/localization/translator.ts +++ b/src/core/localization/translator.ts @@ -23,14 +23,12 @@ export function translator(localeRaw: Locale) { fragment = fragment[pathItem]; if (typeof fragment === 'undefined') { + const message = `Undefined translation at "${pathItem}" in "${path}" for locale "${locale}"`; + if (locale === Locale.EnglishUS) { - throw new Error( - `Undefined translation at "${pathItem}" in "${path}" for locale "${locale}"`, - ); + throw new Error(message); } else { - console.warn( - `Undefined translation at "${pathItem}" in "${path}" for locale "${locale}"; falling back to en-US`, - ); + console.warn(`${message} falling back to en-US`); return translator(Locale.EnglishUS).translate(path, literals); } } diff --git a/src/index.ts b/src/index.ts index abd416e69..5a2aeb60d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,12 +1,8 @@ -// import { manager } from './core/discord/manager'; +import { manager } from './core/discord/manager'; -// manager.on('shardCreate', (shard) => { -// console.log(`🟡 Launching shard ${shard.id}`); -// shard.on('ready', () => console.log(`🟢 Launched shard ${shard.id}`)); -// }); - -// manager.spawn(); - -// TODO: re-enable if needed in the future - -import './bot'; +manager + .on('shardCreate', (shard) => { + console.log(`🟡 Launching shard ${shard.id}`); + shard.on('ready', () => console.log(`🟢 Launched shard ${shard.id}`)); + }) + .spawn(); diff --git a/src/workers/bot.ts b/src/workers/bot.ts new file mode 100644 index 000000000..0dcb7a901 --- /dev/null +++ b/src/workers/bot.ts @@ -0,0 +1,8 @@ +import { registerProcesses } from '../core/blitzkit/processes'; +import { secrets } from '../core/blitzkit/secrets'; +import { client } from '../core/discord/client'; + +console.log(`🟡 Launching bot ${client.shard?.ids[0]}`); + +registerProcesses(); +client.login(secrets.DISCORD_TOKEN);