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

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

Обычные кнопки¶

Кнопки как шаблоны¶

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

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

Обратите внимание, что т.к. обычные кнопки суть шаблоны сообщений, то их можно создавать не только как объекты KeyboardButton , но и как обычные строки.

🧰 Кнопки для телеграмм бота, с использованием google app script. Как сделать.


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

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

Обратите внимание на конструкцию *buttons . Здесь вам не C++ и звёздочка используется для распаковки списка. Подробнее об операторах * и ** можно прочитать здесь.

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

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

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

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

Помимо стандартных опций, описанных выше, aiogram немного расширяет функциональность клавиатур параметром row_width . При его использовании, фреймворк автоматически разобьёт массив кнопок на строки по N элементов в каждой, где N — значение row_width , например, row_width=2 . Попробуйте!

Как убрать Главное меню в TELEGRAM БОТе/ Настроить телеграм МЕНЮ / Конструктор чат ботов SAMBOT.RU

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

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

Еще по теме:  Как выделить все сообщения в чате Телеграмм

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

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

URL-кнопки и колбэки¶

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

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

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

А если хотите обе кнопки в ряд, то уберите row_width=1 (тогда будет использоваться значение по умолчанию 3).

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

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

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

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

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

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

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

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

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

Но теперь представим, что ушлый пользователь сделал следующее: вызвал команду /numbers (значение 0), увеличил значение до 1, снова вызвал /numbers (значение сбросилось до 0) и отредактировал нажал кнопку «+1» на первом сообщении. Что произойдёт? Бот по-честному отправит запрос на редактирование текста со значением 1, но т.к. на том сообщении уже стоит цифра 1, то Bot API вернёт ошибку, что старый и новый тексты совпадают, а бот словит исключение: aiogram.utils.exceptions.MessageNotModified: 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 . Из первой главы вы уже знаете о такой прекрасной штуке, как errors_handler , но в этот раз мы поступим чуть иначе и перепишем функцию update_num_text() следующим образом:

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

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

В aiogram существует т.н. фабрика колбэков. Вы создаёте объект CallbackData , указываете ему префикс и произвольное количество доп. аргументов, которые в дальнейшем указываете при создании колбэка для кнопки.
Например, рассмотрим следующий объект:

В примере выше в кнопку запишется callback_data , равный post:5:like , а хэндлер на префикс post будет выглядеть так:

В предыдущем примере с числами мы грамотно выбрали callback_data , поэтому смогли легко запихнуть все обработчики в один хэндлер. Но можно логически разнести обработку инкремента и декремента от обработки нажатия на кнопку «Подтвердить». Для этого в фильтре фабрики можно указать желаемые значения какого-либо параметра. Давайте перепишем наш пример с использоваанием фабрики:

На этом глава про кнопки окончена, но про некоторые других их виды мы поговорим в следующих главах.

Похожие публикации:

  1. Как заменить ключ в словаре питон
  2. Как облегчить полигоны в 3д макс
  3. Как обновить игровой клиент
  4. Как поменять id флешки

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

Создание кнопок в Телеграм с помощью Бота и можно ли без

Что это и как использовать

Создание кнопок в Телеграм — возможность расширить потенциал канала (особенно, в сфере бизнеса) и подвести покупателей к определенному действию. Чаще всего при нажатии специальной картинки-клавиши человек может перейти на:

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

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

Как создать

Чтобы создать клавишу в Телеграмме, сделайте следующие шаги:

  • Зайдите в чат и введите команду /start.

  • В ответ бот передает сообщение с возможными командами, а именно /addchanel.

  1. Жмите на «Запустить».
  2. Кликните на «Создать пост» и выберите канал, где планируется добавление.
  3. Отправьте контент в порядке: текст, картинка, реакция, ссылка.
  4. Загрузите картинку с кнопкой, которую вы хотите создать. Она прикрепляется автоматически.
  5. Добавьте реакцию и URL.
  6. Сделайте дополнительные настройки (по желанию).

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

В бизнесе таким способом проще всего привлечь человека к покупке какого-либо товара / получению услуги. Главное внимание необходимо уделять настройкам, чтобы все работало корректно.

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

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

Bot API 2.0: информация для разработчиков

Предполагается, что вы уже ознакомлены с Bot API. В противном случае прочитайте, пожалуйста, описание ботов для разработчиков.

Сегодня мы представляем крупнейшее обновление платформы ботов с июля 2015 года. Была добавлена масса новых возможностей и инструментов, которые позволят создавать простые и удобные интерфейсы для ботов любой сложности.

Еще по теме:  Как на мегафоне подключить безлимитный интернет на Телеграм

Сами боты тоже становятся мощнее и функциональнее: теперь они могут отправлять любые файлы и сообщения, которые поддерживаются в Telegram, а также предоставлять гео-сервисы и запрашивать номер телефона пользователя.

Новые инлайн клавиатуры

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

Кнопки бота music

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

Кнопки с обратной связью

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

Уведомления сверху

Это ещё не всё: смотрите раздел обновления сообщений, чтобы узнать про ещё одну очень крутую «фишку».

URL-кнопки

На этих кнопках отображается небольшая стрелочка, чтобы пользователям было понятно, что нажатие на неё откроет внешнюю ссылку. Как обычно, перед открытием ссылки в браузере появится модальное окно с предупреждением.

URL-кнопка

Переход в инлайн-режим

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

Коллбэк-кнопка

Обновление сообщений

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

Запрос номера телефона и местоположения

При нажатии на такую кнопку Telegram отобразит соответствующее модальное окно с описанием того, что запросил бот.

Инлайн-боты 2.0

Инлайн-боты тоже не остались без изменений.

Новые типы контента

Инлайн-боты теперь могут отправлять любые файлы и сообщения, поддерживаемые в Telegram (19 типов, если быть точным): стикеры, видео, музыку, местоположения, файлы и так далее.

Все виды контента

Переключение между инлайн-режимом и личными сообщениями

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

Кнопка переключения

Ваш бот теперь может отобразить специальную кнопку «Перейти в личные сообщения» над результатами (или вместо них). Эта кнопка откроет чат с ботом и передаст необходимые параметры для корректной настройки. После успешного выполнения, вы можете отправить пользователя обратно в исходный чат с помощью кнопки switch_inline_query.

Улучшенный интерфейс инлайн-режима

Так как общение с ботом в инлайн-режиме отличается от обычной отправки сообщений, пришлось немного изменить интерфейс. Едва ли можно придумать лучший способ обозначить, что не нужно нажимать на кнопку «Отправить», чем скрыть её совсем:

Новое поле ввода

Однократное нажатие на крестик очистит поле поиска, а повторное—выйдет из встроенного режима.

Администрирование групп

Наконец, самое интересное: постепенно в Bot API будут добавляться инструменты для управления группами. В первую очередь это методы удаления участников из групп и супергрупп.

Неофициальный сайт про Telegram на русском.

Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.

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

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