Задача
Перевести tg_messenger на новый пакет и удалить его форк flood-логики.
Что удаляется в мессенджере
tg_messenger/core/flood.py прямо объявляет себя копией:
Slim, dependency-free FloodWait handling vendored from the main project…
Mirrors the discipline of src/telegram/flood_wait.py in tg_content_factory.
Константы (60 с / 120 с) скопированы дословно. При этом форк строго слабее
оригинала: нет персистентности, нет автостопа, нет наблюдаемости,
обёртка ретрая применяется вручную на ~30 местах и уже имеет пропуск
(core/client.py:494 — iter_messages вызывается сырым).
Кандидаты на удаление после перехода:
Что остаётся в мессенджере
Живое общение: listen*(), MessageStore, AgentRunner, TUI, web-чат,
ghostwrite, модерация — то есть верхний слой, ради которого проект существует.
Риски
- Мессенджер версии 0.1.0, без тегов и changelog — перед изменениями
завести версионирование, иначе фабрика (которая стоит на editable-чекауте)
сломается молча.
core/client.py — 1080 строк, StandaloneTelegramClient завязан на свою
модель подключения (external_session, client_factory). Замена внутренностей
на пакет — не механическая, нужен дизайн.
- Мессенджер остаётся одноаккаунтным. Пул, ротация и лизинг в пакет
не переезжают (остаются в фабрике) — не пытаться их сюда протащить.
Acceptance Criteria
Контекст
Этап 1.6 эпика #1416, финал переезда. Зависит от 1.5.
Затрагивает #1148 (обмен session string) — сверить.
Задача
Перевести
tg_messengerна новый пакет и удалить его форк flood-логики.Что удаляется в мессенджере
tg_messenger/core/flood.pyпрямо объявляет себя копией:Константы (60 с / 120 с) скопированы дословно. При этом форк строго слабее
оригинала: нет персистентности, нет автостопа, нет наблюдаемости,
обёртка ретрая применяется вручную на ~30 местах и уже имеет пропуск
(
core/client.py:494—iter_messagesвызывается сырым).Кандидаты на удаление после перехода:
core/flood.py— заменяется пакетомcore/ratelimit.py— не удалять слепо: егоTokenBucketэто тот самыйглобальный потолок, который переезжает в пакет через feat(telegram): глобальный потолок исходящих на процесс — per-account лимиты не видят суммарный залп #1417. Сверить, что
функциональность не потеряна.
Что остаётся в мессенджере
Живое общение:
listen*(),MessageStore,AgentRunner, TUI, web-чат,ghostwrite, модерация — то есть верхний слой, ради которого проект существует.Риски
завести версионирование, иначе фабрика (которая стоит на editable-чекауте)
сломается молча.
core/client.py— 1080 строк,StandaloneTelegramClientзавязан на своюмодель подключения (
external_session,client_factory). Замена внутренностейна пакет — не механическая, нужен дизайн.
не переезжают (остаются в фабрике) — не пытаться их сюда протащить.
Acceptance Criteria
core/flood.pyудалён; функциональность не потеряна.флуда, автостоп (breaker), наблюдаемость. Ротацию аккаунтов НЕ получает —
он одноаккаунтный, пул остаётся в фабрике.
pip install, один аккаунт, своё хранилище. Явный тест/прогон.пакета.
Контекст
Этап 1.6 эпика #1416, финал переезда. Зависит от 1.5.
Затрагивает #1148 (обмен session string) — сверить.