07.4.3.17 — Unified Active Screen Lifecycle
This commit is contained in:
@@ -13,6 +13,7 @@ from src.telegram.handlers.auto.ui import (
|
||||
is_auto_configured,
|
||||
)
|
||||
from src.telegram.handlers.system import open_auto_settings
|
||||
from src.telegram.live.active_screen import ActiveScreenManager
|
||||
from src.trading.auto.runner import AutoTradeRunner
|
||||
from src.trading.auto.service import AutoTradeService
|
||||
|
||||
@@ -41,6 +42,11 @@ async def render_auto_screen(
|
||||
render_text=build_auto_text,
|
||||
render_markup=auto_keyboard,
|
||||
)
|
||||
|
||||
ActiveScreenManager.register(
|
||||
screen="auto",
|
||||
message=target_message,
|
||||
)
|
||||
return
|
||||
|
||||
sent_message = await target_message.answer(text, reply_markup=auto_keyboard())
|
||||
@@ -53,17 +59,40 @@ async def render_auto_screen(
|
||||
render_markup=auto_keyboard,
|
||||
)
|
||||
|
||||
ActiveScreenManager.register(
|
||||
screen="auto",
|
||||
message=sent_message,
|
||||
)
|
||||
|
||||
|
||||
async def _prepare_auto_from_message(message: Message) -> None:
|
||||
await ActiveScreenManager.prepare_new_screen(
|
||||
screen="auto",
|
||||
bot=message.bot,
|
||||
chat_id=message.chat.id,
|
||||
)
|
||||
|
||||
|
||||
async def _prepare_auto_from_callback(callback: CallbackQuery) -> bool:
|
||||
if callback.message is None:
|
||||
await callback.answer("Сообщение не найдено", show_alert=True)
|
||||
return False
|
||||
|
||||
await ActiveScreenManager.prepare_new_screen(
|
||||
screen="auto",
|
||||
bot=callback.message.bot,
|
||||
chat_id=callback.message.chat.id,
|
||||
keep_message_id=callback.message.message_id,
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
@router.message(F.text.in_({"🤖 Автоторговля", "🤖 Авто"}))
|
||||
async def open_auto(message: Message, state: FSMContext) -> None:
|
||||
await state.clear()
|
||||
|
||||
AutoTradeRunner.set_current_screen("auto")
|
||||
|
||||
await AutoTradeRunner.delete_registered_screen(
|
||||
bot=message.bot,
|
||||
chat_id=message.chat.id,
|
||||
)
|
||||
await _prepare_auto_from_message(message)
|
||||
|
||||
await render_auto_screen(message, edit_mode=False)
|
||||
|
||||
@@ -72,11 +101,9 @@ async def open_auto(message: Message, state: FSMContext) -> None:
|
||||
async def open_auto_from_callback(callback: CallbackQuery, state: FSMContext) -> None:
|
||||
await state.clear()
|
||||
|
||||
if callback.message is None:
|
||||
await callback.answer("Сообщение не найдено", show_alert=True)
|
||||
if not await _prepare_auto_from_callback(callback):
|
||||
return
|
||||
|
||||
AutoTradeRunner.set_current_screen("auto")
|
||||
await render_auto_screen(callback.message, edit_mode=True)
|
||||
await callback.answer()
|
||||
|
||||
@@ -99,10 +126,10 @@ async def auto_start(callback: CallbackQuery) -> None:
|
||||
|
||||
_, message = service.start()
|
||||
|
||||
AutoTradeRunner.set_current_screen("auto")
|
||||
AutoTradeRunner.start()
|
||||
|
||||
if callback.message is not None:
|
||||
await _prepare_auto_from_callback(callback)
|
||||
await render_auto_screen(callback.message, edit_mode=True)
|
||||
|
||||
await callback.answer(message)
|
||||
@@ -126,10 +153,10 @@ async def auto_observe(callback: CallbackQuery) -> None:
|
||||
|
||||
_, message = service.observe()
|
||||
|
||||
AutoTradeRunner.set_current_screen("auto")
|
||||
AutoTradeRunner.start()
|
||||
|
||||
if callback.message is not None:
|
||||
await _prepare_auto_from_callback(callback)
|
||||
await render_auto_screen(callback.message, edit_mode=True)
|
||||
|
||||
await callback.answer(message)
|
||||
@@ -143,6 +170,7 @@ async def auto_stop(callback: CallbackQuery) -> None:
|
||||
AutoTradeRunner.stop()
|
||||
|
||||
if callback.message is not None:
|
||||
await _prepare_auto_from_callback(callback)
|
||||
await render_auto_screen(callback.message, edit_mode=True)
|
||||
|
||||
await callback.answer(message)
|
||||
Reference in New Issue
Block a user