feat(telegram,game): single bot + per-user variant preferences #90
Reference in New Issue
Block a user
Delete Branch "feature/single-bot-variant-preferences"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Collapse the two per-language Telegram bots into one unified bot, and replace language-based variant gating with explicit per-user variant preferences.
Highlights
service_language+supported_languageseverywhere (DB, account, auth, FlatBuffers Session, gateway, connector proto). The one bot renders chat + out-of-app push in the recipient'spreferred_language; the game-language push routing is removed.accounts.variant_preferences(text[], DB default{erudit_ru}, CHECK non-empty + subset). Gates New Game (auto / vs-AI / friend-create), enforced server-side; an invited friend may accept any variant. Edited in Settings; Erudit-first everywhere.channel_lang.TELEGRAM_BOT_TOKEN,TELEGRAM_GAME_CHANNEL_ID,VITE_TELEGRAM_LINK,VITE_TELEGRAM_GAME_CHANNEL_NAME); dropGATEWAY_DEFAULT_SUPPORTED_LANGUAGES.Verified locally
go build/vet/test (all modules) · backend integration (
-tags=integration) · UI check + 294 unit + build + 150 e2e (Chromium+WebKit) · proto/fbs/ui codegen clean.Action required before relying on the test contour
TEST_/PROD_Telegram secrets/vars to the unsuffixed names (TEST_TELEGRAM_BOT_TOKEN,TEST_TELEGRAM_GAME_CHANNEL_ID,TEST_VITE_TELEGRAM_LINK,TEST_VITE_TELEGRAM_GAME_CHANNEL_NAME); dropTEST_GATEWAY_DEFAULT_SUPPORTED_LANGUAGES.DROP SCHEMA backend CASCADE+ restart backend so goose re-migrates and the robot pool re-provisions.Deferred
The migration squash is intentionally left to a focused follow-up PR (high-blast-radius schema baseline; the incremental
00014is kept here).Collapse the two per-language Telegram bots into one unified bot and replace language-based variant gating with explicit per-user variant preferences. - Telegram: one bot; drop service_language and the supported_languages set everywhere (DB, account, auth, FlatBuffers Session wire, gateway, connector proto). The single bot renders chat and out-of-app push in the recipient's preferred_language; remove the game-language push routing override (notify Intent.Language / push Event.language). - Preferences: new accounts.variant_preferences (text[], DB default {erudit_ru}, CHECK non-empty + subset of the three variants). Gates the New Game picker, vs-AI and the friend invitation the player creates, enforced server-side (HTTP 400 otherwise); an invited friend may still accept any variant. Edited on the Settings screen; variants are Erudit-first everywhere. - Admin: drop the per-bot language selectors (broadcast / send-to-user) and the feedback channel_lang column/field. - Env/CI: collapse TELEGRAM_BOT_TOKEN_{EN,RU}, TELEGRAM_GAME_CHANNEL_ID_{EN,RU}, VITE_TELEGRAM_LINK{,_EN,_RU} and VITE_TELEGRAM_GAME_CHANNEL_NAME_{EN,RU} to single unsuffixed names; drop GATEWAY_DEFAULT_SUPPORTED_LANGUAGES. - Docs updated (ARCHITECTURE, FUNCTIONAL + _ru, platform/telegram, gateway, backend, ui, UI_DESIGN, PRERELEASE). The migration squash is deferred to a follow-up PR.