fix negative balance in gifts/ amoun in yoomoney
This commit is contained in:
@@ -457,6 +457,7 @@ async def create_key(
|
||||
selected_device_limit: int | None = None,
|
||||
selected_traffic_gb: int | None = None,
|
||||
selected_price_rub: int | None = None,
|
||||
skip_balance_charge: bool | None = None,
|
||||
):
|
||||
from_user = message_or_query.from_user if isinstance(message_or_query, CallbackQuery | Message) else None
|
||||
if from_user:
|
||||
@@ -472,9 +473,12 @@ async def create_key(
|
||||
|
||||
use_country_selection = bool(MODES_CONFIG.get("COUNTRY_SELECTION_ENABLED", USE_COUNTRY_SELECTION))
|
||||
|
||||
if state and any(
|
||||
value is not None
|
||||
for value in (selected_duration_days, selected_device_limit, selected_traffic_gb, selected_price_rub)
|
||||
if state and (
|
||||
skip_balance_charge is not None
|
||||
or any(
|
||||
value is not None
|
||||
for value in (selected_duration_days, selected_device_limit, selected_traffic_gb, selected_price_rub)
|
||||
)
|
||||
):
|
||||
state_data = await state.get_data()
|
||||
if selected_duration_days is not None:
|
||||
@@ -485,6 +489,8 @@ async def create_key(
|
||||
state_data["config_selected_traffic_gb"] = selected_traffic_gb
|
||||
if selected_price_rub is not None:
|
||||
state_data["config_selected_price_rub"] = selected_price_rub
|
||||
if skip_balance_charge is not None:
|
||||
state_data["skip_balance_charge"] = skip_balance_charge
|
||||
await state.set_data(state_data)
|
||||
|
||||
if use_country_selection:
|
||||
@@ -499,6 +505,7 @@ async def create_key(
|
||||
selected_device_limit=selected_device_limit,
|
||||
selected_traffic_gb=selected_traffic_gb,
|
||||
selected_price_rub=selected_price_rub,
|
||||
skip_balance_charge=skip_balance_charge,
|
||||
)
|
||||
else:
|
||||
await key_cluster_mode(
|
||||
@@ -511,4 +518,5 @@ async def create_key(
|
||||
selected_device_limit=selected_device_limit,
|
||||
selected_traffic_gb=selected_traffic_gb,
|
||||
selected_price_rub=selected_price_rub,
|
||||
skip_balance_charge=skip_balance_charge,
|
||||
)
|
||||
|
||||
@@ -69,6 +69,7 @@ async def key_cluster_mode(
|
||||
selected_device_limit: int | None = None,
|
||||
selected_traffic_gb: int | None = None,
|
||||
selected_price_rub: int | None = None,
|
||||
skip_balance_charge: bool | None = None,
|
||||
):
|
||||
target_message = None
|
||||
safe_to_edit = False
|
||||
@@ -93,6 +94,7 @@ async def key_cluster_mode(
|
||||
try:
|
||||
data = await state.get_data() if state else {}
|
||||
is_trial = data.get("is_trial", False)
|
||||
skip_balance_charge = bool(skip_balance_charge)
|
||||
|
||||
if selected_device_limit is None:
|
||||
selected_device_limit = data.get("config_selected_device_limit") or data.get("selected_device_limit")
|
||||
@@ -182,7 +184,7 @@ async def key_cluster_mode(
|
||||
if trial_status in [0, -1]:
|
||||
await update_trial(session, tg_id, 1)
|
||||
|
||||
if price_to_charge:
|
||||
if price_to_charge and not skip_balance_charge:
|
||||
await update_balance(session, tg_id, -int(price_to_charge))
|
||||
|
||||
except Exception as e:
|
||||
|
||||
@@ -89,6 +89,7 @@ async def key_country_mode(
|
||||
selected_device_limit: int | None = None,
|
||||
selected_traffic_gb: int | None = None,
|
||||
selected_price_rub: int | None = None,
|
||||
skip_balance_charge: bool | None = None,
|
||||
):
|
||||
target_message = None
|
||||
safe_to_edit = False
|
||||
@@ -96,7 +97,10 @@ async def key_country_mode(
|
||||
if state and plan:
|
||||
await state.update_data(tariff_id=plan)
|
||||
|
||||
if state and any(value is not None for value in (selected_device_limit, selected_traffic_gb, selected_price_rub)):
|
||||
if state and (
|
||||
skip_balance_charge is not None
|
||||
or any(value is not None for value in (selected_device_limit, selected_traffic_gb, selected_price_rub))
|
||||
):
|
||||
data = await state.get_data()
|
||||
if selected_device_limit is not None:
|
||||
data["config_selected_device_limit"] = selected_device_limit
|
||||
@@ -104,6 +108,8 @@ async def key_country_mode(
|
||||
data["config_selected_traffic_gb"] = selected_traffic_gb
|
||||
if selected_price_rub is not None:
|
||||
data["config_selected_price_rub"] = selected_price_rub
|
||||
if skip_balance_charge is not None:
|
||||
data["skip_balance_charge"] = skip_balance_charge
|
||||
await state.set_data(data)
|
||||
|
||||
if isinstance(message_or_query, CallbackQuery) and message_or_query.message:
|
||||
@@ -502,6 +508,7 @@ async def finalize_key_creation(
|
||||
|
||||
data = await state.get_data() if state else {}
|
||||
is_trial = data.get("is_trial", False)
|
||||
skip_balance_charge = bool(data.get("skip_balance_charge", False))
|
||||
|
||||
selected_traffic_gb = data.get("config_selected_traffic_gb")
|
||||
if selected_traffic_gb is None:
|
||||
@@ -726,9 +733,12 @@ async def finalize_key_creation(
|
||||
trial_status = await get_trial(session, tg_id)
|
||||
if trial_status in [0, -1]:
|
||||
await update_trial(session, tg_id, 1)
|
||||
if not is_trial and price_to_charge:
|
||||
if not is_trial and price_to_charge and not skip_balance_charge:
|
||||
await update_balance(session, tg_id, -int(price_to_charge))
|
||||
|
||||
if state:
|
||||
await state.update_data(skip_balance_charge=False)
|
||||
|
||||
await session.commit()
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user