From c1a9f16faa71fcdbe0e937301397793153f43672 Mon Sep 17 00:00:00 2001 From: algizn97 Date: Thu, 21 Aug 2025 13:47:19 +0500 Subject: [PATCH] Added commission_fee --- .../risk_management_settings/settings.py | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/app/telegram/functions/risk_management_settings/settings.py b/app/telegram/functions/risk_management_settings/settings.py index 859451e..86dcc82 100644 --- a/app/telegram/functions/risk_management_settings/settings.py +++ b/app/telegram/functions/risk_management_settings/settings.py @@ -14,6 +14,7 @@ class update_risk_management_settings(StatesGroup): price_profit = State() price_loss = State() max_risk_deal = State() + commission_fee = State() async def reg_new_user_default_risk_management_settings(id, message): tg_id = id @@ -25,10 +26,11 @@ async def main_settings_message(id, message, state): text = f"""Риск менеджмент, -- Процент изменения цены для фиксации прибыли: {data['price_profit']}% -- Процент изменения цены для фиксации убытков: {data['price_loss']}% -- Максимальный риск на сделку (в % от баланса): {data['max_risk_deal']}% -""" + - Процент изменения цены для фиксации прибыли: {data.get('price_profit', 0)}% + - Процент изменения цены для фиксации убытков: {data.get('price_loss', 0)}% + - Максимальный риск на сделку (в % от баланса): {data.get('max_risk_deal', 0)}% + - Комиссия биржи для расчета процента фиксации прибыли: {data.get('commission_fee', 0)}% + """ await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.risk_management_settings_markup) async def price_profit_message(message, state): @@ -107,4 +109,28 @@ async def state_max_risk_deal(message: Message, state): else: await message.answer(f'⛔️ Ошибка: ваше значение ({data['max_risk_deal']}%) или выше лимита (100) или вы вводите неверные символы') - await main_settings_message(message.from_user.id, message, state) \ No newline at end of file + await main_settings_message(message.from_user.id, message, state) + + +async def commission_fee_message(message, state): + await state.set_state(update_risk_management_settings.commission_fee) + await message.answer(text="Введите процент комиссии биржи (например, 0.1):", parse_mode='html', reply_markup=None) + +@router_risk_management_settings.message(update_risk_management_settings.commission_fee) +async def state_commission_fee(message: Message, state): + await state.update_data(commission_fee=message.text) + data = await state.get_data() + data_settings = await rq.get_user_risk_management_settings(message.from_user.id) + + try: + val = float(data['commission_fee']) + if val < 0 or val > 100: + raise ValueError() + except Exception: + await message.answer("⛔️ Ошибка: введите корректный процент комиссии от 0 до 100") + return await commission_fee_message(message, state) + + await rq.update_commission_fee(message.from_user.id, val) + await message.answer(f"✅ Изменено: {data_settings['commission_fee']}% → {data['commission_fee']}%") + await main_settings_message(message.from_user.id, message, state) + await state.clear() \ No newline at end of file