from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder def button_create(iterable: iter, width: int = 1): """ Функуия для преобразования списка в кнопки для клавиатуры """ kb_builder = ReplyKeyboardBuilder() kb_builder.row(*[KeyboardButton(text=f'{iterable[i]}') for i in range(len(iterable))], width=width) return kb_builder.as_markup(resize_keyboard=True, one_time_keyboard=True) def create_inline_kb(width: int = 1, *args: str, **kwargs: str) -> InlineKeyboardMarkup: # Инициализируем билдер kb_builder = InlineKeyboardBuilder() # Инициализируем список для кнопок buttons: list[InlineKeyboardButton] = [] # Заполняем список кнопками из аргументов args и kwargs if args: for button in args: buttons.append(InlineKeyboardButton( text=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(resize_keyboard=True, one_time_keyboard=True)