Как добавить url кнопку в Телеграмме

Содержание

Как сделать ссылку на Телеграм — Понятная инструкция:

  • Сделать активный URL очень просто. Для этого Вам необходимо:
  • Скопировать его на соответствующей странице в верхней строке;
  • Перейти в Telegram и открыть Ваш канал или группу;
  • На мобильном телефоне: нажать пальцем с удержанием в 1-2 секунд на поле ввода сообщения;
  • На компьютере: щёлкнуть правой кнопкой мыши по месту введения текста;
  • Выбрать пункт «Вставить» и затем отправить сообщение;
  • Ссылка будет активной. При нажатии на неё, пользователь попадёт по указанному адресу.

  1. Как сделать чтобы ссылка была активной
  2. Как сделать кнопку ссылку в телеграмм
  3. Как сделать собственную ссылку на Телеграм
  4. Как сделать автоматическую ссылку
  5. Какая ссылка называется активной
  6. Как сделать Закреп с кнопкой
  7. Как в Телеграме взять ссылку
  8. Как сделать инлайн кнопки в Телеграм
  9. Как сделать Кликабельный номер телефона в Телеграм
  10. Как раскрутить свой канал в Телеграм
  11. Как сделать свою ссылку
  12. Как сделать ссылку в виде кнопки
  13. Как сделать красивую короткую ссылку
  14. Как сделать активную ссылку на телефоне
  15. Как сделать текст ссылкой на телефоне
  16. Как активировать ссылку в тексте
  17. Как узнать свой адрес телеграмм
  18. Как создать символьную ссылку
  19. Как сделать ссылку на источник
  20. Как сделать подстрочные ссылки
  21. Что такое Кликабельные ссылки
  22. Как работает Короткая ссылка
  23. Как сделать активную ссылку на адрес в инстаграме
  24. Как сделать ссылку внутри
  25. Как добавит ссылку
  26. Что такое автоматические ссылки
  27. Как в ворде сделать активную ссылку
  28. Как сделать активную ссылку в HTML
  29. Как сделать кликабельную ссылку на Инстаграм
  30. Что делать если не работает ссылка

Как сделать чтобы ссылка была активной

Как сделать кнопку ссылку в телеграмм

Добавление кнопок в Telegram-каналах осуществляется через двух ботов.Как добавлять кнопки в Телеграм-канал через бота:

Как создать яркую URL кнопку в телеграм канале

Как сделать собственную ссылку на Телеграм

Чтобы поделиться вне телеграма, скопировать ссылку https://t.me/ и добавить после слэша без пробелов свое имя пользователя.

Как сделать автоматическую ссылку

На вкладке Вставка выберите команду Перекрестная ссылка. В поле Тип ссылки щелкните раскрывающийся список, чтобы выбрать тип элемента, на который будет указывать ссылка. Список возможных вариантов зависит от типа элемента (заголовок, номер страницы и т. п.), с которым нужно создать связь.

Какая ссылка называется активной

Активная ссылка — стандартная ссылка, при переходе по которой пользователя перебрасывает на целевую страницу. По умолчанию выделяется синим цветом с нижним подчеркиванием, либо фиолетовым — если по ней уже переходили (хотя стили на сайте могут меняться на усмотрение его владельца).

Как сделать Закреп с кнопкой

Как сделать закреп с кнопкой:

  • Зайдите в SMMplanner и подключите телеграм-канал к сервису.
  • Нажмите «Запланировать пост».
  • Создайте пост.
  • Выберите пункт «Кнопка».
  • Нажмите «Закрепить», чтобы пост с кнопкой сразу оказался в закрепе.
  • Поставьте таймер на публикацию.

Как в Телеграме взять ссылку

Найти нужный пост в Телеграм; Справа под постом нажать на стрелочку; Выбрать из контактов, адресата или же нажать «Копировать ссылку».

Как сделать инлайн кнопки в Телеграм

В канале Telegram есть возможность добавить инлайн-кнопки. Такие кнопки будут отображаться не под полем ввода, а над.Для этого:

  • нажмите + КНОПКА
  • введите название кнопки и нажмите Enter.
  • нажмите на значок ссылки
  • вставьте URL на нужный ресурс
  • нажмите Сохранить

Как сделать Кликабельный номер телефона в Телеграм

Атрибут href=«» указывает адрес ссылки или действие. Для набора номера используется параметр: tel:+7XXXXXXXXXX, где +7XXXXXXXXXX — нужный номер телефона. Теперь при нажатии на номер телефона будет совершаться набор указанного в ссылке номера.

Как раскрутить свой канал в Телеграм

14 способов раскрутки Телеграм-канала с нуля:

  • Реклама в других каналах
  • Накрутка подписчиков
  • Взаимопиар
  • Реклама за бартер
  • Участие в подборках
  • Трафик из соцсетей, с YouTube или сайта
  • Статья на чужом сайте
  • Размещение в Телеграм каталогах

Как сделать свою ссылку

Простая текстовая ссылка создается в три этапа:

  • Сначала пишем слово, на котором будет стоять ссылка, и заключаем его в теги a (открывающий тег) и /a (закрывающий тег),
  • В открывающий тег добавляем URL, заключенный в кавычки, с атрибутом href=
  • Полученную строку вставляем в HTML-код страницы.

Как сделать ссылку в виде кнопки

Кнопку вкладываем внутрь элемента и для формы указываем атрибут action с адресом веб-страницы (пример 1). Дополнительно можно добавить атрибут target со значением _blank, тогда веб-страница откроется в новой вкладке браузера.

Как сделать красивую короткую ссылку

Чтобы сократить ссылку, нужно:

  • Зарегистрироваться.
  • Вставить URL на главной и нажать кнопку «Rebrand».
  • Выбрать способ сокращения: генерировать самый короткий адрес, SEO-дружественный (учитывающий слова в URL) или, например, абсолютно случайный.
  • Указать домен — оставить rebrand.ly или прикрепить собственный.

Как сделать активную ссылку на телефоне

Активная ссылка телефона на сайте

Для того чтобы на сайте номер телефона при нажатии срабатывал как активный вызов, нужно в атрибуте href прописать значение tel. Ну не совсем сразу будет идти вызов, а появится окно с запросом, каким приложением открыть tel.

Как сделать текст ссылкой на телефоне

На планшете или телефоне с Android:

  • На планшете с Android откройте вкладку Вставка. На телефоне с Android нажмите значок «Правка» в верхней части экрана, выберите Главная и нажмите Вставка.
  • Нажмите Ссылка.
  • Введите отображаемый текст и адрес ссылки.
  • Выберите Вставка.

Как активировать ссылку в тексте

Ссылка на веб-страницу:

  • Поместите курсор в то место документа, где должна находиться ссылка.
  • Нажмите CTRL+K, чтобы открыть диалоговое окно Вставка гиперссылки.
  • Введите веб-адрес сайта и нажмите клавиши ALT+К, чтобы перейти к полю Текст.
  • Введите текст ссылки, который должен отображаться в документе.
  • Нажмите клавишу ВВОД.
Еще по теме:  Где сохраняется трансляция в Телеграмме

Как узнать свой адрес телеграмм

Как создать символьную ссылку

По умолчанию команда ln создает жесткие ссылки. Чтобы с ее помощью создать симлинк, команде ln нужно передать параметр -s (или –symbolic).

Как сделать ссылку на источник

Создание списка литературы, цитат и ссылок:

  • Поместите курсор в конец текста, который хотите процитировать.
  • Перейдите в раздел Ссылки > Стиль и выберите стиль ссылки.
  • Нажмите кнопку Вставить ссылку.
  • Выберите Добавить новый источник и введите сведения об источнике.

Как сделать подстрочные ссылки

Подстрочные библиографические ссылки оформляют как примечание, вынесенное из текста документа вконец страницы. Их располагают под текстом каждой страницы, отделяя от него пробелом в 1,5 интервала и строкой. Связь подстрочной ссылки с текстом осуществляют с помощью знака сноски, который набирают на верхнюю линию шрифта.

Что такое Кликабельные ссылки

Активная или кликабельная ссылка — это ссылка, при нажатии на которую происходит переход на другую страницу или сайт. Прямая ссылка — это ссылка, при нажатии на которую переход на другую страницу или сайт происходит сразу же, без промежуточных страниц и редиректов.

Как работает Короткая ссылка

Когда пользователь кликает по сокращённой ссылке, запрос отправляется сервису сокращения URL-адресов, а он перенаправит его на необходимый «реальный» адрес:

  • Сервис принимает короткий URL в виде GET -запроса.
  • Сервис проверяет, имеется ли данный токен в базе данных.

Как сделать активную ссылку на адрес в инстаграме

Чтобы добавить ссылку на другой сайт:

  • Нажмите на Ленту Instagram в редакторе.
  • Нажмите Настроить.
  • Нажмите Ссылки.
  • Нажмите Добавить ссылки.
  • Выберите нужный пост.
  • Нажмите +Добавить ссылку.
  • Нажмите Веб-адрес в разделе Ссылка ведет на
  • Введите веб-адрес, на который должна вести ссылка, в разделе Какой веб-адрес (URL)?

Как сделать ссылку внутри

Для создания ссылки следует вначале сделать закладку (якорь) в соответствующем месте и дать ей имя при помощи атрибута name тега , как показано в примере 1. Между тегами и отсутствует текст, так как требуется лишь указать местоположение перехода по ссылке, находящейся внизу страницы.

Как добавит ссылку

Как вставить ссылку в тексте страницы или записи:

  • На панели инструментов нажимаем кнопку Вставить/изменить ссылку
  • В появившемся диалоге в поле URL набираем или вставляем адрес ссылки
  • Нажимаем кнопку Добавить ссылку

Что такое автоматические ссылки

Автоматические ссылки — это указатели (числа) в тексте, которые можно легко обновить в случае, если поменялась последовательность источников, на которые ссылаются эти указатели.

Как в ворде сделать активную ссылку

Ссылка на веб-страницу:

  • Поместите курсор в то место документа, где должна находиться ссылка.
  • Нажмите клавиши CTRL+K, чтобы открыть диалоговое окно Вставка гиперссылки.
  • Введите веб-адрес сайта и нажмите клавиши ALT+К, чтобы перейти к полю Текст.
  • Введите текст ссылки, который вы хотите отобразить в документе.

Как сделать активную ссылку в HTML

Как сделать кликабельную ссылку на Инстаграм

Нажимаете на значок ссылки наверху Сторис, выбираете «Видео IGTV» и после нужное видео. В полном видео нужно нажать на название наверху и тогда откроется описание. Ссылка в этом описании будет кликабельной.

Что делать если не работает ссылка

Если ссылка не открывается в браузере на компьютере, для начала удали временные файлы и куки (cookies), а затем попробуй снова. Внимание: после удаления файлов куки придется заново входить на сайты с логином и паролем. Если очистка временных файлов не помогла, установи другой браузер.

25.05.2023 Как сделать в Телеграм активную ссылку

Ссылки на Телеграм-каналы также можно создавать с помощью инструкции: скопируйте ссылку на страницу, затем добавьте после слэша без пробелов своё имя пользователя. Для создания автоматической ссылки на страницу нужно выбрать вкладку Вставка и выбрать команду Перекрестная ссылка. Здесь есть возможность выбрать тип элемента, на который будет указывать ссылка.

Активная ссылка — это стандартная ссылка, при переходе по которой пользователя перебрасывает на целевую страницу. При этом, активная ссылка выделяется синим или фиолетовым цветом с нижним подчеркиванием.

Для того, чтобы сделать закреп с кнопкой в Telegram, пользователю необходимо подключить телеграм-канал к сервису SMMplanner, затем создать пост, выбрать пункт «Кнопка», нажать «Закрепить», чтобы пост с кнопкой сразу оказался в закрепе.

Наконец, в Telegram есть возможность добавить инлайн-кнопки. Эти кнопки будут отображаться не под полем ввода, а над ним. Для этого нужно нажать на + КНОПКА, ввести название кнопки и установить URL на нужный ресурс.

Таким образом, в Telegram есть несколько возможностей для создания активных ссылок, добавления кнопок и создания инлайн-кнопок. Они позволяют сделать использование этого мессенджера более удобным и доступным для всех.

Источник: registratury.ru

Как сделать кнопку подписаться в телеграмме

Как сделать Закреп с кнопкой в телеграмме

Как сделать закреп с кнопкой:

  • Зайдите в SMMplanner и подключите телеграм-канал к сервису.
  • Нажмите «Запланировать пост».
  • Создайте пост.
  • Выберите пункт «Кнопка».
  • Нажмите «Закрепить», чтобы пост с кнопкой сразу оказался в закрепе.
  • Поставьте таймер на публикацию.

Как сделать кнопку ссылку в телеграмме

Чтобы сделать публикацию с кнопкой, нужно открыть диалог с созданным ботом-администратором: Для начала отправить «/start». Нажать «Создать пост» и выбрать соответствующий канал. Отправить текст публикации и на следующем шаге выбрать «Добавить URL-кнопки».

Как сделать инлайн кнопки в Телеграм канале

В канале Telegram есть возможность добавить инлайн-кнопки. Такие кнопки будут отображаться не под полем ввода, а над.Для этого:

  • нажмите + КНОПКА
  • введите название кнопки и нажмите Enter.
  • нажмите на значок ссылки
  • вставьте URL на нужный ресурс
  • нажмите Сохранить

Как поставить значок в Телеграме

Чтобы сделать иконку, откройте нужный чат или канал и нажмите на его заголовок. Далее — три точки справа вверху → «Создать ярлык» → «Добавить на главный экран». Таких ярлыков можно делать сколько угодно. Удаляются они как обычные иконки, не затрагивая самое приложение Telegram.

Как открыть подписчиков в Телеграме

Как посмотреть подписчиков Telegram канала:

  • Запустить приложение Telegram на своем устройстве
  • В списке каналов, чатов и ботов найти свой канал и перейти на него
  • Нажать на фото или название канала
  • На странице с информацией о канале нажать «Подписчики»

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

Нажать на три вертикальные точки. Выбрать «Управление каналом». Нажать на «Обсуждение — Добавить группу».

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

Как подключить бот

Как делать круг в телеграмме

Как записать видео в кружочке в Telegram

Перейдите в нужный чат и один раз нажмите на значок микрофона. После этого он сменится на изображение камеры. Нажмите на новый значок и удерживайте его для записи видео в кружочке. Если что‑то пошло не так, сделайте свайп влево и удалите сообщение.

Как настроить открытие ссылок в Телеграм

  • В верхнем меню выбираем «Три линии»
  • Далее «Настройки»
  • Далее «Настройки чатов»
  • Находим настройку «Встроенный браузер» и выключаем ее!

Как сделать ссылку приглашение в телеграмме

Открыть группу и нажать на ее название в верхней части панели; найти ссылку в блоке «Информация» и удерживать ее несколько секунд, после этого кликнуть на появившуюся кнопку «Копировать»; дальше вы можете отправить ссылку в любой чат или личные сообщения.

Как сделать меню в телеграмм канале

Как создать постоянное меню для Telegram чат-бота:

  • Введите название команды.
  • Введите описание — то, для чего можно использовать данную команду.
  • Выберите цепочку, которая запустится после выбора команды из списка.
  • Нажмите «Добавить», чтобы добавить команду в меню.
  • Меню с командами готово к работе.
Еще по теме:  Как листать чат в Телеграмме до нужной даты

Что такое Инлайн кнопки

Inline-кнопки — это кнопки, которые отображаются прямо в сообщении.

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

Чтобы создать меню бота, на странице чат-бота откройте вкладку «Меню» и нажмите «Добавить элемент»:

  • Введите название команды.
  • Введите описание — то, для чего можно использовать данную команду.
  • Выберите цепочку, которая запустится после выбора команды из списка.
  • Нажмите «Добавить», чтобы добавить команду в меню.

Как настроить кнопки в боте Телеграм

Как получить значок в Телеграме

Итак, что нужно сделать для получения галочки в Telegram:

Как добавить возможность комментировать в Телеграм канале

Чтобы включить комментарии на канале, перейдите в настройки, выберите раздел «Обсуждение» и привяжите группу к каналу. Можно привязать уже существующую группу или создать новую. Чат нужно модерировать и чистить от спама. В небольших сообществах это делают вручную, в крупных группах — с помощью ботов-модераторов.

Как сделать ссылку на аккаунт в телеграмме

Чтобы поделиться ссылкой на свой аккаунт в Телеграм, нужно:

  • Запустить Телеграм на своем смартфоне
  • Открыть вкладку «Настройки»
  • Нажать «Изм.» (расположено в правом верхнем углу)
  • Нажать «Имя пользователя»
  • На открывшейся странице нажать на ссылку вашего канала
  • Нажать на значок «Поделиться»

Как сделать слово ссылку с телефона

На планшете или телефоне с Android:

  • На планшете с Android откройте вкладку Вставка. На телефоне с Android нажмите значок «Правка» в верхней части экрана, выберите Главная и нажмите Вставка.
  • Нажмите Ссылка.
  • Введите отображаемый текст и адрес ссылки.
  • Выберите Вставка.

Как сделать в Телеграм голосовалку

Как создать опрос:

  • Зайдите в группу и нажмите на иконку скрепки в нижнем правом углу рядом с текстовым полем.
  • Появятся варианты контента, который можно добавить. Выберите пункт «Опрос».
  • Заполните появившиеся поля: впишите вопрос и варианты ответов.
  • Кликните на «Создать» в правом верхнем углу экрана.

Как создать канал в телеграмме с комментариями

Комментарии в Телеграме

Откройте настройки канала в Телеграме и найдите раздел «Обсуждения»; Привяжите группу — частную или супергруппу. Готово! Теперь при публикации подписчики смогут оставлять комментарии в Телеграме.

Для чего нужны боты в телеграмме

Чат-бот компании в Telegram — удобный и недорогой способ оставаться с клиентом на связи круглосуточно. В мессенджере с клиентами общаются многие бренды. Для чего нужны чат-боты: Они оперативно решают проблемы клиентов: обрабатывают сообщения покупателей и передают оператору информацию о запросах.

Как сделать ссылку на канал в телеграмме

В общем и целом все просто: заходите на сайт сервиса → вписываете адрес своего канала/профиля/чата → жмете кнопку и получаете рабочий URL. Или же можно сразу приписать адрес к домену сервиса, и новая ссылка на Telegram готова.

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

Открыть диалог с созданным ботом-администратором и отправить «/start». Нажать «Создать пост» и выбрать соответствующий канал. Отправить текст будущей публикации. Нажать на кнопку «Добавить комментарии».

18.04.2023 Как сделать кнопку подписаться в телеграмме

Чтобы сделать кнопку ссылку в телеграмме, нужно открыть диалог с созданным ботом-администратором, отправить «/start», выбрать соответствующий канал, отправить текст публикации и на следующем шаге выбрать «Добавить URL-кнопки».

Также в Telegram-каналах есть возможность добавить инлайн-кнопки, которые будут отображаться над полем ввода. Для этого нужно нажать + КНОПКА, ввести название кнопки, нажать на значок ссылки, вставить URL на нужный ресурс и нажать Сохранить.

Чтобы поставить значок в Телеграме, необходимо открыть нужный чат или канал, нажать на его заголовок, три точки справа вверху, «Создать ярлык» и «Добавить на главный экран».

Для просмотра подписчиков Telegram-канала нужно запустить приложение Telegram на своем устройстве, найти свой канал и перейти на него, нажать на фото или название канала и на странице с информацией о канале нажать «Подписчики».

Таким образом, наличие кнопок в Telegram-каналах может значительно упростить взаимодействие с подписчиками и повысить их удовлетворенность контентом.

Источник: npz-info.ru

Кнопки Aiogram

Этот вид кнопок появился вместе с Bot API в далёком 2015 году и представляет собой не что иное, как шаблоны сообщений (за исключением нескольких особых случаев, но о них позже). Принцип простой: что написано на кнопке, то и будет отправлено в текущий чат. Соответственно, чтобы обработать нажатие такой кнопки, бот должен распознавать входящие текстовые сообщения.

Напишем хэндлер, который будет при нажатии на команду /start отправлять сообщение с двумя кнопками:

Несмотря на то, что Telegram Bot API допускает указывать просто строки вместо объектов KeyboardButton , при попытке использовать строку aiogram 3.x выкинет ошибку валидации и это не баг, а фича.
Живите теперь с этим

Что ж, запустим бота и обалдеем от громадных кнопок:

Очень большие обычные кнопки

Как-то некрасиво. Во-первых, хочется сделать кнопки поменьше, а во-вторых, расположить их горизонтально.
Почему вообще они такие большие? Дело в том, что по умолчанию «кнопочная» клавиатура должна занимать на смартфонах столько же места, сколько и обычная буквенная. Для уменьшения кнопок к объекту клавиатуры надо указать дополнительный параметр resize_keyboard=True .
Но как заменить вертикальные кнопки на горизонтальные? С точки зрения Bot API, клавиатура — это массив массивов кнопок, а если говорить проще, массив рядов. Перепишем наш код, чтобы было красиво, а для пущей важности добавим параметр input_field_placeholder , который заменит текст в пустой строке ввода, когда активна обычная клавиатура:

Смотрим — действительно красиво:

Кнопки в один ряд

Осталось научить бота реагировать на нажатие таких кнопок. Как уже было сказано выше, необходимо делать проверку на полное совпадение текста. Сделаем это двумя способами: через специальный фильтр Text и обычной лямбдой (лямбду постараемся далее не использовать, в последующих главах её можно будет заменить на немного магии):

Реакция на нажатие кнопок

Чтобы удалить кнопки, необходимо отправить новое сообщение со специальной «удаляющей» клавиатурой типа ReplyKeyboardRemove . Например: await message.reply(«Отличный выбор!», reply_markup=types.ReplyKeyboardRemove())

Keyboard Builder

Для более динамической генерации кнопок можно воспользоваться сборщиком клавиатур. Нам пригодятся следующие методы:

  • add() — добавляет кнопку в память сборщика;
  • adjust(int1, int2, int3. ) — делает строки по int1, int2, int3. кнопок;
  • as_markup() — возвращает готовый объект клавиатуры;
  • button() — добавляет кнопку с заданными параметрами, тип кнопки (Reply или Inline) определяется автоматически.

Создадим пронумерованную клавиатуру размером 4×4:

Результат работы сборщика кнопок

У объекта обычной клавиатуры есть ещё две полезных опции: one_time_keyboard для автоматического скрытия кнопок после нажатия и selective для показа клавиатуры лишь некоторым участникам группы. Их использование остаётся для самостоятельного изучения.

Специальные обычные кнопки

На момент написания этой главы в Telegram существует три специальных вида обычных кнопок, не являющихся обычными шаблонами сообщений. Это кнопки для:

  • отправки текущей геолокации (флаг request_location );
  • отправки своего контакта с номером телефона (флаг request_contact );
  • создания опроса/викторины (объект KeyboardButtonPollType).

Для первых двух типов достаточно установить булевый флаг, а для опросов и викторин нужно передать специальный тип KeyboardButtonPollType и, по желанию, указать тип создаваемого объекта.

Впрочем, проще один раз увидеть код:

Специальные обычные кнопки

Инлайн-кнопки

URL-кнопки¶

В отличие от обычных кнопок, инлайновые цепляются не к низу экрана, а к сообщению, с которым были отправлены. В этой главе мы рассмотрим два типа таких кнопок: URL и Callback. Ещё один — Switch — будет рассмотрен в главе про инлайн-режим.

Login- и Pay-кнопки в книге рассматриваться не будут вообще. Если у кого-то есть желание помочь хотя бы с рабочим кодом для авторизации или оплаты, пожалуйста, создайте Pull Request на GitHub. Спасибо!

Еще по теме:  В Телеграм десктоп пропадает звук при демонстрации экрана

Самые простые инлайн-кнопки относятся к типу URL, т.е. «ссылка». Поддерживаются только протоколы HTTP(S) и tg://

Отдельно остановимся на среднем блоке кода. Дело в том, что в марте 2019 года разработчики Telegram добавили возможность отключать переход к профилю пользователя у пересланного сообщения. При попытке создать URL-кнопку с ID юзера, у которого отключен переход по форварду, бот получит ошибку Bad Request: BUTTON_USER_PRIVACY_RESTRICTED . Соответственно, прежде чем показывать такую кнопку, необходимо выяснить состояние упомянутой настройки. Для этого можно вызвать метод getChat и в ответе проверить состояние поля has_private_forwards . Если оно равно True , значит, попытка добавить URL-ID кнопку приведёт к ошибке.

Колбэки

Напишем хэндлер, который по команде /random будет отправлять сообщение с колбэк-кнопкой:

Но как же обработать нажатие? Если раньше мы использовали хэндлер на message для обработки входящих сообщений, то теперь будем использовать хэндлер на callback_query для обработки колбэков. Ориентироваться будем на «значение» кнопки, т.е. на её data:

Несмотря на то, что параметр кнопки callback_data , а значение data лежит в одноимённом поле data объекта CallbackQuery, собственный фильтр aiogram называется text .

Реакция на нажатие колбэк-кнопки

Ой, а что это за часики? Оказывается, сервер Telegram ждёт от нас подтверждения о доставке колбэка, иначе в течение 30 секунд будет показывать специальную иконку. Чтобы скрыть часики, нужно вызвать метод answer() у колбэка (или использовать метод API answer_callback_query() ). В общем случае, в метод answer() можно ничего не передавать, но можно вызвать специальное окошко (всплывающее сверху или поверх экрана):

Всплывающее окно при нажатии на колбэк-кнопку

В функции send_random_value мы вызывали метод answer() не у message , а у callback.message . Это связано с тем, что колбэк-хэндлеры работают не с сообщениями (тип Message), а с колбэками (тип CallbackQuery), у которого другие поля, и само сообщение — всего лишь его часть. Учтите также, что message — это сообщение, к которому была прицеплена кнопка (т.е. отправитель такого сообщения — сам бот). Если хотите узнать, кто нажал на кнопку, смотрите поле from (в вашем коде это будет callback.from_user , т.к. слово from зарезервировано в Python)

Когда вызывать answer() ?

В общем случае, главное — просто не забыть сообщить Telegram о получении колбэк-запроса, но я рекомендую ставить вызов answer() в самом конце, и вот почему: если вдруг в процессе обработки колбэка случится какая-то ошибка и бот нарвётся на необработанное исключение, пользователь увидит неубирающиеся полминуты часики и поймёт, что что-то не так. В противном случае, часики исчезнут, а пользователь останется в неведении, выполнился его запрос успешно или нет.

Перейдём к примеру посложнее. Пусть пользователю предлагается сообщение с числом 0, а внизу три кнопки: +1, -1 и Подтвердить. Первыми двумя он может редактировать число, а последняя удаляет всю клавиатуру, фиксируя изменения. Хранить значения будем в памяти в словаре (про конечные автоматы поговорим как-нибудь в другой раз).

И, казалось бы, всё работает:

Всё работает?

Но теперь представим, что ушлый пользователь сделал следующее: вызвал команду /numbers (значение 0), увеличил значение до 1, снова вызвал /numbers (значение сбросилось до 0) и отредактировал и нажал кнопку “+1” на первом сообщении. Что произойдёт? Бот по-честному отправит запрос на редактирование текста со значением 1, но т.к. на том сообщении уже стоит цифра 1, то Bot API вернёт ошибку, что старый и новый тексты совпадают, а бот словит исключение: Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message

Всё работает?

С этой ошибкой вы, скорее всего, будете поначалу часто сталкиваться, пытаясь редактировать сообщения. Вообще говоря, подобная ошибка часто говорит о проблемах с логикой генерации/обновления данных в сообщении, но иногда, как в примере выше, может быть ожидаемым поведением.

В данном случае проигнорируем ошибку целиком, т.к. нам важен лишь итоговый результат, который точно будет правильным. Ошибка MessageNotModified относится к категории Bad Request, поэтому у нас есть выбор: проигнорировать весь подобный класс ошибок, либо отловить весь класс BadRequest и попытаться по тексту ошибки опознать конкретную причину. Чтобы не слишком усложнять пример, обойдёмся первым способом и немного обновим функцию update_num_text() :

# Новые импорты! from contextlib import suppress from aiogram.exceptions import TelegramBadRequest async def update_num_text(message: types.Message, new_value: int): with suppress(TelegramBadRequest): await message.edit_text( f»Укажите число: «, reply_markup=get_keyboard() )

Если теперь вы попробуете повторить пример выше, то указанное исключение в этом блоке кода бот просто-напросто проигнорирует.

Фабрика колбэков

Когда вы оперируете какими-то простыми колбэками с общим префиксом, типа order_1 , order_2 … вам может показаться, что довольно легко вызывать split() и делить строку по какому-то разделителю. А теперь представьте, что вам нужно хранить не одно значение, а три: order_1_1994_2731519 . Что здесь артикул, цена, количество? А может быть, тут вообще год выпуска? Да и разбиение строки начинает выглядеть страшно: .split(«_»)[2] . А почему не 1 или 3?

В какой-то момент возникает необходимость структурировать содержимое таких callback data, и в aiogram есть решение! Вы создаёте объекты типа CallbackData , указываете префикс, описываете структуру, а дальше фреймворк самостоятельно собирает строку с данными колбэка и, что важнее, корректно разбирает входящее значение. Снова разберёмся на конкретном примере; создадим класс NumbersCallbackFactory с префиксом fabnum и двумя полями action и value . Поле action определяет, что делать, менять значение (change) или зафиксировать (finish), а поле value показывает, на сколько изменять значение. Оно помечено как Optional[int] , т.к. если action равен “finish”, то значение указывать бессмысленно. Код:

# новые импорты! from typing import Optional from aiogram.dispatcher.filters.callback_data import CallbackData class NumbersCallbackFactory(CallbackData, prefix=»fabnum»): action: str value: Optional[int]

Наш класс обязательно должен наследоваться от CallbackData и принимать значение префикса. Префикс — это общая подстрока в начале, по которой фреймворк будет определять, какая структура лежит в колбэке.

Теперь напишем функцию генерации клавиатуры. Здесь нам пригодится метод button() , который автоматически будет создавать кнопку с нужным типом, а от нас требуется только передать аргументы. В качестве аргумента callback_data вместо строки будем указывать экземпляр нашего класса NumbersCallbackFactory :

def get_keyboard_fab(): builder = InlineKeyboardBuilder() builder.button( text=»-2″, callback_data=NumbersCallbackFactory(action=»change», value=-2) ) builder.button( text=»-1″, callback_data=NumbersCallbackFactory(action=»change», value=-1) ) builder.button( text=»+1″, callback_data=NumbersCallbackFactory(action=»change», value=1) ) builder.button( text=»+2″, callback_data=NumbersCallbackFactory(action=»change», value=2) ) builder.button( text=»Подтвердить», callback_data=NumbersCallbackFactory(action=»finish») ) # Выравниваем кнопки по 4 в ряд, чтобы получилось 4 + 1 builder.adjust(4) return builder.as_markup()

Методы отправки сообщения и его редактирования оставляем теми же (в названиях и командах добавим суффикс _fab ):

Наконец, переходим к главному — обработке колбэков. Для этого в декоратор надо передать класс, колбэки с которым мы ловим, с вызванным методом filter() . Также появляется дополнительный аргумент с названием callback_data (имя должно быть именно таким!), и имеющим тот же тип, что и фильтруемый класс:

Ещё немного конкретизируем наши хэндлеры и сделаем отдельный обработчик для числовых кнопок и для кнопки «Подтвердить». Фильтровать будем по значению action и в этом нам помогут «магические фильтры» aiogram 3.x. Серьёзно, они так и называются: Magic Filter. Подробнее сие чародейство рассмотрим в другой главе, а сейчас просто воспользуемся «магией» и примем это на веру:

Фабрика колбэков

На первый взгляд то, что мы сделали, может показаться сложным, но в действительности фабрика колбэков позволяет создавать продвинутые колбэк-кнопки и удобно дробить код на логические сущности.

Источник: aiogram.ru

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