Как добавить кнопки в пост Telegram
Добавить кнопки в пост Telegram-канала можно только через бота — стандартные публикации от имени канала не поддерживают интерактивные элементы. С помощью inline-клавиатур Bot API вы можете прикрепить к сообщению кликабельные URL-кнопки, кнопки обратного вызова (callback) и другие интерактивные элементы, которые отображаются прямо под текстом поста.
Какие бывают кнопки в Telegram
Telegram предлагает два типа клавиатур для ботов, но для канальных постов подходит только один.
Inline-кнопки (инлайн-клавиатура)
Inline-кнопки появляются непосредственно под сообщением и остаются прикреплёнными к нему. Именно их вы видите на постах каналов — «Читать далее», «Перейти на сайт», «👍 Нравится» и подобные. Они создаются через объект InlineKeyboardMarkup в Bot API.
Основные типы inline-кнопок:
- URL-кнопки — открывают ссылку в браузере или внутри Telegram
- Callback-кнопки — отправляют данные боту (используются для реакций, голосований, навигации)
- Switch inline-кнопки — предлагают пользователю выбрать чат для inline-запроса
- Login-кнопки — аутентификация через Telegram Login Widget
- Web App-кнопки — открывают Telegram Mini App
Reply-клавиатура
Reply-клавиатура появляется внизу экрана вместо стандартной клавиатуры. Она не работает в каналах — предназначена только для личных и групповых чатов. Не путайте её с inline-кнопками.
Как добавить кнопки: пошаговая инструкция
Шаг 1: Создайте бота и подключите его к каналу
Если у вас ещё нет бота для управления каналом:
- Откройте @BotFather в Telegram
- Отправьте команду
/newbotи следуйте инструкциям — придумайте имя и username - Скопируйте API-токен (например,
7123456789:AAH...) - Перейдите в настройки канала → Администраторы → добавьте бота с правом публикации сообщений
Без назначения бота администратором он не сможет отправлять и редактировать сообщения в канале.
Шаг 2: Отправьте сообщение с кнопками через API
Используйте метод sendMessage (или sendPhoto, sendVideo и другие) с параметром reply_markup. Пример через curl:
curl -X POST "https://api.telegram.org/bot<ВАШ_ТОКЕН>/sendMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "@vash_kanal",
"text": "Вышла новая статья в блоге!",
"reply_markup": {
"inline_keyboard": [
[
{"text": "📖 Читать статью", "url": "https://example.com/article"},
{"text": "🌐 Сайт", "url": "https://example.com"}
],
[
{"text": "👍 Нравится", "callback_data": "like_post_42"}
]
]
}
}'
Каждый вложенный массив — это одна строка кнопок. В примере выше первая строка содержит две кнопки рядом, а вторая — одну кнопку по центру.
Шаг 3: Добавьте кнопки к уже опубликованному посту
Опубликовали пост без кнопок? Используйте метод editMessageReplyMarkup, чтобы прикрепить кнопки постфактум:
curl -X POST "https://api.telegram.org/bot<ВАШ_ТОКЕН>/editMessageReplyMarkup" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "@vash_kanal",
"message_id": 1234,
"reply_markup": {
"inline_keyboard": [
[{"text": "🔗 Перейти на сайт", "url": "https://example.com"}]
]
}
}'
Для этого вам нужен message_id — бот получает его в ответе при отправке сообщения.
Добавление кнопок без программирования
Не все хотят работать с API напрямую. Существуют удобные инструменты, которые упрощают процесс.
ControllerBot (@ControllerBot)
Один из самых популярных ботов для управления каналами в русскоязычном Telegram:
- Подключите канал к @ControllerBot, следуя инструкциям бота
- Создайте новый пост внутри бота
- Выберите опцию «Добавить URL-кнопку» в редакторе поста
- Введите текст кнопки и ссылку
- Опубликуйте — бот отправит пост в канал с прикреплёнными кнопками
ControllerBot также поддерживает отложенную публикацию, реакции и аналитику — удобное решение для каналов с 500–50 000 подписчиков, где нет ресурсов на собственного бота.
Другие популярные боты
@LivegramBot, @PostBot и @BotStar предлагают встроенные редакторы кнопок. Логика примерно одинаковая: составляете сообщение, нажимаете «Добавить кнопку», указываете текст и URL, затем публикуете или планируете.
Специальный синтаксис для кнопок
Некоторые инструменты поддерживают сокращённый синтаксис прямо в тексте сообщения. Например, в ControllerBot:
[Текст кнопки](buttonurl://https://example.com)
Синтаксис различается в зависимости от инструмента — всегда сверяйтесь с документацией конкретного бота.
Правила компоновки и дизайна кнопок
Telegram допускает до 8 кнопок в одной строке и до 100 кнопок на одно сообщение, но на практике разумные пределы значительно ниже.
Рекомендуемые схемы расположения
- 1 кнопка в строке — лучший вариант для основного призыва к действию, кнопка растягивается на всю ширину
- 2–3 кнопки в строке — подходит для связанных опций (ссылки на соцсети, варианты ответа)
- Комбинированные строки — одна широкая кнопка сверху, несколько мелких кнопок ниже
Длина текста кнопки
Telegram не устанавливает жёсткий лимит на количество символов, но длинный текст обрезается на маленьких экранах. Оптимально — 1–4 слова на кнопку. Например, «📖 Читать» лучше, чем «Нажмите здесь, чтобы прочитать нашу новую статью полностью».
Обработка callback-кнопок
URL-кнопки работают просто — открывают ссылку. Callback-кнопки требуют, чтобы ваш бот слушал и обрабатывал входящие callback_query.
Когда пользователь нажимает callback-кнопку, Telegram отправляет боту данные из поля callback_data. Бот должен:
- Обработать данные (например, увеличить счётчик лайков)
- Вызвать
answerCallbackQuery, чтобы убрать индикатор загрузки - При необходимости обновить сообщение или кнопки через
editMessageTextилиeditMessageReplyMarkup
Именно так работают кнопки реакций, опросы и навигационные меню в канальных постах.
# Пример на Python с библиотекой python-telegram-bot
async def button_handler(update, context):
query = update.callback_query
await query.answer() # Убираем индикатор загрузки
if query.data.startswith("like_"):
# Обновляем счётчик, редактируем сообщение
await query.edit_message_reply_markup(reply_markup=updated_keyboard)
Советы и лайфхаки
- Ограничьтесь 1–2 кнопками на пост. Посты с пятью и более кнопками выглядят перегруженными — CTR каждой кнопки падает. Канал «Подслушано IT» с 300 000 подписчиков использует максимум две кнопки на пост, и это работает.
- Используйте глаголы действия. «Читать статью», «Вступить в чат», «Скачать PDF» работают лучше размытых «Подробнее» или «Нажми сюда».
- Ставьте главную кнопку первой. Верхняя левая позиция получает больше всего нажатий — размещайте основной CTA именно там.
- Добавляйте эмодзи умеренно. Один релевантный эмодзи (📖, 🔗, ▶️) повышает заметность кнопки, но два-три подряд ухудшают читаемость.
- Тестируйте на мобильных устройствах. Более 80% пользователей Telegram сидят с телефона. Проверяйте, что строки кнопок не обрезаются на маленьких экранах.
-
Отслеживайте клики через UTM-метки. Telegram не даёт аналитику по нажатиям на URL-кнопки. Добавляйте UTM-параметры к ссылкам или используйте сокращатели с аналитикой (например,
vk.ccилиclck.ru). - Дублируйте ссылки в тексте поста. Если вы публикуете контент канала на веб-платформах вроде tgchannel.space, учитывайте, что inline-кнопки не отображаются в веб-версии — важные ссылки должны быть и в самом тексте.
Частые ошибки
Ошибка 1: Попытка добавить кнопки без бота
Почему это неправильно: стандартные посты, отправленные от имени канала, не поддерживают inline-клавиатуры. Это ограничение самого Telegram — обойти его невозможно.
Как избежать: всегда используйте бота-администратора для публикации постов с кнопками. Бот может публиковать от своего имени или через метод sendMessage с указанием chat_id канала.
Ошибка 2: Callback-кнопки при неработающем боте
Почему это неправильно: когда пользователь нажимает callback-кнопку, а бот выключен, он видит бесконечный спиннер загрузки, а затем ошибку. Это портит впечатление о канале.
Как избежать: для простых ссылок всегда используйте URL-кнопки — они работают без запущенного сервера. Callback-кнопки оставьте только для функций, где бот гарантированно работает 24/7 (размещён на VPS или в облаке).
Ошибка 3: Слишком много кнопок на одном посте
Почему это неправильно: стена из 6+ кнопок перегружает читателя и размывает эффективность каждой из них. Статистика показывает, что CTR отдельной кнопки падает на 15–20% с каждой дополнительной кнопкой.
Как избежать: ограничивайтесь 1–3 кнопками на пост. Если нужно больше вариантов — дайте ссылку на отдельную страницу или используйте следующее сообщение.
Ошибка 4: Одинаковый callback_data для разных действий
Почему это неправильно: бот не сможет различить, какая кнопка была нажата, и выполнит неверное действие.
Как избежать: всегда используйте уникальные строки callback_data, включающие тип действия и идентификатор (например, like_42, next_page_3, vote_option_a).
Часто задаваемые вопросы
Можно ли добавить кнопки к сообщению, отправленному от имени канала (не через бота)?
Нет. Inline-клавиатуры поддерживаются только для сообщений, отправленных ботом. Если вы публиковали посты от имени канала, придётся переключиться на публикацию через бота.
Сохраняются ли кнопки при пересылке сообщения?
URL-кнопки сохраняются при пересылке. Callback-кнопки визуально отображаются, но работать будут только если оригинальный бот запущен и обрабатывает запросы.
Можно ли добавить кнопки к постам с фото или видео?
Да. Все типы медиа-сообщений (sendPhoto, sendVideo, sendDocument и другие) поддерживают параметр reply_markup для inline-клавиатур. Кнопки появляются под медиафайлом точно так же, как под текстовым постом.
Можно ли изменить или удалить кнопки после публикации?
Да. Используйте метод editMessageReplyMarkup для обновления набора кнопок в любое время. Чтобы удалить все кнопки, передайте пустой массив: "inline_keyboard": [].
Сколько кнопок максимально можно добавить?
Технический лимит Telegram — 100 кнопок на сообщение и 8 в одной строке. Но для удобства пользователей рекомендуется не превышать 2–3 строки с 1–3 кнопками в каждой.