From ccef6afb7c46d773b4880211ab72115a3cc403d4 Mon Sep 17 00:00:00 2001 From: Vladless Date: Tue, 23 Dec 2025 21:45:50 +0300 Subject: [PATCH] fixed option reset when extending --- handlers/keys/key_renew.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/handlers/keys/key_renew.py b/handlers/keys/key_renew.py index f74f58f8..cc51008b 100644 --- a/handlers/keys/key_renew.py +++ b/handlers/keys/key_renew.py @@ -453,18 +453,38 @@ async def process_callback_renew_plan(callback_query: CallbackQuery, state: FSMC new_expiry_time = int(expiry_time + timedelta(days=duration_days).total_seconds() * 1000) if tariff.get("configurable"): + cfg = normalize_tariff_config(tariff) + + traffic_options = cfg.get("traffic_options_gb") or tariff.get("traffic_options_gb") or [] + traffic_options_sorted = sorted([int(x) for x in traffic_options if str(x).isdigit()]) + + device_options = cfg.get("device_options") or tariff.get("device_options") or [] + device_options_sorted = sorted([int(x) for x in device_options if str(x).isdigit()]) + selected_devices_db = record.get("selected_device_limit") selected_traffic_db = record.get("selected_traffic_limit") - if selected_devices_db is not None: - config_selected_devices = int(selected_devices_db) + if traffic_options_sorted: + selected_traffic_db = int(selected_traffic_db) if selected_traffic_db is not None else traffic_options_sorted[0] + if selected_traffic_db not in traffic_options_sorted: + selected_traffic_db = traffic_options_sorted[0] else: + selected_traffic_db = None + + if device_options_sorted: + selected_devices_db = int(selected_devices_db) if selected_devices_db is not None else device_options_sorted[0] + if selected_devices_db not in device_options_sorted: + selected_devices_db = device_options_sorted[0] + else: + selected_devices_db = None + + config_selected_devices = selected_devices_db + if config_selected_devices is None: base_devices = tariff.get("device_limit") config_selected_devices = int(base_devices) if base_devices is not None else None - if selected_traffic_db is not None: - config_selected_traffic_gb = int(selected_traffic_db) - else: + config_selected_traffic_gb = selected_traffic_db + if config_selected_traffic_gb is None: base_traffic_gb = tariff.get("traffic_limit") config_selected_traffic_gb = int(base_traffic_gb) if base_traffic_gb is not None else None