Implement Telegram bot configuration updates and user messaging enhancements
- Added inline button functionality to the `/configs` command, allowing users to request connection strings for their configurations without displaying them in chat history. - Introduced a constant message for unlinked Telegram accounts to improve user understanding of the linking process. - Updated the handling of configuration messages to include inline buttons for better user interaction and experience.
This commit is contained in:
+14
-9
@@ -6,9 +6,10 @@ Telegram-бот — **второй канал доставки** (presentation-
|
||||
|
||||
## Возможности (реализовано)
|
||||
|
||||
1. **Мои конфиги** — `/configs` присылает текстовый список (метка/локация, протокол, статус) —
|
||||
**без ссылок и QR** в самом боте; за ссылкой/QR пользователь идёт на сайт. Доступно только
|
||||
привязанному аккаунту.
|
||||
1. **Мои конфиги** — `/configs` присылает по сообщению на конфиг (метка/локация, протокол, статус) с
|
||||
inline-кнопкой **«🔗 Показать ссылку»**; connection string приходит отдельным сообщением только по
|
||||
нажатию (не светится в списке/истории чата без явного действия пользователя). Только текстовая
|
||||
ссылка, без QR-картинки — за QR пользователь идёт на сайт. Доступно только привязанному аккаунту.
|
||||
2. **Авторизация через Telegram (passwordless)** — вход на сайт без пароля: инициируется на сайте,
|
||||
подтверждается в боте кнопками «Подтвердить/Отклонить». Требует предварительной привязки Telegram.
|
||||
3. **Админ: обработка запросов активации** — админ (по Telegram id из `Telegram__AdminTelegramUserIds`)
|
||||
@@ -19,12 +20,13 @@ Telegram-бот — **второй канал доставки** (presentation-
|
||||
5. **Отвязка** — `/unlink`.
|
||||
|
||||
**Не реализовано / backlog:**
|
||||
- Ссылки/QR/подписка в самом боте (только текстовый список конфигов).
|
||||
- QR-картинкой и агрегированная подписка в самом боте (только текстовая ссылка на конфиг по кнопке).
|
||||
- Отдельная команда `/resetpassword` с одноразовой ссылкой — восстановление пароля сейчас идёт
|
||||
только через обычный passwordless-вход (`/start login_<n>`) + смену пароля в настройках на сайте.
|
||||
- Webhook-транспорт — только long polling, конфигурации режима/URL в коде нет.
|
||||
- Регистрация нового аккаунта из бота (только привязка существующего).
|
||||
- Полное самообслуживание (создание/ротация/отзыв конфигов) — бот **read-only** по конфигам.
|
||||
- Полное самообслуживание (создание/ротация/отзыв конфигов) — бот **read-only** по конфигам (только
|
||||
просмотр списка и показ существующей ссылки по кнопке).
|
||||
|
||||
## Размещение в архитектуре
|
||||
|
||||
@@ -97,9 +99,12 @@ Telegram ──updates──► TelegramBotHostedService → PnvBotUpdateHandl
|
||||
|
||||
1. Привязанный пользователь: `/configs`.
|
||||
2. Бот вызывает `GetMyConfigsQuery` (тот же, что и веб) от пользователя, найденного по `TelegramUserId`.
|
||||
3. Ответ — обычное текстовое сообщение, по строке на конфиг:
|
||||
`• {Label ?? Location} ({Protocol}) — {Status}`. Если конфигов нет — «У вас пока нет конфигов.»
|
||||
**Ссылок, QR и кнопок здесь нет** — за подключением пользователь идёт на сайт.
|
||||
3. Ответ — отдельное сообщение на каждый конфиг: `• {Label ?? Location} ({Protocol}) — {Status}` +
|
||||
inline-кнопка «🔗 Показать ссылку» (кроме отозванных — там кнопки нет). Если конфигов нет —
|
||||
«У вас пока нет конфигов.»
|
||||
4. Нажатие кнопки → callback `cfg:link:{configId}` → бот вызывает `GetConfigLinkQuery` (тот же, что
|
||||
эндпоинт `/api/configs/{id}/link`) от текущего пользователя и присылает connection string отдельным
|
||||
сообщением. Ссылка не дублируется никуда до явного нажатия. QR-картинки нет — только текст.
|
||||
|
||||
## Флоу 4 — Обработка активации админом в боте
|
||||
|
||||
@@ -125,7 +130,7 @@ Telegram ──updates──► TelegramBotHostedService → PnvBotUpdateHandl
|
||||
| `/start` | Приветствие + справка по командам | нет |
|
||||
| `/start link_<token>` | Привязка аккаунта по токену | нет |
|
||||
| `/start login_<requestId>` | Подтверждение passwordless-входа (deep-link с сайта) | да |
|
||||
| `/configs` | Текстовый список конфигов | да |
|
||||
| `/configs` | Список конфигов с кнопкой «Показать ссылку» на каждом | да |
|
||||
| `/unlink` | Отвязать Telegram от аккаунта | да |
|
||||
| `/help` | Справка (то же сообщение, что `/start`) | нет |
|
||||
| «✅ Активировать»/«❌ Отклонить» | (admin) решение по конкретному запросу активации | админ по env |
|
||||
|
||||
Reference in New Issue
Block a user