diff --git a/backend/bot/app/web/admin_settings_manifest.py b/backend/bot/app/web/admin_settings_manifest.py index 8c06835..eb58fb0 100644 --- a/backend/bot/app/web/admin_settings_manifest.py +++ b/backend/bot/app/web/admin_settings_manifest.py @@ -65,7 +65,6 @@ SETTINGS_MANIFEST: List[SettingField] = [ "SUPPORT_LINK", "url", "general", "Ссылка поддержки", "Куда вести пользователей за помощью." ), SettingField("SERVER_STATUS_URL", "url", "general", "Ссылка на статус серверов"), - SettingField("TERMS_OF_SERVICE_URL", "url", "general", "Условия использования"), SettingField("PRIVACY_POLICY_URL", "url", "general", "Политика конфиденциальности"), SettingField("USER_AGREEMENT_URL", "url", "general", "Пользовательское соглашение"), SettingField("DISABLE_WELCOME_MESSAGE", "bool", "general", "Скрыть приветствие /start"), diff --git a/backend/bot/app/web/webapp/assets.py b/backend/bot/app/web/webapp/assets.py index c691343..dec98bd 100644 --- a/backend/bot/app/web/webapp/assets.py +++ b/backend/bot/app/web/webapp/assets.py @@ -765,7 +765,6 @@ def _get_cached_webapp_settings(request: web.Request) -> Dict[str, Any]: "traffic_packages": settings.traffic_packages, "stars_traffic_packages": settings.stars_traffic_packages, "support_url": settings.SUPPORT_LINK or "", - "terms_url": settings.TERMS_OF_SERVICE_URL or "", "privacy_policy_url": settings.PRIVACY_POLICY_URL or "", "user_agreement_url": settings.USER_AGREEMENT_URL or "", "currency": settings.DEFAULT_CURRENCY_SYMBOL or "RUB", @@ -1018,7 +1017,6 @@ def _build_webapp_bootstrap_payload(request: web.Request) -> Dict[str, Any]: "telegramOAuthClientId": _resolve_telegram_oauth_client_id(settings) or 0, "telegramOAuthRequestAccess": _resolve_telegram_oauth_request_access(settings), "supportUrl": cached["support_url"], - "termsUrl": cached["terms_url"], "privacyPolicyUrl": cached["privacy_policy_url"], "userAgreementUrl": cached["user_agreement_url"], "currency": cached["currency"], diff --git a/backend/bot/handlers/user/start.py b/backend/bot/handlers/user/start.py index 5328a8c..18dcace 100644 --- a/backend/bot/handlers/user/start.py +++ b/backend/bot/handlers/user/start.py @@ -1184,7 +1184,7 @@ async def main_action_callback_handler( _ = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key privacy_url = settings.PRIVACY_POLICY_URL - user_agreement_url = settings.USER_AGREEMENT_URL or settings.TERMS_OF_SERVICE_URL + user_agreement_url = settings.USER_AGREEMENT_URL if not privacy_url and not user_agreement_url: await safe_answer_callback( diff --git a/backend/bot/keyboards/inline/user_keyboards.py b/backend/bot/keyboards/inline/user_keyboards.py index 0489ff7..064f786 100644 --- a/backend/bot/keyboards/inline/user_keyboards.py +++ b/backend/bot/keyboards/inline/user_keyboards.py @@ -166,8 +166,7 @@ def get_main_menu_inline_keyboard( InlineKeyboardButton(text=_(key="menu_support_button"), url=settings.SUPPORT_LINK) ) - user_agreement_url = settings.USER_AGREEMENT_URL or settings.TERMS_OF_SERVICE_URL - if settings.PRIVACY_POLICY_URL or user_agreement_url: + if settings.PRIVACY_POLICY_URL or settings.USER_AGREEMENT_URL: builder.row( InlineKeyboardButton(text=_(key="menu_info_button"), callback_data="main_action:info") ) @@ -234,8 +233,7 @@ def get_bot_interface_inline_keyboard( InlineKeyboardButton(text=_(key="menu_support_button"), url=settings.SUPPORT_LINK) ) - user_agreement_url = settings.USER_AGREEMENT_URL or settings.TERMS_OF_SERVICE_URL - if settings.PRIVACY_POLICY_URL or user_agreement_url: + if settings.PRIVACY_POLICY_URL or settings.USER_AGREEMENT_URL: builder.row( InlineKeyboardButton( text=_(key="menu_info_button"), callback_data="main_action:bot_info" diff --git a/backend/bot/services/locale_override_service.py b/backend/bot/services/locale_override_service.py index f502a44..7b50740 100644 --- a/backend/bot/services/locale_override_service.py +++ b/backend/bot/services/locale_override_service.py @@ -205,7 +205,6 @@ LOCALE_GROUPS = [ "admin_settings_field_subscription_mini_app_url", "admin_settings_field_support_link", "admin_settings_field_server_status_url", - "admin_settings_field_terms_", "admin_settings_field_privacy_", "admin_settings_field_user_agreement_", "appearance_", diff --git a/backend/config/settings.py b/backend/config/settings.py index 6d8f5ae..1a3f65b 100644 --- a/backend/config/settings.py +++ b/backend/config/settings.py @@ -148,7 +148,6 @@ class Settings(BaseSettings): SUPPORT_LINK: Optional[str] = Field(default=None) SERVER_STATUS_URL: Optional[str] = Field(default=None) - TERMS_OF_SERVICE_URL: Optional[str] = Field(default=None) PRIVACY_POLICY_URL: Optional[str] = Field(default=None) USER_AGREEMENT_URL: Optional[str] = Field(default=None) REQUIRED_CHANNEL_ID: Optional[int] = Field( diff --git a/docs/configuration/env-vars.md b/docs/configuration/env-vars.md index ca5b671..47827fe 100644 --- a/docs/configuration/env-vars.md +++ b/docs/configuration/env-vars.md @@ -105,7 +105,6 @@ | `DEFAULT_CURRENCY_SYMBOL` | Символ/код валюты в интерфейсе. | | `SUPPORT_LINK` | Внешняя ссылка поддержки. | | `SERVER_STATUS_URL` | Страница статуса сервиса. | -| `TERMS_OF_SERVICE_URL` | Условия использования. | | `PRIVACY_POLICY_URL` | Политика конфиденциальности. | | `USER_AGREEMENT_URL` | Пользовательское соглашение. | | `REQUIRED_CHANNEL_ID` | ID обязательного Telegram-канала. Используется для проверки подписки и автоматического получения ссылки кнопки, если бот видит канал. | diff --git a/frontend/src/lib/webapp/demoDataset.js b/frontend/src/lib/webapp/demoDataset.js index 734167f..08675b1 100644 --- a/frontend/src/lib/webapp/demoDataset.js +++ b/frontend/src/lib/webapp/demoDataset.js @@ -15,14 +15,14 @@ export const DEMO_DATASET = { logs: 1600, supportTickets: 3, translationKeys: 1994, - settingsFields: 223, + settingsFields: 222, }, }, config: { title: "/minishop", supportUrl: "https://t.me/demo_minishop_support", privacyPolicyUrl: "https://demo.example/privacy", - userAgreementUrl: "https://demo.example/terms", + userAgreementUrl: "https://demo.example/agreement", telegramLoginBotUsername: "demo_minishop_bot", telegramLoginBotId: 1234567890, telegramOAuthClientId: 1234567890, @@ -68425,8 +68425,8 @@ export const DEMO_DATASET = { telegram_username: "login_please", telegram_first_name: "", email: "", - event_type: "command:/terms", - content: "Demo event: command:/terms Account #910327.", + event_type: "command:/agreement", + content: "Demo event: command:/agreement Account #910327.", is_admin_event: false, target_user_id: null, timestamp: "2026-05-21T07:34:39Z", @@ -69385,8 +69385,8 @@ export const DEMO_DATASET = { telegram_username: "login_please", telegram_first_name: "", email: "", - event_type: "command:/terms", - content: "Demo event: command:/terms Account #910327.", + event_type: "command:/agreement", + content: "Demo event: command:/agreement Account #910327.", is_admin_event: false, target_user_id: null, timestamp: "2026-05-19T13:37:32Z", @@ -86121,26 +86121,6 @@ export const DEMO_DATASET = { overridden: false, updated_at: null, }, - { - key: "TERMS_OF_SERVICE_URL", - type: "url", - section: "general", - section_order: 1, - subsection: null, - label: "Условия использования", - description: "", - i18n_label_key: "admin_settings_field_terms_of_service_url_label", - i18n_description_key: null, - i18n_subsection_key: null, - i18n_placeholder_key: null, - placeholder: "https://demo.example/terms_of_service_url", - optional: true, - secret: false, - default: "https://demo.example/terms_of_service_url", - value: "https://demo.example/terms_of_service_url", - overridden: false, - updated_at: null, - }, { key: "PRIVACY_POLICY_URL", type: "url", @@ -114599,30 +114579,6 @@ export const DEMO_DATASET = { }, }, }, - { - key: "admin_settings_field_terms_of_service_url_label", - audience: "internal", - values: { - ru: { - base: "Условия использования", - fallback: "Условия использования", - effective: "Условия использования", - override: "", - overridden: false, - updated_at: null, - updated_by: null, - }, - en: { - base: "Terms Of Service URL", - fallback: "Условия использования", - effective: "Terms Of Service URL", - override: "", - overridden: false, - updated_at: null, - updated_by: null, - }, - }, - }, { key: "admin_settings_field_user_agreement_url_label", audience: "internal", @@ -133711,30 +133667,6 @@ export const DEMO_DATASET = { }, }, }, - { - key: "menu_terms_button", - audience: "user", - values: { - ru: { - base: "📄 Условия сервиса", - fallback: "📄 Условия сервиса", - effective: "📄 Условия сервиса", - override: "", - overridden: false, - updated_at: null, - updated_by: null, - }, - en: { - base: "📄 Terms of Service", - fallback: "📄 Условия сервиса", - effective: "📄 Terms of Service", - override: "", - overridden: false, - updated_at: null, - updated_by: null, - }, - }, - }, ], }, { diff --git a/frontend/src/lib/webapp/settingsManifest.generated.json b/frontend/src/lib/webapp/settingsManifest.generated.json index 838a3d2..2771d39 100644 --- a/frontend/src/lib/webapp/settingsManifest.generated.json +++ b/frontend/src/lib/webapp/settingsManifest.generated.json @@ -98,25 +98,6 @@ "overridden": false, "updated_at": null }, - { - "key": "TERMS_OF_SERVICE_URL", - "type": "url", - "section": "general", - "section_order": 1, - "subsection": null, - "label": "Условия использования", - "description": "", - "i18n_label_key": "admin_settings_field_terms_of_service_url_label", - "i18n_description_key": null, - "i18n_subsection_key": null, - "i18n_placeholder_key": null, - "placeholder": "", - "optional": true, - "secret": false, - "value": "", - "overridden": false, - "updated_at": null - }, { "key": "PRIVACY_POLICY_URL", "type": "url", diff --git a/locales/en.json b/locales/en.json index bcde007..0463372 100644 --- a/locales/en.json +++ b/locales/en.json @@ -23,7 +23,6 @@ "menu_language_settings_inline": "🌐 Language", "menu_server_status_button": "📊 Status", "menu_support_button": "💬 Admin contact", - "menu_terms_button": "📄 Terms of Service", "menu_info_button": "ℹ️ Information", "bot_interface_menu_title": "Bot interface", "bot_interface_menu_webapp_hint": "The Personal Account is the easier place to manage the service.", @@ -1591,7 +1590,6 @@ "admin_settings_field_support_link_label": "Support Link", "admin_settings_field_support_link_description": "Controls the 'Support Link' setting in admin overrides.", "admin_settings_field_server_status_url_label": "Server Status URL", - "admin_settings_field_terms_of_service_url_label": "Terms Of Service URL", "admin_settings_field_privacy_policy_url_label": "Privacy Policy URL", "admin_settings_field_user_agreement_url_label": "User Agreement URL", "admin_settings_field_disable_welcome_message_label": "Disable Welcome Message", diff --git a/locales/ru.json b/locales/ru.json index 736a2b7..8af3127 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -23,7 +23,6 @@ "menu_language_settings_inline": "🌐 Язык", "menu_server_status_button": "📊 Статус", "menu_support_button": "💬 Связаться в telegram", - "menu_terms_button": "📄 Условия сервиса", "menu_info_button": "ℹ️ Информация", "bot_interface_menu_title": "Интерфейс в боте", "bot_interface_menu_webapp_hint": "В личном кабинете взаимодействовать с сервисом будет удобнее.", @@ -1591,7 +1590,6 @@ "admin_settings_field_support_link_label": "Ссылка поддержки", "admin_settings_field_support_link_description": "Куда вести пользователей за помощью.", "admin_settings_field_server_status_url_label": "Ссылка на статус серверов", - "admin_settings_field_terms_of_service_url_label": "Условия использования", "admin_settings_field_privacy_policy_url_label": "Политика конфиденциальности", "admin_settings_field_user_agreement_url_label": "Пользовательское соглашение", "admin_settings_field_disable_welcome_message_label": "Скрыть приветствие /start", diff --git a/tests/test_user_bot_menu.py b/tests/test_user_bot_menu.py index ff48f77..588176c 100644 --- a/tests/test_user_bot_menu.py +++ b/tests/test_user_bot_menu.py @@ -46,7 +46,6 @@ class UserBotMenuTests(unittest.TestCase): SUPPORT_LINK="https://t.me/support", PRIVACY_POLICY_URL="https://example.com/privacy", USER_AGREEMENT_URL="https://example.com/agreement", - TERMS_OF_SERVICE_URL="", TRIAL_ENABLED=True, SERVER_STATUS_URL="", SUBSCRIPTION_GUIDES_ENABLED=True,