style: isort + black
This commit is contained in:
@@ -1,24 +1,21 @@
|
||||
from aiogram import types
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder
|
||||
|
||||
# Local imports - metrics
|
||||
from helper_bot.utils.metrics import track_errors, track_time
|
||||
|
||||
|
||||
def get_reply_keyboard_for_post():
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(types.InlineKeyboardButton(
|
||||
text="Опубликовать", callback_data="publish"),
|
||||
types.InlineKeyboardButton(
|
||||
text="Отклонить", callback_data="decline")
|
||||
)
|
||||
builder.row(types.InlineKeyboardButton(
|
||||
text="👮♂️ Забанить", callback_data="ban")
|
||||
builder.row(
|
||||
types.InlineKeyboardButton(text="Опубликовать", callback_data="publish"),
|
||||
types.InlineKeyboardButton(text="Отклонить", callback_data="decline"),
|
||||
)
|
||||
builder.row(types.InlineKeyboardButton(text="👮♂️ Забанить", callback_data="ban"))
|
||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||
return markup
|
||||
|
||||
|
||||
|
||||
async def get_reply_keyboard(db, user_id):
|
||||
builder = ReplyKeyboardBuilder()
|
||||
builder.row(types.KeyboardButton(text="📢Предложить свой пост"))
|
||||
@@ -43,21 +40,22 @@ def get_reply_keyboard_admin():
|
||||
builder.row(
|
||||
types.KeyboardButton(text="Бан (Список)"),
|
||||
types.KeyboardButton(text="Бан по нику"),
|
||||
types.KeyboardButton(text="Бан по ID")
|
||||
types.KeyboardButton(text="Бан по ID"),
|
||||
)
|
||||
builder.row(
|
||||
types.KeyboardButton(text="Разбан (список)"),
|
||||
types.KeyboardButton(text="📊 ML Статистика")
|
||||
)
|
||||
builder.row(
|
||||
types.KeyboardButton(text="Вернуться в бота")
|
||||
types.KeyboardButton(text="📊 ML Статистика"),
|
||||
)
|
||||
builder.row(types.KeyboardButton(text="Вернуться в бота"))
|
||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||
return markup
|
||||
|
||||
|
||||
@track_time("create_keyboard_with_pagination", "keyboard_service")
|
||||
@track_errors("keyboard_service", "create_keyboard_with_pagination")
|
||||
def create_keyboard_with_pagination(page: int, total_items: int, array_items: list, callback: str):
|
||||
def create_keyboard_with_pagination(
|
||||
page: int, total_items: int, array_items: list, callback: str
|
||||
):
|
||||
"""
|
||||
Создает клавиатуру с пагинацией для заданного набора элементов и устанавливает необходимый callback
|
||||
|
||||
@@ -70,74 +68,79 @@ def create_keyboard_with_pagination(page: int, total_items: int, array_items: li
|
||||
Returns:
|
||||
InlineKeyboardMarkup: Клавиатура с кнопками пагинации.
|
||||
"""
|
||||
|
||||
|
||||
# Проверяем валидность входных данных
|
||||
if page < 1:
|
||||
page = 1
|
||||
if not array_items:
|
||||
# Если нет элементов, возвращаем только кнопку "Назад"
|
||||
keyboard = InlineKeyboardBuilder()
|
||||
home_button = types.InlineKeyboardButton(text="🏠 Назад", callback_data="return")
|
||||
home_button = types.InlineKeyboardButton(
|
||||
text="🏠 Назад", callback_data="return"
|
||||
)
|
||||
keyboard.row(home_button)
|
||||
return keyboard.as_markup()
|
||||
|
||||
# Определяем общее количество страниц
|
||||
items_per_page = 9
|
||||
total_pages = (total_items + items_per_page - 1) // items_per_page
|
||||
|
||||
|
||||
# Ограничиваем страницу максимальным значением
|
||||
if page > total_pages:
|
||||
page = total_pages
|
||||
|
||||
# Создаем билдер для клавиатуры
|
||||
keyboard = InlineKeyboardBuilder()
|
||||
|
||||
|
||||
# Вычисляем стартовый номер для текущей страницы
|
||||
start_index = (page - 1) * items_per_page
|
||||
|
||||
|
||||
# Кнопки с элементами текущей страницы
|
||||
end_index = min(start_index + items_per_page, len(array_items))
|
||||
current_row = []
|
||||
|
||||
|
||||
for i in range(start_index, end_index):
|
||||
current_row.append(types.InlineKeyboardButton(
|
||||
text=f"{array_items[i][0]}", callback_data=f"{callback}_{array_items[i][1]}"
|
||||
))
|
||||
|
||||
current_row.append(
|
||||
types.InlineKeyboardButton(
|
||||
text=f"{array_items[i][0]}",
|
||||
callback_data=f"{callback}_{array_items[i][1]}",
|
||||
)
|
||||
)
|
||||
|
||||
# Когда набирается 3 кнопки, добавляем ряд
|
||||
if len(current_row) == 3:
|
||||
keyboard.row(*current_row)
|
||||
current_row = []
|
||||
|
||||
|
||||
# Добавляем оставшиеся кнопки, если они есть
|
||||
if current_row:
|
||||
keyboard.row(*current_row)
|
||||
|
||||
|
||||
# Создаем кнопки навигации только если нужно
|
||||
navigation_buttons = []
|
||||
|
||||
|
||||
# Кнопка "Предыдущая" - показываем только если не первая страница
|
||||
if page > 1:
|
||||
prev_button = types.InlineKeyboardButton(
|
||||
text="⬅️ Предыдущая", callback_data=f"page_{page - 1}"
|
||||
)
|
||||
navigation_buttons.append(prev_button)
|
||||
|
||||
|
||||
# Кнопка "Следующая" - показываем только если не последняя страница
|
||||
if page < total_pages:
|
||||
next_button = types.InlineKeyboardButton(
|
||||
text="➡️ Следующая", callback_data=f"page_{page + 1}"
|
||||
)
|
||||
navigation_buttons.append(next_button)
|
||||
|
||||
|
||||
# Добавляем кнопки навигации, если они есть
|
||||
if navigation_buttons:
|
||||
keyboard.row(*navigation_buttons)
|
||||
|
||||
|
||||
# Кнопка "Назад"
|
||||
home_button = types.InlineKeyboardButton(text="🏠 Назад", callback_data="return")
|
||||
keyboard.row(home_button)
|
||||
|
||||
|
||||
return keyboard.as_markup()
|
||||
|
||||
|
||||
@@ -146,7 +149,11 @@ def create_keyboard_for_ban_reason():
|
||||
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="Тема с лагерями: https://vk.com/topic-75343895_50049913"
|
||||
)
|
||||
)
|
||||
builder.row(types.KeyboardButton(text="Отменить"))
|
||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||
return markup
|
||||
@@ -176,12 +183,12 @@ def get_main_keyboard():
|
||||
# Первая строка: Высказаться и послушать
|
||||
builder.row(
|
||||
types.KeyboardButton(text="🎤Высказаться"),
|
||||
types.KeyboardButton(text="🎧Послушать")
|
||||
types.KeyboardButton(text="🎧Послушать"),
|
||||
)
|
||||
# Вторая строка: сбросить прослушивания и узнать эмодзи
|
||||
builder.row(
|
||||
types.KeyboardButton(text="🔄Сбросить прослушивания"),
|
||||
types.KeyboardButton(text="😊Узнать эмодзи")
|
||||
types.KeyboardButton(text="😊Узнать эмодзи"),
|
||||
)
|
||||
# Третья строка: Вернуться в меню
|
||||
builder.row(types.KeyboardButton(text="Отменить"))
|
||||
@@ -191,11 +198,7 @@ def get_main_keyboard():
|
||||
|
||||
def get_reply_keyboard_for_voice():
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(types.InlineKeyboardButton(
|
||||
text="Сохранить", callback_data="save")
|
||||
)
|
||||
builder.row(types.InlineKeyboardButton(
|
||||
text="Удалить", callback_data="delete")
|
||||
)
|
||||
builder.row(types.InlineKeyboardButton(text="Сохранить", callback_data="save"))
|
||||
builder.row(types.InlineKeyboardButton(text="Удалить", callback_data="delete"))
|
||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||
return markup
|
||||
|
||||
Reference in New Issue
Block a user