Создание Reply меню
Перед созданием меню познакомимся со следующими элементами:
OptionMessage
MenuGenerator.ReplyKeyboard
PRTelegramBot.Helpers.Message.Send
OptionMessage – класс настроек параметров сообщений, позволяет сконфигурировать сообщение перед отправкой в боте.
Свойства:
ClearMenu – если имеет значение true, очищает меню.
MenuReplyKeyboardMarkup – если не равен null, к сообщению добавляет простое меню.
MenuInlineKeyboardMarkup – если не равен null, к сообщению добавляет inline меню.
Даже если вы укажите одновременно MenuReplyKeyboardMarkup и MenuInlineKeyboardMarkup будет работать только одно.
MenuGenerator.ReplyKeyboard – вспомогательный метод, который генерирует меню.
Параметры метода:
maxColumn – максимальное количество столбцов в меню.
keyboardButtons или buttons – массив кнопок меню.
menu – массив простых кнопок меню.
resizeKeyboard – флаг resize из telegram api.
mainMenu – если не пустой, добавляет в конце меню пункт простой кнопки. (Например может использоваться для показа кнопки “Главное меню”).
PRTelegramBot.Helpers.Message.Send – вспомогательный метод обертка над Telegram.Bot. Может принимать помимо самого сообщения еще и параметры с помощью OptionMessage. Так же если размер сообщения будет больше 4000 символов, разделит текст на несколько сообщений.
Пример с комментариями простого меню представлен ниже
[ReplyMenuHandler("Меню")]
public static async Task ExampleReplyMenu(ITelegramBotClient botClient, Update update)
{
string msg = "Меню";
//Создаем настройки сообщения
var option = new OptionMessage();
//Создаем список для меню
var menuList = new List<KeyboardButton>();
//Добавляем кнопку с текстом
menuList.Add(new KeyboardButton("Кнопка 1"));
//Добавляем кнопку с запросом на контакт пользователя
menuList.Add(KeyboardButton.WithRequestContact("Отправить свой контакт"));
//Добавляем кнопку с запросом на локацию пользователя
menuList.Add(KeyboardButton.WithRequestLocation("Отправить свою локацию"));
//Добавляем кнопку с запросом отправки чата боту
menuList.Add(KeyboardButton.WithRequestChat("Отправить группу боту", new KeyboardButtonRequestChat() { RequestId = 2 }));
//Добавляем кнопку с запросом отправки пользователя боту
menuList.Add(KeyboardButton.WithRequestUser("Отправить пользователя боту", new KeyboardButtonRequestUser() { RequestId = 1 }));
//Добавляем кнопку с отправкой опроса
menuList.Add(KeyboardButton.WithRequestPoll("Отправить свое голосование"));
//Добавляем кнопку с запросом работы с WebApp
menuList.Add(KeyboardButton.WithWebApp("WebApp", new WebAppInfo() { Url = "https://prethink.github.io/telegram/webapp.html" }));
//Генерируем reply меню
//1 столбец, коллекция пунктов меню, вертикальное растягивание меню, пункт в самом низу по умолчанию
var menu = MenuGenerator.ReplyKeyboard(1, menuList, true, "Главное меню");
//Добавляем в настройки меню
option.MenuReplyKeyboardMarkup = menu;
await PRTelegramBot.Helpers.Message.Send(botClient, update, msg, option);
}
Результат работы:

Last updated