From c4b35be0531fc7248d23e1694f45f24609c794f1 Mon Sep 17 00:00:00 2001 From: algizn97 Date: Fri, 22 Aug 2025 16:49:17 +0500 Subject: [PATCH] Updated the risk management function --- .../risk_management_settings/settings.py | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/app/telegram/functions/risk_management_settings/settings.py b/app/telegram/functions/risk_management_settings/settings.py index 86dcc82..3a7e7ee 100644 --- a/app/telegram/functions/risk_management_settings/settings.py +++ b/app/telegram/functions/risk_management_settings/settings.py @@ -74,16 +74,37 @@ async def state_price_loss(message: Message, state): data_settings = await rq.get_user_risk_management_settings(message.from_user.id) if data['price_loss'].isdigit() and int(data['price_loss']) <= 100: - await message.answer(f"✅ Изменено: {data_settings['price_loss']}% → {data['price_loss']}%") + new_price_loss = int(data['price_loss']) + old_price_loss = int(data_settings.get('price_loss', 0)) + + current_price_profit = data_settings.get('price_profit') + # Пробуем перевести price_profit в число, если это возможно + try: + current_price_profit_num = int(current_price_profit) + except Exception: + current_price_profit_num = 0 + + # Флаг, если price_profit изначально равен 0 или совпадает со старым стоп-лоссом + should_update_profit = (current_price_profit_num == 0) or (current_price_profit_num == abs(old_price_loss)) + + # Обновляем стоп-лосс + await rq.update_price_loss(message.from_user.id, new_price_loss) + + # Если нужно, меняем тейк-профит + if should_update_profit: + new_price_profit = abs(new_price_loss) + await rq.update_price_profit(message.from_user.id, new_price_profit) + await message.answer(f"✅ Стоп-лосс изменён: {old_price_loss}% → {new_price_loss}%\n" + f"Тейк-профит автоматически установлен в: {new_price_profit}%") + else: + await message.answer(f"✅ Стоп-лосс изменён: {old_price_loss}% → {new_price_loss}%") - await rq.update_price_loss(message.from_user.id, data['price_loss']) await main_settings_message(message.from_user.id, message, state) - await state.clear() else: - await message.answer(f'⛔️ Ошибка: ваше значение ({data['price_loss']}%) или выше лимита (100) или вы вводите неверные символы') - - await main_settings_message(message.from_user.id, message, state) + await message.answer( + f'⛔️ Ошибка: ваше значение ({data["price_loss"]}%) выше лимита (100) или содержит неверные символы') + await main_settings_message(message.from_user.id, message, state) async def max_risk_deal_message(message, state): await state.set_state(update_risk_management_settings.max_risk_deal)