InlineKeyboardBuilder

Билдер для построения inline клавиатуры. Данный билдер наследуется от базового класса KeyboardBuilderBase.

using PRTelegramBot.Interfaces;
using PRTelegramBot.Utils;
using Telegram.Bot.Types.ReplyMarkups;

namespace PRTelegramBot.Builders.Keyboard
{
    /// <summary>
    /// 
    /// </summary>
    public class InlineKeyboardBuilder : KeyboardBuilderBase<IInlineContent, InlineKeyboardMarkup, InlineKeyboardBuilder>
    {
        #region Базовый класс

        /// <inheritdoc/>
        public override InlineKeyboardMarkup Build()
        {
            this.ReplaceEmptyButtons();
            var convertedButtons = buttons
                .Select(row => row
                    .Select(button => InlineUtils.GetInlineButton(button))
                    .ToList())
                .ToList();

            return new InlineKeyboardMarkup(convertedButtons);
        }

        /// <inheritdoc/>
        protected override void ReplaceEmptyButtons()
        {
            foreach (var row in buttons)
            {
                foreach (var button in row)
                {
                    if (button.GetButtonName().Equals(KEY_EMPTY_BUTTON_NAME, StringComparison.OrdinalIgnoreCase))
                        button.SetButtonName(emptyButtonName);
                }
            }
        }

        #endregion
    }
}

Last updated