Wiki
猫Table of Contents
- MessageContext RU
MessageContext RU
English version: MessageContext
Это краткая русскоязычная версия страницы про MessageContext. Полная и наиболее актуальная страница: MessageContext.
Что такое MessageContext
MessageContext — это объект времени выполнения, который приходит в:
- обработчики команд;
- обработчики данных callback;
- middleware;
- обработчики обновлений.
Через него ты получаешь:
- входящее обновление;
- текущее сообщение и отправителя;
- разобранные аргументы команд и callback;
- вспомогательные методы для reply, edit, delete, callback, drafts и localization.
Полную матрицу маршрутизации и гарантий по полям MessageContext для разных update types смотри в Update-Routing-Model-RU.
Поля, которые используются чаще всего
Text
ctx.Text — это текст после имени команды.
Пример:
- вход:
/echo hello world - команда:
echo ctx.Text == "hello world"
Args
ctx.Args — разбитая на токены версия ctx.Text.
Пример:
ctx.Text == "hello world"ctx.Args == []string{"hello", "world"}
Msg
ctx.Msg указывает на текущее Telegram message, если у текущего update оно есть.
Полезно для:
- chat ID;
- thread ID;
- доступа к metadata исходного сообщения.
From и FromID
ctx.From — текущий user, если он есть.
ctx.FromID — тот же ID, но уже вынесенный для удобства.
Основные вспомогательные методы
Answer(...)
Базовый вспомогательный метод для обычного текстового ответа.
AnswerLong(...)
Используется, когда текст может превысить Telegram message limit.
Это отдельный API специально для явной семантики многочастного ответа.
Keyboard(...)
Отправляет текст вместе с inline keyboard.
KeyboardLong(...)
Подходит для длинного текста, где клавиатура должна остаться на последней части.
Markdown-вспомогательные методы
Есть ...Markdown варианты:
AnswerMarkdown(...)KeyboardMarkdown(...)EditCallbackMarkdown(...)
Важно:
- пользовательский ввод нужно экранировать через
EscapeMarkdownV2(...).
Вспомогательные методы для edit и delete
Если у тебя уже есть AnswerMessage, его можно:
- редактировать;
- удалять;
- менять caption.
Это удобно для пошагового UX вроде “Working... -> Done”.
Callback-специфичные вспомогательные методы
В потоке callback особенно полезны:
EditCallback(...)AnswerCallback()AnswerCallbackText(...)AnswerCallbackAlert(...)AnswerCallbackURL(...)CallbackDelete()
Они покрывают самые частые callback-сценарии без ручного хождения в tgapi.
Rich-сообщения
RichAnswer(...) и RichAnswerKeyboard(...) валидируют и отправляют input rich-блоки Bot API 10.2, собранные через tgrich:
ctx.RichAnswer(
tgrich.H1(tgrich.Text("Отчёт")),
tgrich.P(tgrich.Bold(tgrich.Text("всё работает"))),
)
Все конструкторы, загрузка медиа, валидация и приёмная сторона описаны на странице Rich-Messages-RU.
Drafts и localization
У MessageContext есть:
NewDraft()NewDraftMarkdown()Translate(key)
Это делает MessageContext основной удобной точкой доступа почти для всего кода обработчиков.
NewInlineKeyboard(...)
Внутри обработчиков keyboard обычно удобнее всего строить так:
kb := ctx.NewInlineKeyboard(2)
Этот builder автоматически наследует текущую политику данных callback из контекста.
Что читать дальше
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