1
0
forked from kodorvan/stcs

Added trigger function

This commit is contained in:
algizn97
2025-08-29 11:42:55 +05:00
parent f09fe1d70b
commit f4ff128236
2 changed files with 90 additions and 32 deletions

View File

@@ -1,4 +1,4 @@
from aiogram import Router
from aiogram import Router, F
import app.telegram.Keyboards.inline_keyboards as inline_markup
import app.telegram.Keyboards.reply_keyboards as reply_markup
@@ -17,7 +17,8 @@ class update_main_settings(StatesGroup):
margin_type = State()
martingale_factor = State()
starting_quantity = State()
maximal_quantity = State()
maximal_quantity = State()
switch_mode_enabled = State()
async def reg_new_user_default_main_settings(id, message):
tg_id = id
@@ -34,6 +35,8 @@ async def main_settings_message(id, message, state):
await message.answer(f"""<b>Основные настройки</b>
<b>- Режим торговли:</b> {data['trading_mode']}
<b>- Режим свитч:</b> {data['switch_mode_enabled']}
<b>- Состояние свитча:</b> {data['switch_state']}
<b>- Тип маржи:</b> {data['margin_type']}
<b>- Размер кредитного плеча:</b> х{data['size_leverage']}
<b>- Начальная ставка:</b> {data['starting_quantity']}
@@ -52,8 +55,6 @@ async def trading_mode_message(message, state):
<b>Шорт</b> — метод продажи активов, взятых в кредит, чтобы получить прибыль от снижения цены.
<b>Смарт</b> — автоматизированный режим, который подбирает оптимальную стратегию в зависимости от текущих рыночных условий.
<b>Свитч</b> — динамическое переключение между торговыми режимами для максимизации эффективности.
<em>Выберите ниже для изменений:</em>
""", parse_mode='html', reply_markup=inline_markup.trading_mode_markup)
@@ -79,12 +80,7 @@ async def state_trading_mode(callback: CallbackQuery, state):
await main_settings_message(id, callback.message, state)
await state.clear()
case 'trade_mode_switch':
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Switch")
await rq.update_trade_mode_user(id, 'Switch')
await main_settings_message(id, callback.message, state)
await state.clear()
case 'trade_mode_smart':
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Smart")
await rq.update_trade_mode_user(id, 'Smart')
@@ -94,11 +90,63 @@ async def state_trading_mode(callback: CallbackQuery, state):
except Exception as e:
print(f"error: {e}")
async def switch_mode_enabled_message(message, state):
await state.set_state(update_main_settings.switch_mode_enabled)
await message.edit_text(
"""<b>Свитч</b> — динамическое переключение между торговыми режимами для максимизации эффективности.
<em>Выберите ниже для изменений:</em>""", parse_mode='html', reply_markup=inline_markup.buttons_on_off_markup_for_switch)
@router_main_settings.callback_query(lambda c: c.data in ["clb_on_switch", "clb_off_switch"])
async def state_switch_mode_enabled(callback: CallbackQuery, state):
await callback.answer()
tg_id = callback.from_user.id
val = "Включить" if callback.data == "clb_on_switch" else "Выключить"
if val == "Включить":
await rq.update_switch_mode_enabled(tg_id, "Включено")
await callback.message.answer(f"Включено")
await main_settings_message(tg_id, callback.message, state)
else:
await rq.update_switch_mode_enabled(tg_id, "Выключено")
await callback.message.answer(f"Выключено")
await main_settings_message(tg_id, callback.message, state)
await state.clear()
@router_main_settings.callback_query(lambda c: c.data in ["clb_switch_state"])
async def state_switch_mode_enabled(callback: CallbackQuery):
await callback.answer()
await callback.message.answer("Выберите состояние свитча:", reply_markup=inline_markup.switch_state_markup)
@router_main_settings.callback_query(lambda c: c.data in ["clb_long_switch", "clb_short_switch"])
async def state_switch_mode_enabled(callback: CallbackQuery, state):
await callback.answer()
tg_id = callback.from_user.id
val = "Long" if callback.data == "clb_long_switch" else "Short"
if val == "Long":
await rq.update_switch_state(tg_id, "Long")
await callback.message.answer(f"Состояние свитча: {val}")
await main_settings_message(tg_id, callback.message, state)
else:
await rq.update_switch_state(tg_id, "Short")
await callback.message.answer(f"Состояние свитча: {val}")
await main_settings_message(tg_id, callback.message, state)
await state.clear()
async def size_leverage_message (message, state):
await state.set_state(update_main_settings.size_leverage)
await message.edit_text("Введите размер <b>кредитного плеча</b> (от 1 до 100): ", parse_mode='html', reply_markup=inline_markup.back_btn_list_settings_markup)
@router_main_settings.message(update_main_settings.size_leverage)
async def state_size_leverage(message: Message, state):
await state.update_data(size_leverage = message.text)