Создание Inline меню
Перед созданием меню требуется познакомиться со следующими элементами:
InlineCallback – Метод которые создает Inline кнопку с callback.
TCommand – Вспомогательный класс для отправки данных в callback.
InlineCallback принимает следующие параметры:
buttonName – название кнопки.
commandType – команда или тип команды. Принимает перечисление типа THeader, о котором написано ранее.
data – (не обязательный параметр) данные которые нужно передать в callback.
TCommand является базовым классом в котором хранятся данные которые нужно передать через callback. TCommand можно отнаследовать и создать свои переменные которые должны содержать свои данные.
ВНИМАНИЕ: Максимальный допустимый размер данных для обработки в callback 128 байт!
В PRTelegramBot есть уже несколько готовых TCommand классов:
CallendarTCommand – используется для передачи даты (DateTime)
EntityTCommand<T> – используется для передачи id или другой не большой информации.
Пример создания inline меню
public class Commands
{
/// <summary>
/// Напишите в чате "Тест"
/// </summary>
[ReplyMenuHandler("Тест")]
public static async Task ExampleReply(ITelegramBotClient botClient, Update update)
{
/* Создание новой кнопки с callback данными
* Название кнопки
* Models.Enums.CustomTHeader.ExampleOne - Заголовок команды
*/
var exampleItemOne = new InlineCallback("Пример 1", CustomTHeader.ExampleOne);
/* Создание новой кнопки с callback данными
* Название кнопки
* Models.Enums.CustomTHeader.ExampleOne - Заголовок команды
* new EntityTCommand(2) - Данные которые требуется передать
*/
var exampleItemTwo = new InlineCallback<EntityTCommand<long>>("Пример 2", CustomTHeader.ExampleTwo, new EntityTCommand<long>(2));
/* Создание новой кнопки с callback данными
* Models.Enums.CustomTHeader.ExampleOne - Заголовок команды
* new EntityTCommand(2) - Данные которые требуется передать
*/
var exampleItemThree = new InlineCallback<EntityTCommand<long>>("Пример 3", CustomTHeader.ExampleThree, new EntityTCommand<long>(3));
// Создает inline кнопку с ссылкой
var url = new InlineURL("Google", "https://google.com");
// Создаем кнопку для работы с webApp
var webdata = new InlineWebApp("WA", "https://prethink.github.io/telegram/webapp.html");
//IInlineContent - реализуют все inline кнопки
List<IInlineContent> menu = new();
menu.Add(exampleItemOne);
menu.Add(exampleItemTwo);
menu.Add(exampleItemThree);
menu.Add(url);
menu.Add(webdata);
//Генерация меню на основе данных в 1 столбец
var testMenu = MenuGenerator.InlineKeyboard(1, menu);
//Создание настроек для передачи в сообщение
var option = new OptionMessage();
//Передача меню в настройки
option.MenuInlineKeyboardMarkup = testMenu;
string msg = "Пример работы меню";
await PRTelegramBot.Helpers.Message.Send(botClient, update, msg, option);
}
}
Last updated