Stage 15: dual Telegram bots & language-gated variants #16
Reference in New Issue
Block a user
Delete Branch "feature/stage-15-language-service-split"
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?
Service-agnostic refinement of the owner's idea: the sign-in service returns a set of supported game languages with the user identity, and the lobby gates the New Game variant choice by it (en → English; ru → Russian + Эрудит).
ValidateInitDatatries each token and returns the validating bot'sservice_language+supported_languages. Per-language config (TELEGRAM_BOT_TOKEN_EN/_RU, channels).supported_languagesrides theSession(fbs, session-scoped, not persisted); New Game offers only the matching variants — only starting a game (auto-match + friend invite) is gated, not accept/open/play; the backend does not enforce.accounts.service_language(migration00010, written every login, last-login-wins) routes the user-facingNotifypush back through the right bot (/internal/push-targetcoalesces withpreferred_language).SendToUser/SendToGameChannelgain an operator-chosen language selector in the console — unrelated toValidateInitData.GATEWAY_DEFAULT_SUPPORTED_LANGUAGES, all variants).Wire (committed regen):
ValidateInitDataResponse+service_language+supported_languages;Session+supported_languages;SendToUser/SendToGameChannel+language. Docs (ARCHITECTURE / FUNCTIONAL / _ru / READMEs) + PLAN updated; stage marked done. Tests: connector multi-bot routing, gateway transcode (service_language + supported_languages + guest default), backendservice_languageround-trip (integration), UIavailableVariantsunit + codec round-trip; gating confirmed live in the mock UI.