07.4.3.18.2 — Runtime Notification Migration

This commit is contained in:
2026-05-09 21:46:58 +03:00
parent 7e5ecc2ed9
commit c3cf446143
9 changed files with 665 additions and 370 deletions

View File

@@ -103,6 +103,8 @@ async def _render_risk_screen(callback: CallbackQuery) -> None:
await callback.answer("Сообщение не найдено", show_alert=True)
return
_unregister_auto_screen_message(callback)
await callback.message.edit_text(
_risk_text(),
reply_markup=_risk_keyboard(),
@@ -164,6 +166,16 @@ async def _remember_risk_screen(callback: CallbackQuery, state: FSMContext) -> N
)
def _unregister_auto_screen_message(callback: CallbackQuery) -> None:
if callback.message is None:
return
AutoTradeRunner.unregister_screen(
chat_id=callback.message.chat.id,
message_id=callback.message.message_id,
)
def _parse_positive_or_none(raw_text: str | None) -> float | None:
value_text = (raw_text or "").strip().replace(",", ".")
@@ -229,6 +241,7 @@ async def open_auto_risk_from_settings(callback: CallbackQuery, state: FSMContex
@router.callback_query(F.data == "auto:risk:set_sl")
async def ask_stop_loss(callback: CallbackQuery, state: FSMContext) -> None:
AutoTradeRunner.set_current_screen("auto_risk")
_unregister_auto_screen_message(callback)
await state.set_state(AutoRiskStates.waiting_stop_loss)
await _remember_risk_screen(callback, state)
@@ -247,6 +260,7 @@ async def ask_stop_loss(callback: CallbackQuery, state: FSMContext) -> None:
@router.callback_query(F.data == "auto:risk:set_tp")
async def ask_take_profit(callback: CallbackQuery, state: FSMContext) -> None:
AutoTradeRunner.set_current_screen("auto_risk")
_unregister_auto_screen_message(callback)
await state.set_state(AutoRiskStates.waiting_take_profit)
await _remember_risk_screen(callback, state)
@@ -265,6 +279,7 @@ async def ask_take_profit(callback: CallbackQuery, state: FSMContext) -> None:
@router.callback_query(F.data == "auto:risk:set_ml")
async def ask_max_loss(callback: CallbackQuery, state: FSMContext) -> None:
AutoTradeRunner.set_current_screen("auto_risk")
_unregister_auto_screen_message(callback)
await state.set_state(AutoRiskStates.waiting_max_loss)
await _remember_risk_screen(callback, state)
@@ -284,6 +299,7 @@ async def ask_max_loss(callback: CallbackQuery, state: FSMContext) -> None:
async def reset_risk(callback: CallbackQuery, state: FSMContext) -> None:
await state.clear()
AutoTradeRunner.set_current_screen("auto_risk")
_unregister_auto_screen_message(callback)
service = AutoTradeService()
service.set_stop_loss_percent(None)