Меню навигации с кнопками Телеграм

В этой статье мы рассмотрим, как создать кнопки в боте Telegram на языке программирования C#. Мы ознакомимся с технологией ботов Telegram, узнаем, что такое кнопки InlineKeyboardButton и KeyboardButton и как их использовать в боте.

# Что такое боты Telegram?

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

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

# Что такое InlineKeyboardButton и KeyboardButton?

В Telegram есть два типа кнопок, которые мы можем использовать в ботах — InlineKeyboardButton и KeyboardButton.

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

Навигация в Telegram с кнопкой.

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

# Создание InlineKeyboardButton в C#

Для создания InlineKeyboardButton в C# мы должны использовать класс Telegram.Bot.Types.InlineKeyboardButton. Этот класс содержит свойства, которые мы можем использовать для настройки внешнего вида кнопки и действия, выполняемого при ее нажатии.

Создание InlineKeyboardButton начинается с создания экземпляра класса, как показано в следующем коде:

var button = new InlineKeyboardButton();

Затем мы можем использовать свойства класса для настройки кнопки.

Например, давайте создадим кнопку с текстом «Нажми меня» и действием «url», при котором открывается ссылка в браузере при ее нажатии.

var button = new InlineKeyboardButton < Text = «Нажми меня», Url = «https://example.com/» >;

# Создание KeyboardButton в C#

Для создания KeyboardButton в C# мы должны использовать класс Telegram.Bot.Types.KeyboardButton. Как и в случае с InlineKeyboardButton, этот класс содержит свойства, которые мы можем использовать для настройки внешнего вида кнопки и действия, выполняемого при ее нажатии.

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

Создание KeyboardButton начинается с создания экземпляра класса, как показано в следующем коде:

var button = new KeyboardButton();

Затем мы можем использовать свойства класса для настройки кнопки.

Например, давайте создадим кнопку с текстом «Привет», которая будет выполнять действие «text» при нажатии на нее:

var button = new KeyboardButton < Text = «Привет» >;

# Добавление кнопок в сообщение бота

Теперь, когда мы знаем, как создавать кнопки в C#, давайте рассмотрим, как добавить их в сообщение бота.

Для этого мы будем использовать класс Telegram.Bot.Types.ReplyKeyboardMarkup или Telegram.Bot.Types.InlineKeyboardMarkup, в зависимости от того, какой тип кнопки мы хотим использовать.

Для добавления кнопок KeyboardButton в сообщение бота мы должны создать экземпляр класса Telegram.Bot.Types.ReplyKeyboardMarkup, как показано ниже:

var keyboard = new ReplyKeyboardMarkup( new[] < new[] < new KeyboardButton(«Кнопка 1»), new KeyboardButton(«Кнопка 2») >, new[] < new KeyboardButton(«Кнопка 3»), new KeyboardButton(«Кнопка 4») >> );

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

Чтобы добавить InlineKeyboardButton в сообщение бота, мы должны создать экземпляр класса Telegram.Bot.Types.InlineKeyboardMarkup, как показано ниже:

var keyboard = new InlineKeyboardMarkup( new[] < new[] < new InlineKeyboardButton < Text = «Кнопка 1», CallbackData = «Button1» >, new InlineKeyboardButton < Text = «Кнопка 2», CallbackData = «Button2» >>, new[] < new InlineKeyboardButton < Text = «Кнопка 3», CallbackData = «Button3» >, new InlineKeyboardButton < Text = «Кнопка 4», CallbackData = «Button4» >> > );

Здесь мы создали массив InlineKeyboardButton, который содержит две строки с двумя кнопками в каждой строке. Каждая кнопка имеет свойство CallbackData, которое содержит данные, которые будут отправлены обратно боту при ее нажатии.

# Добавление кнопок в ответ бота

Теперь, когда мы знаем, как создавать и добавлять кнопки в сообщение бота, давайте рассмотрим, как добавить кнопки в ответ бота на сообщение пользователя.

Для этого мы будем использовать методы Telegram.Bot.TelegramBotClient.SendTextMessageAsync или Telegram.Bot.TelegramBotClient.EditMessageTextAsync, в зависимости от того, что мы хотим сделать.

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

Пример использования SendTextMessageAsync для отправки ответа на сообщение пользователя с кнопками KeyboardButton:

await botClient.SendTextMessageAsync( chatId: message.Chat.Id, text: «Выберите одну из кнопок:», replyMarkup: keyboard );

Здесь мы отправляем ответ на сообщение пользователя с текстом «Выберите одну из кнопок:» и клавиатурой кнопок KeyboardButton.

Пример использования EditMessageTextAsync для изменения сообщения пользователя с кнопками InlineKeyboardButton:

await botClient.EditMessageTextAsync( chatId: callbackQuery.Message.Chat.Id, messageId: callbackQuery.Message.MessageId, text: «Вы выбрали кнопку » + callbackQuery.Data + «.», replyMarkup: keyboard );

Здесь мы изменяем сообщение пользователя на «Вы выбрали кнопку [название кнопки].» и клавиатурой кнопок InlineKeyboardButton.

Создание кнопок в боте Telegram на языке программирования C# довольно просто с использованием соответствующих классов и методов Telegram.Bot.Types. Мы можем создавать и настраивать InlineKeyboardButton и KeyboardButton, а затем добавлять их в сообщение бота, то есть в ответ на сообщение пользователя. Надеюсь, этот материал поможет вам создавать более удобный интерфейс для ваших ботов на платформе Telegram.

Источник: qaa-engineer.ru

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

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

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

Обычные кнопки располагаются под полем ввода текста («Написать сообщение…»). Количество кнопок в строке определяется автоматически, в зависимости от количества кнопок и объема текста в них. На одном экране может быть не более восьми кнопок:

Инлайн-кнопки располагаются над полем ввода текста:

Как использовать инлайн-кнопки?

Возьмем, к примеру, такой экран. Изначально кнопки на нем будут отображаться в Telegram как обычные кнопки:

Есть два способа превратить эти обычные кнопки в инлайн-кнопки.

Добавить на нужный экран кнопку со ссылкой

Чтобы обычные кнопки превратились в Инлайн-кнопки, добавьте на этот же экран хотя бы одну кнопку-ссылку. Например, вы можете ссылку на ваш сайт.

  • нажмите + КНОПКА
  • введите название кнопки и нажмите Enter
  • нажмите на значок ссылки
  • вставьте URL на нужный ресурс
  • нажмите Сохранить
Еще по теме:  В Телеграм постоянно крутится наверху обновление

После этого нужно нажать Опубликовать, чтобы изменения пришли в канал. Дождитесь всплывающего сообщения о том, что сценарий был опубликован на канале Telegram.

После публикации снова протестируйте бота. В нашем случае кнопки располагаются на стартовом (самом левом и самом верхнем) экране, поэтому, чтобы проверить, пошлем боту /start .

Добавить «пустую» кнопку

Второй способ подойдет вам, если кнопка-ссылка не подходит для вашего сценария.

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

Нажмите Опубликовать и дождитесь сообщения о публикации в канал.

Затем пройдите ветку заново. Например, пошлите боту /start .

Обычные кнопки превратятся в Инлайн-кнопки, а кнопка, которая содержит только символ пробела, отображаться не будет.

Как запомнить выбор пользователя

Вы можете получить текст выбранной инлайн-кнопки в Telegram через переменную $queryText . Для этого после блока с инлайн-кнопками добавьте блок Условия и сохраните значение $queryText в новую переменную $choice через выражение $choice = String($queryText).split(‘;’)[1] .

Особенности канала Telegram

Есть некоторые особенности отображения кнопок, которые нужно учитывать.

  1. Не всегда сразу же можно увидеть новый вариант кнопок. Иногда нужно пройти по другой ветке бота, затем послать /start и вернуться на экран с кнопками.
  2. Если у вас есть два экрана, которые идут друг после друга, и на первом экране обычные кнопки, а на втором инлайн-кнопки, то при перехода на экран с Инлайн-кнопками, обычные кнопки не исчезнут.

К примеру, возьмем два таких экрана. На экране, выделенном синим, обычные кнопки. На экране, выделенном зеленым, Инлайн-кнопки.

После нажатия на кнопку «цены» бот перейдет на второй экран, на котором должны отображаться Инлайн-кнопки. Но из-за особенностей канала, обычные кнопки не исчезнут.

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

Источник: help.aimylogic.com

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