MTProto egress is intermittent (DPI flaps), not blocked: the publisher client
can read-time-out while the bot finishes the upload in a later good window, so a
client timeout is not a delivery failure. The runner previously wrapped the
publisher call in a hard 1800s timeout and failed the whole release the moment
it fired — even though the bot then delivered (this is what "failed" v0.6.6's
TG step while the post actually went out).
publish_telegram now:
- runs the publisher with ZAPRET_PUBLISH_TIMEOUT (default 7200s), matching the
client's own read timeout so the client normally returns on its own;
- on a client TimeoutExpired, polls telegram_has_version for up to
ZAPRET_PUBLISH_POLL (default 1800s) before declaring failure, so a delivery
that lands after the client gave up is recognized.
Runner-side counterpart to the client-side timeout raise done in the ZapretGPT
publisher. Covered by PublishTelegramTimeoutTests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HAjvZYzPW2yTtToKJXGdbS