Содержание
Многие пользователи мессенджера обращают внимание на кнопки в Телеграм под постами. Благодаря им получается выразить отношение к определенной записи. Но в стандартном наборе функций такого нет. Поэтому востребованным остается вопрос – как их сделать и вставить в свое послание.
Типы встроенных кнопок в Telegram
Клавиатура Telegram, расположенная в ряд в строке под сообщением, подвязывается к каждой конкретной новости и позволяет ее динамически видоизменять. Чтобы их добавлять, используется специальный бот. На сегодняшний день существует 3 типа кнопок. Рассмотрим подробно каждый из них.
URL-кнопки
URL-кнопки в Телеграм.
Исходя из названия, становится понятно, что они применяются для перенаправления читателя по прямой ссылке на другой канал или сайт. Юзер получает об этом преду-преждение.
У них есть соответствующий ярлык, расположенный справа экрана в углу.
Switch-кнопки
Такие кнопки в телеграм-боте используют с целью перехода на другой чат с непосредственной активацией общения с программой. Чтобы подключить его вручную, можно просто прописать «@название бота». Но применение данного вида клавиш делает всю работу в автоматическом режиме, позволяя существенно сэкономить время.
Для создания переключателя указывается «switch_inline_query». Аргумент может оставаться пустым или же иметь какой-то текст.
Callback-кнопки
Этот вид иконок считается самым интересным в Телеграм. Они имеют обратную связь и нужны для динамического обновления поста без засорения ленты и располагаются в модальном окне или верхней части экрана.
Такие телеграм-бот кнопки применяют для того, чтобы просматривать слишком длинные записи, делать календарь с возможностью добавлять уведомления по определенной дате.
Работа с ControllerBot и BotFather
Эти боты позволяют создавать управление собственной записью и ее форматирование.
Юзеры, которые решат их поставить, смогут:
- добавлять всевозможные реакции к посту (лайки и т.д.);
- работать с отложенными записями – редактировать их, планировать время размещения;
- проводить форматирование текста и выставлять анкорные ссылки;
- изучать статистику по количеству просмотров или новых читателей группы;
- размещать активные клавиши, при нажатии на которые происходит подписка, обсуждение с друзьями, предложение поделиться информацией или открытие сторонних ресурсов.
Те, кто знаком с языком программирования питон, могут создать любой bot самостоятельно.
Подключение к каналу и настройка
Рассмотрим порядок работы с ботом на примере Controllerbot. Для начала его нужно создать. Зайдя в @BotFather, необходимо кликнуть на Старт и написать команду /newbot.
Далее алгоритм следующий:
- Придумать имя и ввести его.
- Скопировать робота, так как он пригодится для подключения или добавления на канал в качестве администратора.
- Для настроек в поиске следует отыскать «КонтролерБота».
- Прописать /add и кликнуть по иконке «Подключить».
- Осталось только скопировать токен, отправив его роботу. Дополнительно нужно указать @username канала и город, что позволит корректно отражать настройки постинга.
Добавление реакций
Кнопки реакций в Телеграме.
Это своеобразные лайки, по примеру других социальных сетях. Возможности обсуждать информацию внутри групп здесь обычно нет, потому эмодзи помогают отследить реак-цию читателей на контент.
Чтобы сделать такую кнопку в телеграм-канале, нужно:
- Открыть пункт «Добавить реакции». Допускается присоединять до 6 различных смайликов к одному посту. Впоследствии пользователь сможет отслеживать, сколько человек кликнуло по иконке.
- Чтобы они автоматически прикреплялись к каждой записи, используется «Реакции по умолчанию», а список доступных эмоций отправляется роботу.
Добавление URL-кнопки
Это специальные клавиши, в которые прячут ссылки, позволяющие переходить к опросу, голосованию, другому каналу или сайту. Чтобы их разместить, после написания сообщения, выбирается пункт «Добавить урл» и вводится имя по формату «название-ссылка».
Виджет обратной связи с Telegram
Существует несколько вариантов:
- Использование сервиса Telegram.im. Для этого надо выбрать пункт «Сделать кнопку в Телеграме», а на открытой вкладке прописать имя канала. По желанию здесь можно произвести и другие настройки (определить фон, поэкспериментировать с размером текста). По завершению кликнуть по «Получить код», скопировать его и поставить на нужное место.
- Tgwidget.com. Тут представлено два варианта иконок и один виджет с трансляцией новостей ресурса, которые отображаются у владельцев подписки. На сайте необходимо зарегистрироваться и получить код для личного кабинета, который добавляется непосредственно в мессенджер.
Выводы
Чтобы следить за реакцией читателей на посты автора, подписываться на канал, делать репосты, проходить голосования, Телеграм использует специальные кнопки. Те, кто знаком с программированием способны создать их самостоятельно. Для всех остальных существуют специальные сервисы, позволяющие делать боты за несколько кликов.
Детальная инструкция видна на видео:
Введение
В начале апреля 2016 года вышло первое по-настоящему крупное обновление API для ботов. Изменений довольно много, поэтому материал я разобью на несколько частей. Сегодня поговорим об inline-кнопках и редактировании сообщений, а затем обсудим новые инлайн-режимы вместе со специальными кнопками для отправки геолокации и номера телефона.
Новые возможности
Начнём с двух важных изменений:
- Каждая кнопка, будь то обычная или инлайн, это теперь самостоятельный объект
KeyboardButton
илиInlineKeyboardButton
, не забудьте обновить своих ботов! - В Inline-режиме все текстовые поля теперь представлены отдельными объектами
InputMessageContent
, которые, в свою очередь могут быть аж 4-х типов (подробности тут).
URL-кнопки
Итак, инлайн-кнопки. Что это такое? Это специальные объекты, которые “цепляются” к конкретным сообщениям и распространяют своё действие, в общем случае, только на них. Делятся такие кнопки на три типа: URL-кнопки, Callback-кнопки и Switch-кнопки. Самыми простыми являются кнопки-ссылки (URL). Как видно из названия, их цель – просто перекидывать пользователей по определенным веб-адресам. Давайте сразу напишем обработчик, который будет на любое сообщение отвечать каким-либо текстом и предложением перейти, например, на Яндекс.
@bot.message_handler(content_types=["text"]) def default_test(message): keyboard = types.InlineKeyboardMarkup() url_button = types.InlineKeyboardButton(text="Перейти на Яндекс", url="https://ya.ru") keyboard.add(url_button) bot.send_message(message.chat.id, "Привет! Нажми на кнопку и перейди в поисковик.", reply_markup=keyboard)
Инлайн-клавиатура представляет собой объект InlineKeyboardMarkup
, а каждая инлайн-кнопка – это объект InlineKeyboardButton
. Чтобы получилась URL-кнопка, нужно указать значения параметров text
(текст на кнопке) и url
(валидный веб-адрес). В результате бот пришлет нам такое сообщение (см. рис.). В целях обеспечения безопасности, перед переходом по URL-кнопкам появляется всплывающее окно, в котором видна ссылка целиком.
URL-кнопка
Callback-кнопки и редактирование сообщений
Прежде, чем мы перейдем к другим кнопкам, давайте познакомимся с функциями редактирования сообщений, коих тоже три: editMessageText
(редактирование текста), editMessageCaption
(редактирование подписи к медиа) и editMessageReplyMarkup
(редактирование инлайн-клавиатуры). В рамках этого урока рассмотрим только первую функцию, остальные работают аналогично и предлагаются для самостоятельного изучения.Чтобы отредактировать сообщение, нам надо знать, про какое именно идёт речь. В случае, если оно было отправлено самим ботом, идентификаторами служит связка chat_id
+ message_id
. Но если сообщение было отправлено в инлайн-режиме, то ориентироваться надо по параметру inline_message_id
.
И вот теперь вернемся к нашим баранам кнопкам. На очереди – Callback. Это, на мой взгляд, самая крутая фича нового обновления. Колбэк-кнопки позволяют выполнять произвольные действия по их нажатию. Всё зависит от того, какие параметры каждая кнопка в себе несёт. Соответственно, все нажатия будут приводить к отправке боту объекта CallbackQuery
, содержащему поле data
, в котором написана некоторая строка, заложенная в кнопку, а также либо объект Message
, если сообщение отправлено ботом в обычном режиме, либо поле inline_message_id
, если сообщение отправлено в инлайн-режиме.
Приведу пример, после которого все вопросы должны отпасть: пусть, например, если сообщение отправлено ботом в обычном режиме, то нажатие на кнопку заменит текст сообщения на “Пыщь”, если в инлайн – то “Бдыщь”. При этом в обоих случаях значение callback_data
будет равно test
. Что для этого нужно сделать: во-первых, написать простейший хэндлер для всех входящих сообщений, во-вторых, написать простейший хэндлер для инлайн-сообщений, в-третьих, написать простейший хэндлер для колбэка, который определит, из какого режима пришло сообщение.
# Обычный режим @bot.message_handler(content_types=["text"]) def any_msg(message): keyboard = types.InlineKeyboardMarkup() callback_button = types.InlineKeyboardButton(text="Нажми меня", callback_data="test") keyboard.add(callback_button) bot.send_message(message.chat.id, "Я – сообщение из обычного режима", reply_markup=keyboard) # Инлайн-режим с непустым запросом @bot.inline_handler(lambda query: len(query.query) > 0) def query_text(query): kb = types.InlineKeyboardMarkup() # Добавляем колбэк-кнопку с содержимым "test" kb.add(types.InlineKeyboardButton(text="Нажми меня", callback_data="test")) results = [] single_msg = types.InlineQueryResultArticle( id="1", title="Press me", input_message_content=types.InputTextMessageContent(message_text="Я – сообщение из инлайн-режима"), reply_markup=kb ) results.append(single_msg) bot.answer_inline_query(query.id, results) # В большинстве случаев целесообразно разбить этот хэндлер на несколько маленьких @bot.callback_query_handler(func=lambda call: True) def callback_inline(call): # Если сообщение из чата с ботом if call.message: if call.data == "test": bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Пыщь") # Если сообщение из инлайн-режима elif call.inline_message_id: if call.data == "test": bot.edit_message_text(inline_message_id=call.inline_message_id, text="Бдыщь") if __name__ == '__main__': bot.infinity_polling()
Запускаем бота, отправляем инлайн-сообщение, которое, в свою очередь, вызовет обычное:
Нажмем на обе кнопки, результат правильный:
После проверки
Таким образом, callback-кнопки – это очень мощный инструмент для взаимодействия пользователей с ботом, а редактирование сообщений дополнительно помогает в этом. Более того, нажатие на колбэк-кнопку может дополнительно тригернуть либо уведомление в верхней части экрана, либо всплывающее окно. Покажу первый вариант. Пускай помимо изменения сообщения на “Пыщь”, аналогичное слово показывается уведомлением. Для этого перепишем первое if-условие в хендлере колбэков:
if call.message: if call.data == "test": bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Пыщь") bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text="Пыщь!")
Результат – на скриншоте. Попробуйте, кстати, изменить аргумент show_alert
на True
и посмотрите, что получится.
Всплывающее уведомление
Switch-кнопки
Наконец, остался последний тип кнопок – Switch (переключатель). Они нужны, чаще всего, для обучения пользователей работе с ботом в инлайн-режиме. Чтобы активировать сделать кнопку такого типа, нужно указать аргумент switch_inline_query
либо пустой, либо с каким-либо текстом. В последнем случае этот текст будет сразу подставлен в поле ввода, например, для показа демонстрации инлайна. Как вообще работает такая кнопка? При нажатии на неё Telegram предложит выбрать чат, после чего подставит в поле ввода ник вашего бота и (если есть), текст, указанный вами в аргументе switch_inline_query
. Давайте попробуем так сделать. Добавим кнопку, которая будет перенаправлять пользователя в какой-либо чат и предлагать в инлайн-режиме запрос “Telegram”. Код всего хендлера выглядит вот так:
@bot.message_handler(content_types=["text"]) def any_msg(message): keyboard = types.InlineKeyboardMarkup() switch_button = types.InlineKeyboardButton(text="Нажми меня", switch_inline_query="Telegram") keyboard.add(switch_button) bot.send_message(message.chat.id, "Я – сообщение из обычного режима", reply_markup=keyboard)
Теперь, если мы нажмем на кнопку и выберем чат, вот что получится:
Результат
Итак, в этом уроке мы познакомились с новыми кнопками в Telegram Bot API, научились переписывать историю редактировать сообщения и отправлять небольшие уведомления по нажатию. В следующий раз продолжим изучать новые возможности для ботов. А исходники к этому уроку можно найти в этом репозитории.
← Урок №7Урок №9 →
Мессенджер Telegram дает пользователям массу возможностей для общения и получения информации. Также человек может создать собственный Телеграм-канал. После этого наверняка встанет вопрос о наращивании аудитории. Чтобы осуществить задуманное, необходимо внимательно подойти к оформлению канала и подумать над тем, как сделать кнопку со ссылкой в Телеграме. Это поможет привлечь новых подписчиков и повысить лояльность старой базы.
Функционал Telegram позволяет интегрировать разные виды кнопок, для каждого из которых характерно определенное назначение. Знания о типах подобных интерфейсов дают возможность эффективнее наращивать и монетизировать трафик.
На заметку. При оформлении публикации кнопки отображаются в нижней части текста и являются кликабельными.
Простой, но, в то же время, очень популярный тип, повсеместно используемый в Телеграме. Особенностью подобных кнопок является наличие гиперссылок, которые отображаются рядом с иконкой. Читатель, вместе с URL, видит предупреждение о том, что при нажатии он перейдет на сторонний ресурс.
Более сложный тип, представленный в виде кликабельной иконки для перехода в другой чат с автоматической активацией общения с программой или оформлением подписки. Особенность данного вида заключается в автоматической настройке кнопок, благодаря чему владелец канала может сэкономить время на оформлении публикаций.
Самый продвинутый инструмент взаимодействия читателя с бот-программой для Телеграм-канала. Такие кнопки позволяют совершать произвольные действия, которые происходят после нажатия на них.
Владелец канала может отредактировать интерфейс по собственному усмотрению, назначив для него определенные функции. На практике реализация Callback-кнопок выглядит так: читатель кликает по сообщению, а в ответ получает пост с информацией.
Чтобы создать кнопку для своего канала в Телеграме, пользователю необходимо набраться терпения.
Ведь встроенный функционал Telegram не позволяет самостоятельно добавить интерфейс, который отвечает за перенаправление пользователей.
Важно. Создать кнопку помогает бот. Владелец Телеграм-канала может выбрать наиболее подходящий, исходя из отзывов и рекомендаций.
Первым делом необходимо подключить бота для своего аккаунта. Для этого можно воспользоваться @Controllerbot, который активируется через @BotFather путем нажатия на «Старт» и обозначением команды /newbot.
Далее хозяин канала должен действовать в соответствии с алгоритмом:
- Пропишите название бота и нажмите «Отправить».
- Придумайте логин через нижнее подчеркивание (например, newschool_bot). Важно подобрать такое имя, чтобы оно не было занято другими пользователями. Поэтому придется перебрать несколько вариантов.
- Тапните по иконке «Отправить».
- Перенаправьте сообщение от @BotFather роботу @Controllerbot. Для этого кликните на пост ПКМ и выберете значение «Переслать сообщение».
- Добавьте полученного бота в администраторы канала, нажав ПКМ по имени робота и выбрав заголовок «Копировать имя пользователя». Далее его название указывается в ссылке «Администраторов:X».
- Нажмите «Добавить администратора», а в поле для ввода текста выберете пункт «Вставить».
- Сохраните изменения.
- Откройте канал и напишите любое сообщение.
- Перешлите его в @Controllerbot.
Если все сделано верно, на экране высветится сообщение об успешной активации бота. Далее пользоваться интерфейсом можно с выбора пункта «Начать» и указания общедоступного текста. Робот сам предложит нужный вид кнопки среди рассмотренных ранее.
24.12.202017:15442MasterITИнформационный портал IT ТехникИспользуемые источники:
- https://stelegram.ru/chaty-i-kanaly/knopki-v-telegram
- https://mastergroosha.github.io/telegram-tutorial/docs/lesson_08/
- https://it-tehnik.ru/telegram/kak-sdelat-knopku.html