feat: Discord/Slack/ntfy/Matrix targets, command templates, delete protection, email/matrix bots

- Discord, Slack, ntfy, Matrix notification target types with clients and dispatch
- MatrixBot model + API + frontend in Bots tab
- Command template system fully wired into all handler commands
- Default command templates seeded (EN/RU, 14 slots each)
- Command template editor with variables reference including child fields
- Delete protection on all 10 entity types (409 with consumer details)
- Provider type selector on template config forms
- Target type selector as dropdown with all 7 types
- Response template selector on command config form
- CLAUDE.md: mandatory server restart rule, child properties rule
This commit is contained in:
2026-03-21 20:36:12 +03:00
parent 846d480d38
commit 3e3a6f0777
64 changed files with 1861 additions and 180 deletions
+35 -4
View File
@@ -178,7 +178,7 @@
},
"targets": {
"title": "Получатели",
"description": "Адреса уведомлений (Telegram, вебхуки)",
"description": "Адреса уведомлений (Telegram, Discord, Slack, Email, ntfy, Matrix, вебхуки)",
"addTarget": "Добавить получателя",
"cancel": "Отмена",
"type": "Тип",
@@ -203,7 +203,16 @@
"disableUrlPreview": "Отключить превью ссылок",
"sendLargeAsDocuments": "Отправлять большие фото как документы",
"chatAction": "Действие в чате",
"chatActionNone": "Нет (без действия)"
"chatActionNone": "Нет (без действия)",
"overrideUsername": "Переопределить имя бота",
"ntfyServer": "URL сервера ntfy",
"ntfyTopic": "Тема",
"ntfyToken": "Токен авторизации",
"ntfyTokenPlaceholder": "Необязательно (для защищённых тем)",
"selectEmailBot": "Выберите Email бот",
"selectMatrixBot": "Выберите Matrix бот",
"recipientEmail": "Email получателя",
"matrixRoomId": "ID комнаты"
},
"users": {
"title": "Пользователи",
@@ -345,6 +354,7 @@
"templateConfig": {
"title": "Конфигурации шаблонов",
"description": "Определите формат уведомлений",
"providerType": "Тип сервис-провайдера",
"newConfig": "Новая конфигурация",
"name": "Название",
"namePlaceholder": "По умолчанию RU",
@@ -479,6 +489,21 @@
"botLocale": "Язык описаний команд в меню Telegram и ответов бота.",
"rateLimits": "Кулдаун в секундах между использованиями команд в каждом чате. 0 = без ограничений."
},
"matrixBot": {
"title": "Matrix боты",
"description": "Подключения к Matrix серверам для уведомлений в комнаты",
"addBot": "Добавить Matrix бот",
"name": "Название",
"namePlaceholder": "Бот для дома",
"homeserverUrl": "URL сервера",
"accessToken": "Токен доступа",
"tokenPlaceholder": "syt_...",
"tokenUnchanged": "(без изменений)",
"displayName": "Отображаемое имя",
"testConnection": "Проверить подключение",
"noBots": "Matrix ботов пока нет.",
"confirmDelete": "Удалить этот Matrix бот?"
},
"emailBot": {
"title": "Email боты",
"description": "SMTP отправители для уведомлений по email",
@@ -527,7 +552,9 @@
"defaultCooldown": "Кулдаун по умолчанию (с)",
"noConfigs": "Конфигураций команд пока нет.",
"confirmDelete": "Удалить эту конфигурацию команд?",
"commands": "команд"
"commands": "команд",
"responseTemplate": "Шаблон ответов",
"noTemplate": "По умолчанию (встроенный)"
},
"commandTracker": {
"title": "Трекеры команд",
@@ -595,7 +622,11 @@
"emailBotCreated": "Email бот создан",
"emailBotUpdated": "Email бот обновлён",
"emailBotDeleted": "Email бот удалён",
"emailBotTestSent": "Тестовое письмо отправлено"
"emailBotTestSent": "Тестовое письмо отправлено",
"matrixBotCreated": "Matrix бот создан",
"matrixBotUpdated": "Matrix бот обновлён",
"matrixBotDeleted": "Matrix бот удалён",
"matrixBotTestOk": "Подключение к Matrix проверено"
},
"common": {
"loading": "Загрузка...",