TelegramBotMenu 0.0.2

dotnet add package TelegramBotMenu --version 0.0.2
NuGet\Install-Package TelegramBotMenu -Version 0.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TelegramBotMenu" Version="0.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add TelegramBotMenu --version 0.0.2
#r "nuget: TelegramBotMenu, 0.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install TelegramBotMenu as a Cake Addin
#addin nuget:?package=TelegramBotMenu&version=0.0.2

// Install TelegramBotMenu as a Cake Tool
#tool nuget:?package=TelegramBotMenu&version=0.0.2

How to use Menu-Extension

First of all, you need to initialize the object of TelegramBotClient and run.

var botClient = new TelegramBotClient(token);
...
var me = await botClient.GetMeAsync();

➡Pagination

Initialize your list of objects

List<MenuButtonModel> buttonModels = new()
{
    new MenuButtonModel("Button1", "Button1Value"),
    new MenuButtonModel("Button2", "Button2Value"),
    new MenuButtonModel("Button3", "Button3Value"),
    new MenuButtonModel("Button4", "Button4Value"),
    new MenuButtonModel("Button5", "Button5Value"),
    new MenuButtonModel("Button6", "Button6Value"),
    new MenuButtonModel("Button7", "Button7Value"),
    new MenuButtonModel("Button8", "Button8Value"),
    new MenuButtonModel("Button9", "Button9Value"),
};

Use GetPaginationInlineKeyboard method for get InlineKeyboardMarkup and send telegram message

const int columnCount = 2;
const int rowCount = 3;
var replyMenu = botClient.GetPaginationInlineKeyboard(buttonModels, columnCount, rowCount);
await botClient.SendTextMessageAsync(chatId, "YourMessage", replyMarkup: replyMenu);

👆Click button NEXT/PREV

You have to send clickedNavigation

// clickedNavigation - Data from CallbackQuery
var replyMenu = client.GetPaginationInlineKeyboard(buttonModels, columnCount, rowCount, clickedNavigation);
await botClient.EditMessageReplyMarkupAsync(chatId, messageId, replyMenu);

🌳Tree architecture (since version 0.0.2)

In addition to navigation, you can send child elements to the constructor for a tree-like architecture.

var childrenItems = new List<MenuButtonModel>() { new MenuButtonModel("ButtonInside", "InsideData") };
var item = new MenuButtonModel("Button1", "Button1Value", childrenItems);

🔗Static settings

You can change the text of the navigation buttons.

// Default values
public static class Settings
{
    public static string ButtonNextText = "»";
    public static string ButtonPrevText = "«";
    public static string ButtonUpText = "« up";
    public const string PaginationData = "toPage";
}
...
// Custom values
Settings.ButtonNextText = "👉";
Settings.ButtonPrevText = "👈";

👀Example of pagination

image

→ Click Button5 →

image

For a more detailed analysis, see the TelegramBotMenu.Tests

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.2 790 3/30/2022
0.0.1 386 3/28/2022