Spaces:
Runtime error
Runtime error
| # 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"), | |
| ] | |
| ] | |