Создание Inline меню

Перед созданием меню требуется познакомиться со следующими элементами:

  • InlineCallback – Метод которые создает Inline кнопку с callback.

  • TCommand – Вспомогательный класс для отправки данных в callback.

InlineCallback принимает следующие параметры:

  • buttonName – название кнопки.

  • commandType – команда или тип команды. Принимает перечисление типа THeader, о котором написано ранее.

  • data – (не обязательный параметр) данные которые нужно передать в callback.

TCommand является базовым классом в котором хранятся данные которые нужно передать через callback. TCommand можно отнаследовать и создать свои переменные которые должны содержать свои данные.

ВНИМАНИЕ: Максимальный допустимый размер данных для обработки в callback_data 64байт!

Чтобы использовать дефолтный конвертер inline меню, но при этом сэкономить несколько байт можно использовать другой сериализатор ToonSerializedWrapper, который реализует интерфейс IPRSerializer.

Если вы хотите полностью исключить у себя проблему с ограничением в 64 байта, тогда нужно использовать другой конвертер. Для этого доступен FileInlineConverter реализующий IInlineMenuConverter, который сохраняет данные локально в json файлы в формате файлов "{Ид бота}-{Ид пользователя}-{Ид команды}".

IPRSerializer и IInlineMenuConverter поддерживают DI, вы можете их зарегистрировать как зависимости и бот их подтянет у себя.

В PRTelegramBot есть уже несколько готовых TCommand классов:

  • CallendarTCommand – используется для передачи даты (DateTime)

  • EntityTCommand<T> – используется для передачи id или другой не большой информации.

Пример создания inline меню

Примеры создания через билдер InlineKeyboardBuilder

Last updated