Ufoptg's picture
Upload 93 files
78b07ad verified
raw
history blame
3.29 kB
# G: Glass Buttons
from math import ceil
from pyrogram.types import InlineKeyboardButton
from Hellbot.core import ENV, Symbols, db, Config
def gen_inline_keyboard(collection: list, row: int = 2) -> list[list[InlineKeyboardButton]]:
keyboard = []
for i in range(0, len(collection), row):
kyb = []
for x in collection[i : i + row]:
button = btn(*x)
kyb.append(button)
keyboard.append(kyb)
return keyboard
def btn(text, value, type="callback_data") -> InlineKeyboardButton:
return InlineKeyboardButton(text, **{type: value})
async def gen_inline_help_buttons(page: int, plugins: list) -> tuple[list, int]:
buttons = []
column = await db.get_env(ENV.btn_in_help) or 5
column = int(column)
emoji = await db.get_env(ENV.help_emoji) or "✧"
pairs = list(map(list, zip(plugins[::2], plugins[1::2])))
if len(plugins) % 2 == 1:
pairs.append([plugins[-1]])
max_pages = ceil(len(pairs) / column)
pairs = [pairs[i : i + column] for i in range(0, len(pairs), column)]
for pair in pairs[page]:
btn_pair = []
for i, plugin in enumerate(pair):
if i % 2 == 0:
btn_pair.append(
InlineKeyboardButton(f"{emoji} {plugin}", f"help_menu:{page}:{plugin}")
)
else:
btn_pair.append(
InlineKeyboardButton(f"{plugin} {emoji}", f"help_menu:{page}:{plugin}")
)
buttons.append(btn_pair)
buttons.append(
[
InlineKeyboardButton(
Symbols.previous, f"help_page:{(max_pages - 1) if page == 0 else (page - 1)}",
),
InlineKeyboardButton(
Symbols.close, "help_data:c"
),
InlineKeyboardButton(
Symbols.next, f"help_page:{0 if page == (max_pages - 1) else (page + 1)}",
),
]
)
return buttons, max_pages
async def gen_bot_help_buttons() -> list[list[InlineKeyboardButton]]:
buttons = []
plugins = sorted(Config.BOT_CMD_MENU)
emoji = await db.get_env(ENV.help_emoji) or "✧"
pairs = list(map(list, zip(plugins[::2], plugins[1::2])))
if len(plugins) % 2 == 1:
pairs.append([plugins[-1]])
for pair in pairs:
btn_pair = []
for i, plugin in enumerate(pair):
if i % 2 == 0:
btn_pair.append(
InlineKeyboardButton(f"{emoji} {plugin}", f"bot_help_menu:{plugin}")
)
else:
btn_pair.append(
InlineKeyboardButton(f"{plugin} {emoji}", f"bot_help_menu:{plugin}")
)
buttons.append(btn_pair)
buttons.append(
[
InlineKeyboardButton("🏠", "help_data:start"),
InlineKeyboardButton(Symbols.close, "help_data:botclose"),
]
)
return buttons
def start_button() -> list[list[InlineKeyboardButton]]:
return [
[
InlineKeyboardButton("⚙️ Help", "help_data:bothelp"),
InlineKeyboardButton("Source 📦", "help_data:source"),
]
]