From 9679190709a366c7a5cdf31e4e0b42b57624e927 Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Tue, 12 May 2026 10:16:59 +0300 Subject: [PATCH] feat: ability to turn off logs for admins users --- .env.example | 1 + bot/app/web/admin_settings_manifest.py | 13 +++++++++++++ .../src/admin/sections/SettingsSection.svelte | 4 ++-- bot/middlewares/action_logger_middleware.py | 3 +++ config/settings.py | 4 ++++ locales/en.json | 2 ++ locales/ru.json | 2 ++ 7 files changed, 27 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index c4d57d2..4a99862 100644 --- a/.env.example +++ b/.env.example @@ -212,6 +212,7 @@ LOG_PAYMENTS=True # LOG_PROMO_ACTIVATIONS=True # Log promo code activations LOG_TRIAL_ACTIVATIONS=True # Log trial activations LOG_SUSPICIOUS_ACTIVITY=True # Log suspicious activity +LOG_ADMIN_ACTIONS=True # Log actions from users listed in ADMIN_IDS # Embedded mode thumbnails. Please don't touch this if you don't know what it is. INLINE_REFERRAL_THUMBNAIL_URL=https://cdn-icons-png.flaticon.com/512/1077/1077114.png diff --git a/bot/app/web/admin_settings_manifest.py b/bot/app/web/admin_settings_manifest.py index 700382a..d704a23 100644 --- a/bot/app/web/admin_settings_manifest.py +++ b/bot/app/web/admin_settings_manifest.py @@ -26,6 +26,8 @@ class SettingField: max: Optional[float] = None choices: Optional[Tuple[Tuple[str, str], ...]] = None subsection: Optional[str] = None # group label inside a section + i18n_label_key: Optional[str] = None + i18n_description_key: Optional[str] = None SETTINGS_MANIFEST: List[SettingField] = [ @@ -165,6 +167,15 @@ SETTINGS_MANIFEST: List[SettingField] = [ SettingField("LOG_PROMO_ACTIVATIONS", "bool", "notifications", "Логировать активации промокодов"), SettingField("LOG_TRIAL_ACTIVATIONS", "bool", "notifications", "Логировать активации триала"), SettingField("LOG_SUSPICIOUS_ACTIVITY", "bool", "notifications", "Логировать подозрительные действия"), + SettingField( + "LOG_ADMIN_ACTIONS", + "bool", + "notifications", + "Логировать действия администраторов", + "Если выключено, события от пользователей из ADMIN_IDS не записываются в message logs.", + i18n_label_key="admin_settings_field_log_admin_actions_label", + i18n_description_key="admin_settings_field_log_admin_actions_description", + ), SettingField("LOG_LEVEL", "string", "notifications", "Глобальный уровень логов", "DEBUG / INFO / WARNING / ERROR"), SettingField("LOG_CHAT_ID", "int", "notifications", "ID чата для логов"), SettingField("LOG_THREAD_ID", "int", "notifications", "ID треда (для супергрупп)"), @@ -253,6 +264,8 @@ def manifest_payload() -> List[dict]: "subsection": field.subsection, "label": field.label, "description": field.description, + "i18n_label_key": field.i18n_label_key, + "i18n_description_key": field.i18n_description_key, "placeholder": field.placeholder, "optional": field.optional, "secret": field.secret, diff --git a/bot/app/web/frontend/src/admin/sections/SettingsSection.svelte b/bot/app/web/frontend/src/admin/sections/SettingsSection.svelte index db8e495..f0f84fb 100644 --- a/bot/app/web/frontend/src/admin/sections/SettingsSection.svelte +++ b/bot/app/web/frontend/src/admin/sections/SettingsSection.svelte @@ -97,7 +97,7 @@
- {field.label} + {field.i18n_label_key ? at(field.i18n_label_key, {}, field.label) : field.label} {at("settings_badge_secret", {}, "Secret")} {#if isOverridden(field)} {at("settings_badge_override", {}, "Override")} @@ -105,7 +105,7 @@ {field.key} {#if field.description} - {field.description} + {field.i18n_description_key ? at(field.i18n_description_key, {}, field.description) : field.description} {/if}
diff --git a/bot/middlewares/action_logger_middleware.py b/bot/middlewares/action_logger_middleware.py index 2261df8..5fef62e 100644 --- a/bot/middlewares/action_logger_middleware.py +++ b/bot/middlewares/action_logger_middleware.py @@ -39,6 +39,9 @@ class ActionLoggerMiddleware(BaseMiddleware): if user_id in self.settings.ADMIN_IDS: is_admin_event_flag = True + if is_admin_event_flag and not self.settings.LOG_ADMIN_ACTIONS: + return result + raw_update_snippet = None try: raw_update_snippet = event.model_dump_json(exclude_none=True, diff --git a/config/settings.py b/config/settings.py index 3483ed4..fc63a8c 100644 --- a/config/settings.py +++ b/config/settings.py @@ -383,6 +383,10 @@ class Settings(BaseSettings): ) LOGS_PAGE_SIZE: int = Field(default=10) + LOG_ADMIN_ACTIONS: bool = Field( + default=True, + description="Log updates/events triggered by users from ADMIN_IDS.", + ) SUBSCRIPTION_MINI_APP_URL: Optional[str] = Field(default=None) diff --git a/locales/en.json b/locales/en.json index 193aaec..d59d9ad 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1106,6 +1106,8 @@ "admin_settings_params_count": "{count} parameters", "admin_settings_overridden_count": "{count} override", "admin_settings_fields_count": "{count} fields", + "admin_settings_field_log_admin_actions_label": "Log administrator actions", + "admin_settings_field_log_admin_actions_description": "When disabled, events from users listed in ADMIN_IDS are not stored in message logs.", "admin_show": "Show", "admin_hide": "Hide", "admin_tariffs_stat_total": "Total tariffs", diff --git a/locales/ru.json b/locales/ru.json index 696c6cc..e9e7750 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -1106,6 +1106,8 @@ "admin_settings_params_count": "{count} параметров", "admin_settings_overridden_count": "{count} override", "admin_settings_fields_count": "{count} полей", + "admin_settings_field_log_admin_actions_label": "Логировать действия администраторов", + "admin_settings_field_log_admin_actions_description": "Если выключено, события от пользователей из ADMIN_IDS не записываются в message logs.", "admin_show": "Показать", "admin_hide": "Скрыть", "admin_tariffs_stat_total": "Всего тарифов",