Найти в Дзене
Зарабатываем на Python

Как создать Inline кнопки для Телеграмм бота на Python

Эта статья для тех кто не любит читать долгие тексты. Я покажу Вам не большой код который поможет быстро и без проблем создавать Inline клавиатуры для Вашего бота. В основном кнопки используют 2х видов: callback_data кнопочки для Телеграм бота в виде комбайна: LEXICON_MENU_COMMANDS_RU: dict[str, str] = {
'/help': 'Информация',
'/on_vpn': 'Подключить VPN',
'/my_vpn': 'Мой VPN',
'/ref': 'Реферальная программа',
'/my_id': 'Мой ID'
} # Функция генерит инлайн-клавиатуру автоматом в зависимости от ЛЕКСИКОНА
def create_inline_kb(width: int, last_btn: str | None = None, *args: str, **kwargs: str) -> InlineKeyboardMarkup:
# Инициализация билдера
kb_builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
# Инициализация списка кнопок
buttons: list[InlineKeyboardButton] = []
# Заполнение списка кнопками из аргументов args и kwargs
if args:
for button in args:
buttons.append(InlineKeyboardButton(
text=LEXICON_M
Оглавление

Эта статья для тех кто не любит читать долгие тексты.

Я покажу Вам не большой код который поможет быстро и без проблем создавать Inline клавиатуры для Вашего бота.

В основном кнопки используют 2х видов:

  • callback
  • url

callback_data кнопочки для Телеграм бота в виде комбайна:

LEXICON_MENU_COMMANDS_RU: dict[str, str] = {
'/help': 'Информация',
'/on_vpn': 'Подключить VPN',
'/my_vpn': 'Мой VPN',
'/ref': 'Реферальная программа',
'/my_id': 'Мой ID'
}

# Функция генерит инлайн-клавиатуру автоматом в зависимости от ЛЕКСИКОНА
def create_inline_kb(width: int, last_btn: str | None = None, *args: str, **kwargs: str) -> InlineKeyboardMarkup:
# Инициализация билдера
kb_builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
# Инициализация списка кнопок
buttons: list[InlineKeyboardButton] = []

# Заполнение списка кнопками из аргументов args и kwargs
if args:
for button in args:
buttons.append(InlineKeyboardButton(
text=LEXICON_MENU_COMMANDS_RU[button] if button in LEXICON_MENU_COMMANDS_RU else button,
callback_data=button))
if kwargs:
for button, text in kwargs.items():
buttons.append(InlineKeyboardButton(text=text, callback_data=button))


# Распаковка списка с кнопками в билдер методом row c параметром width
kb_builder.row(*buttons, width=width)

# Возврат объекта инлайн-клавиатуры
return kb_builder.as_markup()

В итоге в своем основном коде Вы можете вызвать данную функцию примерно так:

keyboard_in = create_inline_kb(2, **LEXICON_MENU1_BUTTON_RU)

где цифра 2 означает количество кнопок в ряду, а второй аргумент это словарь наших кнопок!

url кнопочки для Телеграм бота в виде комбайна:

LEXICON_MENU_COMMANDS_RU: dict[str, str] = {
'Информация': 'Ссылка',
'Подключить VPN': 'Ссылка'
}

# Функция генерит инлайн-клавиатуру автоматом в зависимости от ЛЕКСИКОНА
def create_inline_kb(width: int, last_btn: str | None = None, *args: str, **kwargs: str) -> InlineKeyboardMarkup:
# Инициализация билдера
kb_builder: InlineKeyboardBuilder = InlineKeyboardBuilder()
# Инициализация списка кнопок
buttons: list[InlineKeyboardButton] = []

# Заполнение списка кнопками из аргументов args и kwargs
if args:
for button in args:
buttons.append(InlineKeyboardButton(
text=LEXICON_MENU_COMMANDS_RU[button] if button in LEXICON_MENU_COMMANDS_RU else button,
url=button))
if kwargs:
for button, text in kwargs.items():
buttons.append(InlineKeyboardButton(text=text, url=button))


# Распаковка списка с кнопками в билдер методом row c параметром width
kb_builder.row(*buttons, width=width)

# Возврат объекта инлайн-клавиатуры
return kb_builder.as_markup()

Вот так просто мы с Вами можем используя несколько функций создавать различные клавиатуры для нашего бота.

Подписывайтесь на канал и оставляйте свои комментарии.