83 lines
2.9 KiB
Python
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
|