- AccessService: одноразовые приглашения (128 бит, в БД только sha256, TTL 24 ч), атомарный захват приглашения (условный UPDATE — из двух сканов одного QR проходит один), антиперебор (> 5 неудач в час — молчание), отзыв (черновик и FSM удаляются), повторное приглашение - ADMIN_IDS заводятся в БД при старте; дальше — только по приглашению - AccessMiddleware: участники из БД (+ last_seen раз в 5 мин), новичкам — только /start <токен> - «👥 Участники» для админов: список, QR (segno) + ссылка, отзыв с подтверждением - один ответ на неверный/истёкший/использованный токен — без подсказок Refs #25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
55 lines
2.6 KiB
YAML
55 lines
2.6 KiB
YAML
# Тексты интерфейса бота. Ключи читает app/texts.py; отсутствующий ключ — ошибка при старте.
|
||
|
||
menu:
|
||
commit: "📝 Коммит"
|
||
status: "🩺 Статус"
|
||
logs: "📜 Логи"
|
||
alerts: "🚨 Алерты"
|
||
members: "👥 Участники"
|
||
back: "⬅️ Назад"
|
||
cancel: "✖️ Отмена"
|
||
placeholder: "Выберите раздел"
|
||
|
||
start:
|
||
welcome: |-
|
||
Привет! Я tgit — git в телеграме.
|
||
|
||
📝 Коммит — изменить файлы и запушить
|
||
🩺 Статус — контейнеры и их health
|
||
📜 Логи — хвост, свой grep или вопрос агенту
|
||
🚨 Алерты — падения, перегрузка, список
|
||
no_access: "Доступ к боту — только по приглашению. Попросите QR-код у администратора."
|
||
invite_rejected: "Приглашение недействительно: истекло, уже использовано или ссылка неверная. Попросите новое у администратора."
|
||
|
||
help:
|
||
text: |-
|
||
/menu — главное меню из любого места
|
||
/help — эта справка
|
||
|
||
Разделы открываются кнопками внизу. В любом шаге есть «⬅️ Назад» и «✖️ Отмена».
|
||
|
||
section:
|
||
commit: "📝 Коммит\n\nРаздел в разработке."
|
||
status: "🩺 Статус\n\nРаздел в разработке."
|
||
logs: "📜 Логи\n\nРаздел в разработке."
|
||
alerts: "🚨 Алерты\n\nРаздел в разработке."
|
||
members: "👥 Участники\n\nРаздел в разработке."
|
||
cancelled: "Отменено. Главное меню — кнопками внизу."
|
||
|
||
members:
|
||
title: "👥 Участники: {count}"
|
||
line: "{icon} {name}{username} · с {joined} · был(а) {seen}"
|
||
never: "—"
|
||
invite: "➕ Пригласить"
|
||
revoke: "🚫 {name}"
|
||
confirm: "Отозвать доступ у {name}? Его черновик удалится, кнопки перестанут работать."
|
||
confirm_yes: "Да, отозвать"
|
||
confirm_no: "Нет"
|
||
revoked: "Доступ отозван: {name}."
|
||
not_revoked: "Нельзя отозвать: администратор или уже без доступа."
|
||
invite_caption: |-
|
||
Приглашение в tgit — отсканируйте QR или откройте ссылку:
|
||
{link}
|
||
|
||
Одноразовое, действует до {expires} UTC.
|