07.4.3.17 — Unified Active Screen Lifecycle

This commit is contained in:
2026-05-09 16:25:03 +03:00
parent e97dcd372b
commit 3181ac680c
17 changed files with 1032 additions and 424 deletions

View File

@@ -97,6 +97,39 @@ class AutoTradeRunner:
cls._render_markup = None
cls._last_text = None
@classmethod
async def detach_screen(
cls,
*,
delete_message: bool = False,
bot: Bot | None = None,
chat_id: int | None = None,
keep_message_id: int | None = None,
) -> None:
if (
delete_message
and bot is not None
and cls._chat_id is not None
and cls._message_id is not None
and cls._chat_id == chat_id
and cls._message_id != keep_message_id
):
try:
await bot.delete_message(
chat_id=cls._chat_id,
message_id=cls._message_id,
)
except Exception:
pass
cls._bot = None
cls._chat_id = None
cls._message_id = None
cls._render_text = None
cls._render_markup = None
cls._current_screen = None
cls._last_text = None
@classmethod
def set_current_screen(cls, screen: str) -> None:
cls._current_screen = screen
@@ -594,10 +627,6 @@ class AutoTradeRunner:
@classmethod
async def _refresh_screen(cls, *, force: bool = False) -> None:
if cls._current_screen != "auto":
cls._log_refresh_skip("current_screen_not_auto")
return
now = time.monotonic()
if now < cls._retry_after_until:

View File

@@ -74,6 +74,39 @@ class DebugTradeRunner:
cls._render_markup = None
cls._last_text = None
@classmethod
async def detach_screen(
cls,
*,
delete_message: bool = False,
bot: Bot | None = None,
chat_id: int | None = None,
keep_message_id: int | None = None,
) -> None:
if (
delete_message
and bot is not None
and cls._chat_id is not None
and cls._message_id is not None
and cls._chat_id == chat_id
and cls._message_id != keep_message_id
):
try:
await bot.delete_message(
chat_id=cls._chat_id,
message_id=cls._message_id,
)
except Exception:
pass
cls._bot = None
cls._chat_id = None
cls._message_id = None
cls._render_text = None
cls._render_markup = None
cls._current_screen = None
cls._last_text = None
@classmethod
def set_current_screen(cls, screen: str) -> None:
cls._current_screen = screen