111 lines
4.6 KiB
Python
111 lines
4.6 KiB
Python
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="Вернуться в бота"))
|
||
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="Заебал стикерами"))
|
||
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.add(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
|