diff --git a/app/handlers/admin/bot_configuration.py b/app/handlers/admin/bot_configuration.py index f01744a9..6e0fadfc 100644 --- a/app/handlers/admin/bot_configuration.py +++ b/app/handlers/admin/bot_configuration.py @@ -26,75 +26,69 @@ SETTINGS_PAGE_SIZE = 8 CATEGORY_GROUP_DEFINITIONS: Tuple[Tuple[str, str, Tuple[str, ...]], ...] = ( ( - "telegram_bot", - "πŸ€– Telegram Π±ΠΎΡ‚", - ("SUPPORT", "ADMIN_NOTIFICATIONS", "ADMIN_REPORTS", "CHANNEL"), + "core", + "βš™οΈ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ настройки", + ("SUPPORT", "LOCALIZATION", "MAINTENANCE"), + ), + ( + "channels_notifications", + "πŸ“’ ΠšΠ°Π½Π°Π»Ρ‹ ΠΈ увСдомлСния", + ("CHANNEL", "ADMIN_NOTIFICATIONS", "ADMIN_REPORTS"), + ), + ( + "subscriptions", + "πŸ’Ž Подписки ΠΈ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹", + ("TRIAL", "PAID_SUBSCRIPTION", "PERIODS", "SUBSCRIPTION_PRICES", "TRAFFIC", "TRAFFIC_PACKAGES", "DISCOUNTS"), + ), + ( + "payments", + "πŸ’³ ΠŸΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ систСмы", + ("PAYMENT", "TELEGRAM", "CRYPTOBOT", "YOOKASSA", "TRIBUTE", "MULENPAY", "PAL24"), + ), + ( + "remnawave", + "πŸ”— RemnaWave API", + ("REMNAWAVE",), + ), + ( + "referral", + "🀝 Π Π΅Ρ„Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ систСма", + ("REFERRAL",), + ), + ( + "autopay", + "πŸ”„ АвтопродлСниС", + ("AUTOPAY",), + ), + ( + "interface", + "🎨 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ UX", + ("INTERFACE_BRANDING", "INTERFACE_SUBSCRIPTION", "CONNECT_BUTTON", "HAPP", "SKIP", "ADDITIONAL"), ), ( "database", "πŸ—„οΈ Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…", ("DATABASE", "POSTGRES", "SQLITE", "REDIS"), ), - ( - "remnawave", - "🌊 Remnawave API", - ("REMNAWAVE",), - ), - ( - "subscriptions", - "πŸͺ™ Подписки ΠΈ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹", - ( - "TRIAL", - "PAID_SUBSCRIPTION", - "SUBSCRIPTIONS_GLOBAL", - "TRAFFIC", - "PERIODS", - "SUBSCRIPTION_PRICES", - "TRAFFIC_PACKAGES", - "DISCOUNTS", - "REFERRAL", - "AUTOPAY", - ), - ), - ( - "payments", - "πŸ’³ ΠŸΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ систСмы", - ("TELEGRAM", "TRIBUTE", "YOOKASSA", "CRYPTOBOT", "MULENPAY", "PAL24", "PAYMENT"), - ), - ( - "interface", - "🎨 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ UX", - ("INTERFACE_BRANDING", "INTERFACE_SUBSCRIPTION", "CONNECT_BUTTON", "HAPP", "SKIP"), - ), ( "monitoring", - "πŸ“£ ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ увСдомлСния", - ("MONITORING", "NOTIFICATIONS"), + "πŸ“Š ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³", + ("MONITORING", "NOTIFICATIONS", "SERVER"), ), ( - "operations", - "πŸ› οΈ Бтатусы ΠΈ обслуТиваниС", - ("SERVER", "MAINTENANCE"), + "backup", + "πŸ’Ύ БистСма бэкапов", + ("BACKUP",), ), ( - "localization", - "🈯 Локализация", - ("LOCALIZATION",), + "updates", + "πŸ”„ ОбновлСния", + ("VERSION",), ), ( - "extras", - "🧩 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки", - ("ADDITIONAL",), - ), - ( - "reliability", - "πŸ’Ύ Π‘Π΅ΠΊΠ°ΠΏΡ‹ ΠΈ обновлСния", - ("BACKUP", "VERSION"), - ), - ( - "technical", - "🧰 ВСхничСскиС", - ("LOG", "WEBHOOK", "DEBUG"), + "development", + "πŸ”§ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°", + ("LOG", "WEBHOOK", "WEB_API", "DEBUG"), ), ) diff --git a/app/services/system_settings_service.py b/app/services/system_settings_service.py index 8238179b..0df8e252 100644 --- a/app/services/system_settings_service.py +++ b/app/services/system_settings_service.py @@ -60,48 +60,48 @@ class BotConfigurationService: EXCLUDED_KEYS: set[str] = {"BOT_TOKEN", "ADMIN_IDS"} CATEGORY_TITLES: Dict[str, str] = { - "SUPPORT": "ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°", - "ADMIN_NOTIFICATIONS": "УвСдомлСния администраторов", - "ADMIN_REPORTS": "АвтоотчСты", - "CHANNEL": "ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ подписка Π½Π° ΠΊΠ°Π½Π°Π»", - "DATABASE": "Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…", - "POSTGRES": "PostgreSQL", - "SQLITE": "SQLite", - "REDIS": "Redis", - "REMNAWAVE": "Remnawave API", - "TRIAL": "Π’Ρ€ΠΈΠ°Π» подписка", - "PAID_SUBSCRIPTION": "ΠŸΠ»Π°Ρ‚Π½Π°Ρ подписка", - "SUBSCRIPTIONS_GLOBAL": "Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ подписок", - "TRAFFIC": "Настройки Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°", - "PERIODS": "ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹ подписки", - "SUBSCRIPTION_PRICES": "Π¦Π΅Π½Ρ‹ подписки", - "TRAFFIC_PACKAGES": "ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°", - "DISCOUNTS": "Π‘ΠΊΠΈΠ΄ΠΊΠΈ ΠΏΡ€ΠΎΠΌΠΎΠ³Ρ€ΡƒΠΏΠΏ", - "REFERRAL": "Π Π΅Ρ„Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ систСма", - "AUTOPAY": "АвтопродлСниС", - "TELEGRAM": "Telegram Stars", - "TRIBUTE": "Tribute", - "YOOKASSA": "YooKassa", - "CRYPTOBOT": "CryptoBot", - "MULENPAY": "MulenPay", - "PAL24": "PayPalych / Pal24", - "PAYMENT": "Описания ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ", - "INTERFACE_BRANDING": "Π‘Ρ€Π΅Π½Π΄ΠΈΠ½Π³ ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ", - "INTERFACE_SUBSCRIPTION": "Π‘Π»ΠΎΠΊ подписки", - "CONNECT_BUTTON": "Кнопка Β«ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡΒ»", - "HAPP": "Happ CryptoLink", - "SKIP": "ΠŸΡ€ΠΎΠΏΡƒΡΠΊΠΈ onboarding", - "MONITORING": "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³", - "NOTIFICATIONS": "УвСдомлСния", - "SERVER": "Бтатус сСрвСров", - "MAINTENANCE": "ВСхничСскиС Ρ€Π°Π±ΠΎΡ‚Ρ‹", - "LOCALIZATION": "Локализация", - "ADDITIONAL": "Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки", - "BACKUP": "Π‘Π΅ΠΊΠ°ΠΏΡ‹", - "VERSION": "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ", - "LOG": "Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅", - "WEBHOOK": "Π’Π΅Π±Ρ…ΡƒΠΊΠΈ", - "DEBUG": "Π Π΅ΠΆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ", + "SUPPORT": "πŸ’¬ Бсылка Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ", + "LOCALIZATION": "🌍 Π―Π·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ настройки", + "MAINTENANCE": "πŸ› οΈ Π Π΅ΠΆΠΈΠΌ обслуТивания", + "CHANNEL": "πŸ“£ ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ подписка", + "ADMIN_NOTIFICATIONS": "πŸ”” УвСдомлСния Π°Π΄ΠΌΠΈΠ½Π°ΠΌ", + "ADMIN_REPORTS": "πŸ“Š АвтоматичСскиС ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹", + "TRIAL": "🎁 Π’Ρ€ΠΈΠ°Π»ΡŒΠ½Π°Ρ подписка", + "PAID_SUBSCRIPTION": "πŸ’° ΠŸΠ»Π°Ρ‚Π½Ρ‹Π΅ подписки", + "PERIODS": "πŸ“… ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹ подписки", + "SUBSCRIPTION_PRICES": "πŸ’΅ Π¦Π΅Π½Ρ‹ Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹", + "TRAFFIC": "🚦 Настройки Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°", + "TRAFFIC_PACKAGES": "πŸ“¦ ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°", + "DISCOUNTS": "🎯 ΠŸΡ€ΠΎΠΌΠΎ ΠΈ скидки", + "PAYMENT": "βš™οΈ ΠžΠ±Ρ‰ΠΈΠ΅ настройки ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ", + "TELEGRAM": "⭐ Telegram Stars", + "CRYPTOBOT": "πŸ’Ž CryptoBot", + "YOOKASSA": "πŸ’Έ YooKassa", + "TRIBUTE": "🎁 Tribute", + "MULENPAY": "πŸ’° MulenPay", + "PAL24": "🏦 Pal24/PayPalych", + "REMNAWAVE": "πŸ”— RemnaWave API", + "REFERRAL": "🀝 Π Π΅Ρ„Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ систСма", + "AUTOPAY": "πŸ”„ АвтопродлСниС", + "INTERFACE_BRANDING": "πŸ–ΌοΈ Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ настройки", + "INTERFACE_SUBSCRIPTION": "πŸ”— Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ссылку подписки", + "CONNECT_BUTTON": "πŸš€ Кнопка Β«ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡΒ»", + "HAPP": "πŸ…· Happ настройки", + "SKIP": "⚑ Быстрый старт", + "ADDITIONAL": "πŸ“± ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ DeepLinks", + "DATABASE": "πŸ—„οΈ Π Π΅ΠΆΠΈΠΌ Π‘Π”", + "POSTGRES": "🐘 PostgreSQL", + "SQLITE": "πŸ’Ύ SQLite", + "REDIS": "🧠 Redis", + "MONITORING": "πŸ“ˆ ΠžΠ±Ρ‰ΠΈΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³", + "NOTIFICATIONS": "πŸ”” УвСдомлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ", + "SERVER": "πŸ–₯️ Бтатус сСрвСров", + "BACKUP": "πŸ’Ύ БистСма бэкапов", + "VERSION": "πŸ”„ ОбновлСния", + "LOG": "πŸ“ Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅", + "WEBHOOK": "🌐 Webhook", + "WEB_API": "🌐 Web API", + "DEBUG": "πŸ”§ Π Π΅ΠΆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ", } CATEGORY_KEY_OVERRIDES: Dict[str, str] = { @@ -112,8 +112,8 @@ class BotConfigurationService: "DEFAULT_TRAFFIC_LIMIT_GB": "PAID_SUBSCRIPTION", "MAX_DEVICES_LIMIT": "PAID_SUBSCRIPTION", "PRICE_PER_DEVICE": "PAID_SUBSCRIPTION", - "DEFAULT_TRAFFIC_RESET_STRATEGY": "SUBSCRIPTIONS_GLOBAL", - "RESET_TRAFFIC_ON_PAYMENT": "SUBSCRIPTIONS_GLOBAL", + "DEFAULT_TRAFFIC_RESET_STRATEGY": "TRAFFIC", + "RESET_TRAFFIC_ON_PAYMENT": "TRAFFIC", "TRAFFIC_SELECTION_MODE": "TRAFFIC", "FIXED_TRAFFIC_LIMIT_GB": "TRAFFIC", "AVAILABLE_SUBSCRIPTION_PERIODS": "PERIODS", @@ -197,6 +197,7 @@ class BotConfigurationService: "BACKUP_": "BACKUP", "WEBHOOK_": "WEBHOOK", "LOG_": "LOG", + "WEB_API_": "WEB_API", "DEBUG": "DEBUG", }