namespace Deal.Telegram.Sessions; /// /// Канонические тексты причин сессионных ошибок (detail RPC и статус-поле GetStatus.error). /// Тексты 1:1 с прототипом backend/app/services/telegram.py и перечнем строк плана /// (задачи: «Telegram не подключён», «Сначала сохраните Telegram api_id и api_hash в настройках», /// «Неверный код», «Код истёк — запросите новый», «Неверный облачный пароль»). /// public static class SessionErrorMessages { /// /// Ключи приложения не переданы ядром (INVALID_ARGUMENT). /// public const string NoApiKeys = "Сначала сохраните Telegram api_id и api_hash в настройках"; /// /// Аккаунт тенанта не подключён — нет сессии (FAILED_PRECONDITION). /// public const string NotConnected = "Telegram не подключён"; /// /// Неверный SMS-код входа (INVALID_ARGUMENT). /// public const string WrongCode = "Неверный код"; /// /// SMS-код истёк, нужен новый (INVALID_ARGUMENT). /// public const string CodeExpired = "Код истёк — запросите новый"; /// /// Неверный облачный пароль 2FA (INVALID_ARGUMENT). /// public const string WrongPassword = "Неверный облачный пароль"; /// /// SendCode вызван вне фазы "code" (FAILED_PRECONDITION). /// public const string CodeNotRequested = "Код не запрашивался — начните вход по номеру телефона"; /// /// SendPassword вызван вне фазы "password" (FAILED_PRECONDITION). /// public const string PasswordNotRequested = "2FA-пароль не запрашивался — сначала отправьте код"; /// /// Metadata tenant-id отсутствует или пуст (UNAUTHENTICATED). /// public const string TenantIdMissing = "tenant-id отсутствует в metadata"; /// /// Некорректный tenant-id (INVALID_ARGUMENT). /// public const string InvalidTenantId = "Некорректный tenant-id в metadata"; /// /// Telegram/сеть недоступны (UNAVAILABLE). /// public const string TelegramUnavailable = "Telegram недоступен — повторите попытку позже"; /// /// Ядро (gRPC-ингресс) недоступно — PushMessage/SyncDialogs не доставлены (UNAVAILABLE). /// public const string IngressUnavailable = "Ядро недоступно — повторите попытку позже"; /// /// Диалог не найден в аккаунте/кэше сущностей сессии (INVALID_ARGUMENT). /// public const string UnknownDialog = "Источник не найден в аккаунте — обновите список каналов"; /// /// Пустой username вступления (INVALID_ARGUMENT; 1:1 ValueError discovery_join L828). /// public const string JoinUsernameMissing = "Не указан username для вступления"; /// /// Поисковый запрос длиннее верхней границы (INVALID_ARGUMENT; защита границы сервиса). /// public const string SearchQueryTooLong = "Слишком длинный поисковый запрос"; /// /// Username вступления длиннее лимита Telegram (INVALID_ARGUMENT). /// public const string UsernameTooLong = "Слишком длинный username"; /// /// Внутренняя ошибка сервиса (INTERNAL; сбой реализации, а не транспорт/сеть). /// public const string InternalError = "Внутренняя ошибка сервиса — повторите попытку позже"; /// /// По username найден не канал/группа (личный чат/бот) — вступить нельзя (INVALID_ARGUMENT). /// public const string JoinTargetNotChannel = "По этому username найден не канал/группа — вступить нельзя"; /// /// Некорректный (неподписанный) id диалога в запросе (INVALID_ARGUMENT). /// public const string InvalidDialogId = "Некорректный id источника"; /// /// Телефон не зарегистрирован в Telegram (регистрация из сервиса не выполняется). /// public const string SignUpRequired = "Номер не зарегистрирован в Telegram — зарегистрируйте его в приложении Telegram"; /// /// Ключ шифрования сессий не задан в env (служебная ошибка конфигурации). /// public const string SessionKeyNotConfigured = "Ключ шифрования сессий не задан (DEAL_TELEGRAM_SESSION_KEY)"; }