Wiki
猫Drafts RU
English version: Drafts
Это краткая русскоязычная версия страницы про черновики. Полная и наиболее актуальная страница: Drafts.
Когда нужны черновики
Drafts полезны, когда ответ:
- собирается постепенно;
- должен быть отредактирован до финальной отправки;
- выгодно держать как временное состояние, а не отправлять куски сразу.
Для обычного one-shot ответа чаще проще использовать Answer(...) или AnswerLong(...).
Главные части модели
Есть две основные сущности:
DraftDraftProvider
Внутри handler'а самый удобный вход:
ctx.NewDraft()ctx.NewDraftMarkdown()
Базовый пример
draft := ctx.NewDraft()
draft.Text("Line 1")
draft.Text("Line 2")
draft.Flush()
Такой подход удобен, когда текст строится несколькими шагами.
Lifecycle draft'а
Типичный поток такой:
- создать draft;
- добавлять текст и настройки;
- при необходимости делать
Push(...)как промежуточную отправку; - завершить через
Flush(); - при необходимости удалить через
Delete().
Push(...) и Flush()
Push(...) полезен, когда нужно отправить промежуточное состояние, но draft остается рабочим.
Flush():
- отправляет финальное состояние;
- очищает pending state у draft.
FlushAll()
У provider есть FlushAll().
Это best-effort операция:
- провайдер пытается отправить все ожидающие черновики;
- ошибки одного draft не отменяют попытки для остальных.
IDs и стратегии генерации
У draft provider есть стратегия ID generation.
Обычно по умолчанию используется random-подход.
Если нужны более предсказуемые или внешне совместимые ID, можно поставить свой provider.
Markdown-вариант
NewDraftMarkdown() включает MarkdownV2.
Как и в остальных Markdown-вспомогательных методах, пользовательский ввод надо экранировать отдельно.
Что читать дальше
Navigation
Start here
Runtime and Architecture
- Bot-Lifecycle
- Webhook-Runtime
- Middleware
- Runners
- Error-Handling
- Logging
- Update-Routing-Model
- Policies
- Scenes
Interaction and Telegram API
- Inline-Keyboards-and-Payloads
- Auto-Generated-Commands
- Drafts
- Rich-Messages
- Localization
- Rate-Limiting
- tgapi-Overview