Takopi: Streaming Drafts (sendMessageDraft)
Status
In planning. Feature branch not yet created.
Overview
Use Telegram Bot API method sendMessageDraft (API 9.3, December 2025) to stream response text to the user as Claude generates it — like ChatGPT.
API Limitation
sendMessageDraft works only for bots with forum topic mode enabled.
Architecture
- Progress message (existing) — list of actions + cancel
- Draft (new) — partial response text, streamed in parallel
- Feature flag:
streaming_drafts = falsein[transports.telegram]
Key Changes
- New event type:
TextDeltaEventin core - Claude runner:
--include-partial-messagesto receivestream_eventwithtext_delta - New Telegram API method:
sendMessageDraft(chat_id, draft_id, text, ...) StreamingDraftEditsclass inrunner_bridge.py— similar toProgressEdits- Graceful fallback: after 3 API errors — switch to normal mode
sendMessageDraft Parameters
chat_id(int) — target private chatdraft_id(int, non-zero) — unique ID, same ID = animated updatetext(str, 1-4096) — textmessage_thread_id(int, optional)parse_mode,entities(optional)- Returns:
True
Files (12 total)
model.py,events.py— TextDeltaEventrunners/claude.py— —include-partial-messages + emittelegram/outbox.py— DRAFT_PRIORITYtelegram/client_api.py,client.py— send_message_draftsettings.py— streaming_drafts flagrunner_bridge.py— StreamingDraftEditsprogress.py— ignore TextDeltaEventtelegram/bridge.py,backend.py,commands/executor.py— wire config
Related Notes
- takopi-development — Takopi development
- takopi-commands — bot commands