Кнопка с превью Телеграм

В обновлении Bot API 6.0 телеграм-боты получили много новых функций. Из них для разработчиков самая примечательная — Telegram Web Apps (Веб-приложения внутри телеграм). С этим нововведением разработчики могут подключать к своим ботам web-приложения, которые открываются в дополнительном окне, что сильно расширяет инструментарий, а, следовательно и функционал ботов в телеграм.

Приложения Telegram известны своей скоростью, плавностью и кросс-платформенным дизайном. Ваше веб-приложение в идеале должно соответствовать этим принципам.

— Все элементы должны быть отзывчивыми и спроектированы с учетом мобильной ориентации устройств.
— Интерактивные элементы должны имитировать стиль, поведение и назначение уже существующих компонентов пользовательского интерфейса.
— Все анимации должны быть плавными, в идеале 60 кадров в секунду.
— Все input и изображения должны содержать label для доступности.

Как сделать синюю кнопку в закрепленном сообщении телеграм канала


— Приложение должно обеспечивать бесшовную работу, отслеживая изменение цветов темы с помощью API, и используя их соответствующим образом.

Давайте же опробуем это на практике!

Создание кнопки

Первое, что нам нужно сделать — создать кнопку запуска веб-приложения. Это можно сделать двумя способами:

1.2. Далее выбираем бота, которому нужна кнопка веб приложения

1.3. Отправляем ссылку по которой доступно наше веб-приложение

1.4. Пишем имя кнопки — будет отображаться внизу слева

Вот и все. В целом, если у вас есть адаптивный сайт и вы хотели просто добавить его в бота, тут можете остановиться.

Только при добавлении кнопки этим способом мы можем получить информацию о пользователе.

2. В коде бота — клавиатурные кнопки.

Запуск бота с inline-кнопки даёт суть тоже самое, что и предидущий вариант. Однако, запуск с keyboard button дает возможность отправлять данные из веб-приложения в бота.

Еще по теме:  Где находится пригласительная ссылка на Телеграмм

Покажу на примере pytelegrambotapi — я понимаю, что это не самая популярная библиотека для написания телеграмм-ботов, но так получилось, что я пишу именно на ней. Если вы пользуетесь другой библиотекой/языком, думаю, вам не составит труда действовать по аналогии. Вы можете сразу посмотреть пример или перейти в репозиторий и посмотреть код с комментариями:

2.1. Делаем все стандартные штуки для запуска бота — импорт библиотеки, ввод токена, infinity_polling, обработчик команды start. Если вы не понимаете о чем я, вам сюда.

2.2. Создаем функцию, которая вернет нам клавиатуру с нужной кнопкой.

Для того, чтобы создать кнопку, нужно сначала создать WebAppInfo-объект внутри которого будет url на наш сайт.

def webAppKeyboard(): #создание клавиатуры с webapp кнопкой keyboard = types.ReplyKeyboardMarkup(row_width=1) #создаем клавиатуру webAppTest = types.WebAppInfo(«https://telegram.mihailgok.ru») #создаем webappinfo — формат хранения url one_butt = types.KeyboardButton(text=»Тестовая страница», web_app=webAppTest) #создаем кнопку типа webapp keyboard.add(one_butt) #добавляем кнопки в клавиатуру return keyboard #возвращаем клавиатуру

2.3. Отправляем сообщение с нашей клавиатурой при отправке команды или любом другом действии:

bot.send_message( message.chat.id, ‘Привет, я бот для проверки телеграмм webapps!)’, reply_markup=webAppKeyboard())

Готово. Кнопки у нас есть.

Тут можно вообще закончить, если вы просто хотели, чтобы пользователь мог открыть ваш сайт из бота (зачем-то). Работать это будет вот так:

как работают web apps

Работа с веб-приложением

Теперь идем в наше веб-приложение. На момент написания статьи открывается любая ссылка, даже на codepen.

Инициализация

Чтобы взаимодействовать с телеграм подключаем скрипт:

После этого нам будет доступен объект: window.Telegram.WebApp

Записываем его в переменную и начинаем нашу работу.

let tg = window.Telegram.WebApp;

Что же мы теперь можем? Не так много, как хотелось бы, но и не мало. Приложение состоит из: основной кнопки (telegram-объект) и самой страницы, которая загрузилась по ссылке. Остальные элементы telegram-интерфейса нам не доступны. Однако, доступны цвета темы пользователя:

Еще по теме:  Не удалось воспроизвести видео в приложении Telegram попробовать сторонний плеер что это значит

навигатор цветов

Цвета

Они доступны в формате hex как css-переменные:

var(—tg-theme-bg-color)
var(—tg-theme-text-color)
var(—tg-theme-hint-color)
var(—tg-theme-link-color)
var(—tg-theme-button-color)
var(—tg-theme-button-text-color)

Или как объект ThemeParams в js (вместо window.Telegram.WebApp я использую переменную tg):

Но будьте осторожны, цвета — необязательный параметр, поэтому стоит проверять, есть ли они, перед тем как использовать.

Также имеется обработчик события изменения цветовой схемы:

При изменении цветовой схемы или размеров окна можно поменять что-то и в нашем веб-приложении.

Основные возможности

С цветами разобрались — теперь к другим основным параметрам:

tg.initData //получаем данные от пользователя в виде строки (работает только при запуске из меню команд бота). tg.initDataUnsafe // получаем данные от пользователя в виде объекта (работает только при запуске из меню команд бота). tg.isExpanded // возвращает true, если приложение открыто на всю высоту, false — если нет. tg.viewportHeight // вернёт ширину окна. tg.sendData(data) // отправляет данные боту в строковом виде, после чего закрывает приложение (работает только если приложение запущено с keyboard button). tg.ready() // метод позволяет отследить, когда приложение готово к отображению. tg.expand() // метод позволяет растянуть окно на всю высоту. tg.close() // метод закрывает приложение.

Main button

Instant View посты в Telegram на своём домене

Показываю способ, которым можно создавать симпатичные Instant View посты, и при этом оставлять контент на своём домене, а не использовать telegra.ph или medium.

1. Идём на instantview.telegram.org регистрируемся, входим на сайт и переходим к instantview.telegram.org/my/

2. В поле «Enter a URL to create or edit the corresponding template» вводим адрес страницы на нашем сайте. Жмём Enter.

3. На открывшейся странице видим три секции — секция с просмотром страницы сайта слева, секция для шаблона в центре и секция для предпросмотра Instant View справа.

Еще по теме:  Изменить шрифт Телеграм на Айфон

4. В средней секции пишем свой шаблон, убеждаемся что в правой секции всё выглядит хорошо. Если шаблон мы писать пока что не умеем, переходим вот сюда, и берём для примера готовый шаблон, например для telegra.ph

5. Жмём Mark as checked, затем View in telegram в правом верхнем углу.

6. Полученную в сообщении ссылку вида t.me/iv?url=…rhash=d82bb075aec0fd

… пересылаем, например себе, и уже её используем в статьях на канале, при формировании статьи ботом и т. п. Эта ссылка будет сразу же открывать Instant View просмотр страницы сайта.

Добавлено чуть позже…

С несколькими подписчиками выяснили, что на некоторых клиентах, созданные вот так Instant View ссылки могут не открываться. Судя по всему, связано это с тем, что клиенты (построенные на версии 3.18.1) не понимают ссылки вида t.me/iv?url=, ожидая что тут должен оказаться юзернейм, а не адрес сайта. Сделать с этим что-то пока что нельзя. Совсем недавно, были открыты исходники версии 4.1.1, стоит дождаться когда разработчики обновят свои приложения до актуального состояния, скорее всего тогда Instant View ссылки на собственные домены заработают корректно у всех.

3 thoughts on “ Instant View посты в Telegram на своём домене ”

remontokna :

Как уже описывалось выше, Instant view дает возможность просматривать страницы сайта прямо в telegram. При чем лишние блоки в виде рекламы, бесполезных картинок и баннеров вырезаются, что существенно снижает размер готового контента.

От себя добавлю: если не хотите что бы при генерации не было t.me, а название Вашего сайта, нужно добавить в head шаблона:

Источник: sysadmin.pm

Рейтинг
( Пока оценок нет )
Загрузка ...