Files
2026-07-15 07:17:25 +05:00

83 lines
2.9 KiB
Python

# - *- coding: utf- 8 - *-
import math
from typing import List
from aiogram.types import InlineKeyboardButton
from tgbot.utils.const_functions import ikb
# Генерация пагинации страниц
def build_pagination_finl(
get_list: List[object],
button_data: str,
remover: int,
) -> List[InlineKeyboardButton]:
save_kb = []
if len(get_list) % 10 == 0:
remover_page = len(get_list)
else:
remover_page = len(get_list) - len(get_list) % 10
if len(get_list) % 10 == 0 and remover_page == len(get_list):
remover_page -= 10
if remover >= len(get_list): remover -= 10
if remover < 0: remover = 0
if len(get_list) <= 10:
...
elif len(get_list) > 10 and remover < 10:
if len(get_list) > 20:
save_kb += [
ikb(f"1/{math.ceil(len(get_list) / 10)}", data="..."),
ikb("➡️", data=f"{button_data}:{remover + 10}"),
ikb("", data=f"{button_data}:{remover_page}"),
]
else:
save_kb += [
ikb(f"1/{math.ceil(len(get_list) / 10)}", data="..."),
ikb("➡️", data=f"{button_data}:{remover + 10}"),
]
elif remover + 10 >= len(get_list):
if len(get_list) > 20:
save_kb += [
ikb("", data=f"{button_data}:0"),
ikb("⬅️", data=f"{button_data}:{remover - 10}"),
ikb(f"{str(remover + 10)[:-1]}/{math.ceil(len(get_list) / 10)}", data="..."),
]
else:
save_kb += [
ikb("⬅️", data=f"{button_data}:{remover - 10}"),
ikb(f"{str(remover + 10)[:-1]}/{math.ceil(len(get_list) / 10)}", data="..."),
]
else:
if len(get_list) > 20:
if remover >= 20:
save_kb += [
ikb("", data=f"{button_data}:0"),
ikb("⬅️", data=f"{button_data}:{remover - 10}"),
ikb(f"{str(remover + 10)[:-1]}/{math.ceil(len(get_list) / 10)}", data="..."),
ikb("➡️", data=f"{button_data}:{remover + 10}"),
]
else:
save_kb += [
ikb("⬅️", data=f"{button_data}:{remover - 10}"),
ikb(f"{str(remover + 10)[:-1]}/{math.ceil(len(get_list) / 10)}", data="..."),
ikb("➡️", data=f"{button_data}:{remover + 10}"),
]
if remover_page - 10 > remover:
save_kb += [
ikb("", data=f"{button_data}:{remover_page}"),
]
else:
save_kb += [
ikb("⬅️", data=f"{button_data}:{remover - 10}"),
ikb(f"{str(remover + 10)[:-1]}/{math.ceil(len(get_list) / 10)}", data="..."),
ikb("➡️", data=f"{button_data}:{remover + 10}"),
]
return save_kb