@nerduz

Как сделать генерацию inline кнопок на aiogram 3.0?

Не работает .add в aiogram 3.0, подскажите что лучше использовать.
def genmarkup(data):
 
builder = KeyboardBuilder(button_type=InlineKeyboardButton)
markup = InlineKeyboardMarkup(inline_keyboard=builder.export())

for i in data: 
    markup.add(InlineKeyboardButton(i[1], callback_data=i[2]))
return markup
  • Вопрос задан
  • 5743 просмотра
Пригласить эксперта
Ответы на вопрос 1
febday
@febday
Функции .add больше нет в InlineKeyboardMarkup, данная функция была перенесена в InlineKeyboardBuilder и изменена немного по функционалу

Что использовать зависит от вас. Для использования InlineKeyboardMarkup теперь нужно отправлять список кнопок
А вот InlineKeyboardBuilder это примерно такой же функционал как у InlineKeyboardMarkup из aiogram 2.0

Пример использования InlineKeyboardBuilder:
from aiogram import types
from aiogram.utils.keyboard import InlineKeyboardBuilder

builder = InlineKeyboardBuilder()
# 1 вариант (в строку)
builder.row(
  types.InlineKeyboardButton(text, callback_data),
  types.InlineKeyboardButton(text, callback_data)
)
# ---
# 2 вариант (в строку)
builder.button(text, callback_data)
builder.button(text, callback_data)
# ---

# 1 вариант (в столбец)
builder.row(
  types.InlineKeyboardButton(text, callback_data),
  types.InlineKeyboardButton(text, callback_data),
  width=1
)
# ---
# 2 вариант (в столбец)
builder.button(text, callback_data)
builder.button(text, callback_data)
builder.adjust(1)
# ---


Пример использования InlineKeyboardMarkup:
kb = [
  [
    types.InlineKeyboardButton(text, callback_data),
    types.InlineKeyboardButton(text, callback_data)
  ],
  [
    types.InlineKeyboardButton(text, callback_data)
  ]
]
keyboard = types.InlineKeyboardMarkup(inline_keyboard=kb)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы