Merge pull STCS #2
@@ -21,7 +21,6 @@
|
|||||||
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="app\services\Bybit\config.py" />
|
|
||||||
<Compile Include="app\services\Bybit\functions\Add_Bybit_API.py" />
|
<Compile Include="app\services\Bybit\functions\Add_Bybit_API.py" />
|
||||||
<Compile Include="app\services\Bybit\functions\balance.py" />
|
<Compile Include="app\services\Bybit\functions\balance.py" />
|
||||||
<Compile Include="app\services\Bybit\functions\functions.py" />
|
<Compile Include="app\services\Bybit\functions\functions.py" />
|
||||||
|
@@ -71,7 +71,7 @@ async def contract_long(tg_id, message, margin_mode):
|
|||||||
setMarginMode=margin_mode # margin_type
|
setMarginMode=margin_mode # margin_type
|
||||||
)
|
)
|
||||||
|
|
||||||
martingale_factor = float(data_main_stgs['martingale_factor'])
|
martingale_factor = float(data_main_stgs['martingale_factor']) # Исправлено: было maximal_quantity
|
||||||
max_martingale_steps = int(data_main_stgs['maximal_quantity'])
|
max_martingale_steps = int(data_main_stgs['maximal_quantity'])
|
||||||
starting_quantity = float(data_main_stgs['starting_quantity'])
|
starting_quantity = float(data_main_stgs['starting_quantity'])
|
||||||
max_risk_percent = float(data_risk_management_stgs['max_risk_deal'])
|
max_risk_percent = float(data_risk_management_stgs['max_risk_deal'])
|
||||||
@@ -98,21 +98,6 @@ async def contract_long(tg_id, message, margin_mode):
|
|||||||
realised_pnl = float(position['unrealisedPnl'])
|
realised_pnl = float(position['unrealisedPnl'])
|
||||||
|
|
||||||
if realised_pnl > 0:
|
if realised_pnl > 0:
|
||||||
print(f'''
|
|
||||||
=====================
|
|
||||||
=====Сделка=========
|
|
||||||
===уСПЕШНЕАЯ================
|
|
||||||
===================
|
|
||||||
=================
|
|
||||||
|
|
||||||
{realised_pnl}
|
|
||||||
|
|
||||||
===============
|
|
||||||
===============
|
|
||||||
=============
|
|
||||||
===============
|
|
||||||
==============
|
|
||||||
''')
|
|
||||||
starting_quantity = next_quantity
|
starting_quantity = next_quantity
|
||||||
current_martingale_step = 0
|
current_martingale_step = 0
|
||||||
elif not realised_pnl:
|
elif not realised_pnl:
|
||||||
@@ -122,22 +107,6 @@ async def contract_long(tg_id, message, margin_mode):
|
|||||||
current_martingale_step += 1
|
current_martingale_step += 1
|
||||||
next_quantity = last_quantity * martingale_factor
|
next_quantity = last_quantity * martingale_factor
|
||||||
starting_quantity = next_quantity
|
starting_quantity = next_quantity
|
||||||
|
|
||||||
print(f'''
|
|
||||||
======СДЕЛКА===============
|
|
||||||
=====УБЫТОЧНАЯ==============
|
|
||||||
===================
|
|
||||||
===================
|
|
||||||
=================
|
|
||||||
|
|
||||||
{realised_pnl}
|
|
||||||
|
|
||||||
===============
|
|
||||||
===============
|
|
||||||
=============
|
|
||||||
===============
|
|
||||||
==============
|
|
||||||
''')
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Не получены позиции")
|
print("Не получены позиции")
|
||||||
next_quantity = starting_quantity
|
next_quantity = starting_quantity
|
||||||
@@ -209,7 +178,7 @@ async def contract_short(tg_id, message, margin_mode):
|
|||||||
setMarginMode=margin_mode # margin_type
|
setMarginMode=margin_mode # margin_type
|
||||||
)
|
)
|
||||||
|
|
||||||
martingale_factor = float(data_main_stgs['martingale_factor'])
|
martingale_factor = float(data_main_stgs['martingale_factor']) # Исправлено: было maximal_quantity
|
||||||
max_martingale_steps = int(data_main_stgs['maximal_quantity'])
|
max_martingale_steps = int(data_main_stgs['maximal_quantity'])
|
||||||
starting_quantity = float(data_main_stgs['starting_quantity'])
|
starting_quantity = float(data_main_stgs['starting_quantity'])
|
||||||
max_risk_percent = float(data_risk_management_stgs['max_risk_deal'])
|
max_risk_percent = float(data_risk_management_stgs['max_risk_deal'])
|
||||||
@@ -235,17 +204,16 @@ async def contract_short(tg_id, message, margin_mode):
|
|||||||
|
|
||||||
realised_pnl = float(position['unrealisedPnl'])
|
realised_pnl = float(position['unrealisedPnl'])
|
||||||
|
|
||||||
if realised_pnl > 0: # Прибыльная сделка
|
if realised_pnl > 0:
|
||||||
starting_quantity = next_quantity
|
starting_quantity = next_quantity
|
||||||
current_martingale_step = 0
|
current_martingale_step = 0
|
||||||
elif not realised_pnl:
|
elif not realised_pnl:
|
||||||
next_quantity = starting_quantity
|
next_quantity = starting_quantity
|
||||||
current_martingale_step += 1
|
current_martingale_step += 1
|
||||||
else: # Убыточная сделка
|
else:
|
||||||
current_martingale_step += 1
|
current_martingale_step += 1
|
||||||
next_quantity = last_quantity * martingale_factor
|
next_quantity = last_quantity * martingale_factor
|
||||||
starting_quantity = next_quantity
|
starting_quantity = next_quantity
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Не получены позиции")
|
print("Не получены позиции")
|
||||||
next_quantity = starting_quantity
|
next_quantity = starting_quantity
|
||||||
|
@@ -13,10 +13,21 @@ async def get_balance(tg_id, message):
|
|||||||
api_secret=secret_key
|
api_secret=secret_key
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
if api_key == 'None' or secret_key == 'None':
|
||||||
balance = client.get_wallet_balance(accountType='UNIFIED', coin='USDT')['result']['list'][0]['coin'][0]['walletBalance']
|
await message.answer('⚠️ Подключите платформу для торговли')
|
||||||
|
return 0
|
||||||
return balance
|
|
||||||
except Exception as e:
|
try:
|
||||||
await message.answer('Баланс не был получен, подключите платформу')
|
check_user = client.get_wallet_balance()
|
||||||
|
|
||||||
|
if check_user:
|
||||||
|
try:
|
||||||
|
balance = client.get_wallet_balance(accountType='UNIFIED', coin='USDT')['result']['list'][0]['coin'][0]['walletBalance']
|
||||||
|
|
||||||
|
return balance
|
||||||
|
except Exception as e:
|
||||||
|
await message.answer('⚠️ Ошибка при получении баланса пользователя')
|
||||||
|
return 0
|
||||||
|
except Exception as e:
|
||||||
|
await message.answer('⚠️ Неверные данные API, перепроверьте их')
|
||||||
return 0
|
return 0
|
@@ -20,9 +20,9 @@ class state_update_symbol(StatesGroup):
|
|||||||
async def clb_start_bybit_trade_message(callback: CallbackQuery, state: FSMContext):
|
async def clb_start_bybit_trade_message(callback: CallbackQuery, state: FSMContext):
|
||||||
api = await rq.get_bybit_api_key(callback.from_user.id)
|
api = await rq.get_bybit_api_key(callback.from_user.id)
|
||||||
secret = await rq.get_bybit_secret_key(callback.from_user.id)
|
secret = await rq.get_bybit_secret_key(callback.from_user.id)
|
||||||
|
balance = await get_balance(callback.from_user.id, callback.message)
|
||||||
|
|
||||||
if api and secret:
|
if balance:
|
||||||
balance = await get_balance(callback.from_user.id, callback.message)
|
|
||||||
symbol = await rq.get_symbol(callback.from_user.id)
|
symbol = await rq.get_symbol(callback.from_user.id)
|
||||||
|
|
||||||
text = f'''💎 Торговля на Bybit
|
text = f'''💎 Торговля на Bybit
|
||||||
@@ -30,38 +30,33 @@ async def clb_start_bybit_trade_message(callback: CallbackQuery, state: FSMConte
|
|||||||
⚖️ Ваш баланс (USDT): {balance}
|
⚖️ Ваш баланс (USDT): {balance}
|
||||||
📊 Текущая торговая пара: {symbol}
|
📊 Текущая торговая пара: {symbol}
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Как начать торговлю?
|
Как начать торговлю?
|
||||||
|
|
||||||
1️⃣ Проверьте и тщательно настройте все параметры в вашем профиле.
|
1️⃣ Проверьте и тщательно настройте все параметры в вашем профиле.
|
||||||
2️⃣ Нажмите ниже кнопку 'Указать торговую пару' и введите торговую пару заглавными буквами, без лишних символов (например: BTCUSDT).
|
2️⃣ Нажмите ниже кнопку 'Указать торговую пару' и введите торговую пару заглавными буквами, без лишних символов (например: BTCUSDT).
|
||||||
'''
|
'''
|
||||||
await callback.message.edit_text(text=text, parse_mode='html', reply_markup=inline_markup.trading_markup)
|
await callback.message.edit_text(text=text, parse_mode='html', reply_markup=inline_markup.trading_markup)
|
||||||
else:
|
|
||||||
callback.message.answer('Перед началом работы, в настройках подключите bybit')
|
|
||||||
|
|
||||||
async def start_bybit_trade_message(message, state):
|
async def start_bybit_trade_message(message, state):
|
||||||
api = await rq.get_bybit_api_key(message.from_user.id)
|
api = await rq.get_bybit_api_key(message.from_user.id)
|
||||||
secret = await rq.get_bybit_secret_key(message.from_user.id)
|
secret = await rq.get_bybit_secret_key(message.from_user.id)
|
||||||
|
balance = await get_balance(message.from_user.id, message)
|
||||||
|
|
||||||
if api and secret:
|
if balance:
|
||||||
balance = await get_balance(message.from_user.id, message)
|
|
||||||
symbol = await rq.get_symbol(message.from_user.id)
|
symbol = await rq.get_symbol(message.from_user.id)
|
||||||
|
|
||||||
text = f'''Торговля на Bybit
|
text = f'''💎 Торговля на Bybit
|
||||||
|
|
||||||
<b>ваш баланс (USDT):</b> {balance}
|
⚖️ Ваш баланс (USDT): {balance}
|
||||||
<b>Текущая торговая пара: </b> {symbol}
|
📊 Текущая торговая пара: {symbol}
|
||||||
|
|
||||||
Как начать торговлю?
|
Как начать торговлю?
|
||||||
1. Внимательно проверьте и настройте все параметры в вашем профиле
|
|
||||||
2. Ниже нажмите 'Указать торговую пару' и отправьте торговую пару заглавными буквами, указав два актива без всяких лишних символов! (Пример: BTCUSDT)
|
1️⃣ Проверьте и тщательно настройте все параметры в вашем профиле.
|
||||||
|
2️⃣ Нажмите ниже кнопку 'Указать торговую пару' и введите торговую пару заглавными буквами, без лишних символов (например: BTCUSDT).
|
||||||
'''
|
'''
|
||||||
|
|
||||||
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.trading_markup)
|
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.trading_markup)
|
||||||
else:
|
|
||||||
await message.answer('Перед началом работы, в настройках подключите bybit')
|
|
||||||
|
|
||||||
@router_functions_bybit_trade.callback_query(F.data == 'clb_update_trading_pair')
|
@router_functions_bybit_trade.callback_query(F.data == 'clb_update_trading_pair')
|
||||||
async def update_symbol_for_trade_message(callback: CallbackQuery, state: FSMContext):
|
async def update_symbol_for_trade_message(callback: CallbackQuery, state: FSMContext):
|
||||||
@@ -75,6 +70,7 @@ async def update_symbol_for_trade(message: Message, state: FSMContext):
|
|||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
|
||||||
|
await message.answer('Пара была успешно обновлена')
|
||||||
await rq.update_symbol(message.from_user.id, data['symbol'])
|
await rq.update_symbol(message.from_user.id, data['symbol'])
|
||||||
await start_bybit_trade_message(message, state)
|
await start_bybit_trade_message(message, state)
|
||||||
|
|
||||||
|
@@ -62,29 +62,34 @@ async def state_trading_mode(callback: CallbackQuery, state):
|
|||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
id = callback.from_user.id
|
id = callback.from_user.id
|
||||||
|
data_settings = await rq.get_user_main_settings(id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
match callback.data:
|
match callback.data:
|
||||||
case 'trade_mode_long':
|
case 'trade_mode_long':
|
||||||
|
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Long")
|
||||||
await rq.update_trade_mode_user(id, 'Long')
|
await rq.update_trade_mode_user(id, 'Long')
|
||||||
await main_settings_message(id, callback.message, state)
|
await main_settings_message(id, callback.message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
case 'trade_mode_short':
|
case 'trade_mode_short':
|
||||||
|
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Short")
|
||||||
await rq.update_trade_mode_user(id, 'Short')
|
await rq.update_trade_mode_user(id, 'Short')
|
||||||
await main_settings_message(id, callback.message, state)
|
await main_settings_message(id, callback.message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
case 'trade_mode_switch':
|
case 'trade_mode_switch':
|
||||||
|
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Switch")
|
||||||
await rq.update_trade_mode_user(id, 'Switch')
|
await rq.update_trade_mode_user(id, 'Switch')
|
||||||
await main_settings_message(id, callback.message, state)
|
await main_settings_message(id, callback.message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
case 'trade_mode_smart':
|
case 'trade_mode_smart':
|
||||||
await rq.update_trade_mode_user(id, 'Smart')
|
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Smart")
|
||||||
await main_settings_message(id, callback.message, state)
|
await rq.update_trade_mode_user(id, 'Smart')
|
||||||
|
await main_settings_message(id, callback.message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"error: {e}")
|
print(f"error: {e}")
|
||||||
|
|
||||||
@@ -98,13 +103,18 @@ async def state_size_leverage(message: Message, state):
|
|||||||
await state.update_data(size_leverage = message.text)
|
await state.update_data(size_leverage = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_main_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['size_leverage'].isdigit() and int(data['size_leverage']) <= 100:
|
if data['size_leverage'].isdigit() and int(data['size_leverage']) <= 100:
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['size_leverage']} → {data['size_leverage']}")
|
||||||
|
|
||||||
await rq.update_size_leverange(message.from_user.id, data['size_leverage'])
|
await rq.update_size_leverange(message.from_user.id, data['size_leverage'])
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: ваше значение ({data['size_leverage']}) или выше лимита (100) или вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
async def martingale_factor_message(message, state):
|
async def martingale_factor_message(message, state):
|
||||||
@@ -117,13 +127,18 @@ async def state_martingale_factor(message: Message, state):
|
|||||||
await state.update_data(martingale_factor = message.text)
|
await state.update_data(martingale_factor = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_main_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['martingale_factor'].isdigit() and int(data['martingale_factor']) <= 100:
|
if data['martingale_factor'].isdigit() and int(data['martingale_factor']) <= 100:
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['martingale_factor']} → {data['martingale_factor']}")
|
||||||
|
|
||||||
await rq.update_martingale_factor(message.from_user.id, data['martingale_factor'])
|
await rq.update_martingale_factor(message.from_user.id, data['martingale_factor'])
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: ваше значение ({data['martingale_factor']}) или выше лимита (100) или вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
async def margin_type_message(message, state):
|
async def margin_type_message(message, state):
|
||||||
@@ -150,16 +165,20 @@ async def state_margin_type(callback: CallbackQuery, state):
|
|||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
id = callback.from_user.id
|
id = callback.from_user.id
|
||||||
print(f"sdljfngdjklfg ## {callback.data}")
|
data_settings = await rq.get_user_main_settings(id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
match callback.data:
|
match callback.data:
|
||||||
case 'margin_type_isolated':
|
case 'margin_type_isolated':
|
||||||
|
await callback.message.answer(f"✅ Изменено: {data_settings['margin_type']} → Isolated")
|
||||||
|
|
||||||
await rq.update_margin_type(id, 'Isolated')
|
await rq.update_margin_type(id, 'Isolated')
|
||||||
await main_settings_message(id, callback.message, state)
|
await main_settings_message(id, callback.message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
case 'margin_type_cross':
|
case 'margin_type_cross':
|
||||||
|
await callback.message.answer(f"✅ Изменено: {data_settings['margin_type']} → Cross")
|
||||||
|
|
||||||
await rq.update_margin_type(id, 'Cross')
|
await rq.update_margin_type(id, 'Cross')
|
||||||
await main_settings_message(id, callback.message, state)
|
await main_settings_message(id, callback.message, state)
|
||||||
|
|
||||||
@@ -177,30 +196,40 @@ async def state_starting_quantity(message: Message, state):
|
|||||||
await state.update_data(starting_quantity = message.text)
|
await state.update_data(starting_quantity = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_main_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['starting_quantity'].isdigit():
|
if data['starting_quantity'].isdigit():
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['starting_quantity']} → {data['starting_quantity']}")
|
||||||
|
|
||||||
await rq.update_starting_quantity(message.from_user.id, data['starting_quantity'])
|
await rq.update_starting_quantity(message.from_user.id, data['starting_quantity'])
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
async def maximum_quantity_message(message, state):
|
async def maximum_quantity_message(message, state):
|
||||||
await state.set_state(update_main_settings.maximal_quantity)
|
await state.set_state(update_main_settings.maximal_quantity)
|
||||||
|
|
||||||
await message.edit_text("Введите <b>максимальное количество ставок:</b>", parse_mode='html', reply_markup=inline_markup.back_btn_list_settings_markup)
|
await message.edit_text("Введите <b>максимальное количество серии ставок:</b>", parse_mode='html', reply_markup=inline_markup.back_btn_list_settings_markup)
|
||||||
|
|
||||||
@router_main_settings.message(update_main_settings.maximal_quantity)
|
@router_main_settings.message(update_main_settings.maximal_quantity)
|
||||||
async def state_maximal_quantity(message: Message, state):
|
async def state_maximal_quantity(message: Message, state):
|
||||||
await state.update_data(maximal_quantity = message.text)
|
await state.update_data(maximal_quantity = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_main_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['maximal_quantity'].isdigit() and int(data['maximal_quantity']) <= 100:
|
if data['maximal_quantity'].isdigit() and int(data['maximal_quantity']) <= 100:
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['maximal_quantity']} → {data['maximal_quantity']}")
|
||||||
|
|
||||||
await rq.update_maximal_quantity(message.from_user.id, data['maximal_quantity'])
|
await rq.update_maximal_quantity(message.from_user.id, data['maximal_quantity'])
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: ваше значение ({data['maximal_quantity']}) или выше лимита (100) или вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
@@ -43,13 +43,18 @@ async def state_price_profit(message: Message, state):
|
|||||||
await state.update_data(price_profit = message.text)
|
await state.update_data(price_profit = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_risk_management_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['price_profit'].isdigit() and int(data['price_profit']) <= 100:
|
if data['price_profit'].isdigit() and int(data['price_profit']) <= 100:
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['price_profit']}% → {data['price_profit']}%")
|
||||||
|
|
||||||
await rq.update_price_profit(message.from_user.id, data['price_profit'])
|
await rq.update_price_profit(message.from_user.id, data['price_profit'])
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: ваше значение ({data['price_profit']}%) или выше лимита (100) или вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
async def price_loss_message(message, state):
|
async def price_loss_message(message, state):
|
||||||
@@ -64,13 +69,18 @@ async def state_price_loss(message: Message, state):
|
|||||||
await state.update_data(price_loss = message.text)
|
await state.update_data(price_loss = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_risk_management_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['price_loss'].isdigit() and int(data['price_loss']) <= 100:
|
if data['price_loss'].isdigit() and int(data['price_loss']) <= 100:
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['price_loss']}% → {data['price_loss']}%")
|
||||||
|
|
||||||
await rq.update_price_loss(message.from_user.id, data['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 main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: ваше значение ({data['price_loss']}%) или выше лимита (100) или вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
async def max_risk_deal_message(message, state):
|
async def max_risk_deal_message(message, state):
|
||||||
@@ -85,11 +95,16 @@ async def state_max_risk_deal(message: Message, state):
|
|||||||
await state.update_data(max_risk_deal = message.text)
|
await state.update_data(max_risk_deal = message.text)
|
||||||
|
|
||||||
data = await state.get_data()
|
data = await state.get_data()
|
||||||
|
data_settings = await rq.get_user_risk_management_settings(message.from_user.id)
|
||||||
|
|
||||||
if data['max_risk_deal'].isdigit() and int(data['max_risk_deal']) <= 100:
|
if data['max_risk_deal'].isdigit() and int(data['max_risk_deal']) <= 100:
|
||||||
|
await message.answer(f"✅ Изменено: {data_settings['max_risk_deal']}% → {data['max_risk_deal']}%")
|
||||||
|
|
||||||
await rq.update_max_risk_deal(message.from_user.id, data['max_risk_deal'])
|
await rq.update_max_risk_deal(message.from_user.id, data['max_risk_deal'])
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
||||||
|
|
||||||
await state.clear()
|
await state.clear()
|
||||||
else:
|
else:
|
||||||
|
await message.answer(f'⛔️ Ошибка: ваше значение ({data['max_risk_deal']}%) или выше лимита (100) или вы вводите неверные символы')
|
||||||
|
|
||||||
await main_settings_message(message.from_user.id, message, state)
|
await main_settings_message(message.from_user.id, message, state)
|
Reference in New Issue
Block a user