from aiogram import types from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder def get_reply_keyboard_for_post(): builder = InlineKeyboardBuilder() builder.row(types.InlineKeyboardButton( text="Опубликовать", callback_data="publish") ) builder.row(types.InlineKeyboardButton( text="Отклонить", callback_data="decline") ) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup def get_reply_keyboard(BotDB, user_id): builder = ReplyKeyboardBuilder() builder.add(types.KeyboardButton(text="📢Предложить свой пост")) builder.add(types.KeyboardButton(text="📩Связаться с админами")) builder.add(types.KeyboardButton(text="👋🏼Сказать пока!")) if not BotDB.get_info_about_stickers(user_id=user_id): builder.add(types.KeyboardButton(text="🤪Хочу стикеры")) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup def get_reply_keyboard_leave_chat(): builder = ReplyKeyboardBuilder() builder.add(types.KeyboardButton(text="Выйти из чата")) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup def get_reply_keyboard_admin(): builder = ReplyKeyboardBuilder() builder.add(types.KeyboardButton(text="Бан (Список)")) builder.add(types.KeyboardButton(text="Бан по нику")) builder.add(types.KeyboardButton(text="Разбан (список)")) builder.add(types.KeyboardButton(text="Вернуться в бота")) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup def create_keyboard_with_pagination(page: int, total_items: int, array_items: list[tuple[any, any]], callback: str): """ Создает клавиатуру с пагинацией для заданного набора элементов и устанавливает необходимый callback Args: page: Номер текущей страницы. total_items: Общее количество элементов. array_items: Лист кортежей. Содержит в себе user_name: user_id callback: Действие в коллбеке. Вернет callback вида ({callback}_{user_id}) Returns: InlineKeyboardMarkup: Клавиатура с кнопками пагинации. """ # Определяем общее количество страниц total_pages = (total_items + 9 - 1) // 9 # Создаем билдер для клавиатуры keyboard = InlineKeyboardBuilder() # Вычисляем стартовый номер для текущей страницы start_index = (page - 1) * 9 # Кнопки с номерами страниц for i in range(start_index, min(start_index + 9, len(array_items))): keyboard.add(types.InlineKeyboardButton( text=f"{array_items[i][0]}", callback_data=f"{callback}_{array_items[i][1]}" )) keyboard.adjust(3) next_button = types.InlineKeyboardButton( text="➡️ Следующая", callback_data=f"page_{page + 1}" ) prev_button = types.InlineKeyboardButton( text="⬅️ Предыдущая", callback_data=f"page_{page - 1}" ) keyboard.row(prev_button, next_button) home_button = types.InlineKeyboardButton( text="🏠 Назад", callback_data="return") keyboard.row(home_button) k = keyboard.as_markup() return k def create_keyboard_for_ban_reason(): builder = ReplyKeyboardBuilder() builder.add(types.KeyboardButton(text="Спам")) builder.add(types.KeyboardButton(text="Заебал стикерами")) builder.row(types.KeyboardButton(text="Реклама здесь: @kerrad1 ")) builder.row(types.KeyboardButton(text="Тема с лагерями: https://vk.com/topic-75343895_50049913")) builder.row(types.KeyboardButton(text="Отменить")) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup def create_keyboard_for_ban_days(): builder = ReplyKeyboardBuilder() builder.add(types.KeyboardButton(text="1")) builder.add(types.KeyboardButton(text="7")) builder.add(types.KeyboardButton(text="30")) builder.row(types.KeyboardButton(text="Навсегда")) builder.row(types.KeyboardButton(text="Отменить")) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup def create_keyboard_for_approve_ban(): builder = ReplyKeyboardBuilder() builder.add(types.KeyboardButton(text="Подтвердить")) builder.add(types.KeyboardButton(text="Отменить")) markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True) return markup