Skip to content

TH_Menu

Ivan edited this page Jul 15, 2025 · 3 revisions

📘 TH_Menu — модуль умных вложенных меню для Discord

🎯 Что такое TH_Menu?

TH_Menu — это модуль от TH_Systems, созданный для простого и гибкого построения вложенных Discord-меню на nextcord. Он позволяет в пару строк создать иерархическую структуру кнопок с автоматической навигацией, поиском, локализацией, пагинацией и загрузкой из JSON/YAML.

⚙️ Основные возможности

  • 🔙 Кнопка Назад | Автоматически появляется при вложенности
  • 🌍 Локализация | Поддержка Interaction.locale и словарей перевода
  • 🔎 Поиск | Поиск по всем пунктам меню (вкл. fuzzy)
  • 📚 Пагинация | Деление подменю по страницам (больше 25 пунктов)
  • 📁 Загрузка из файла | Поддержка JSON/YAML с колбэками
  • 🧠 SmartAction | Действия с условиями доступа и описанием
  • 📦 Автообновление | Предупреждение о новой версии на PyPI

🚀 Быстрый старт

from th_menu import SmartMenu

menu = SmartMenu(
    title="Меню",
    structure={
        "⚙ Настройки": lambda i, v: i.followup.send("Открыты настройки", ephemeral=True),
        "📬 Поддержка": lambda i, v: i.followup.send("Свяжитесь с нами", ephemeral=True),
    }
)

@bot.slash_command()
async def меню(interaction):
    await menu.send(interaction)

🌍 Локализация

Вы можете использовать dict с ключами языков ("en", "ru", и т.д.) в title, label, description:

title={"ru": "Главное меню", "en": "Main Menu"}

structure = {
    "settings": {
        "__label__": {"ru": "Настройки", "en": "Settings"},
        "__desc__": {"ru": "Управление", "en": "Control"},
        "__action__": lambda i, v: ...
    }
}

📁 Загрузка из YAML/JSON

# menu.yaml
Настройки:
  __label__: {"ru": "Настройки", "en": "Settings"}
  __action__: "open_settings"
from th_menu.loader import load_menu_structure

menu = SmartMenu(
    title={"ru": "Меню", "en": "Menu"},
    structure=load_menu_structure("menu.yaml", callbacks={
        "open_settings": lambda i, v: ...
    })
)

🔎 Поиск

from th_menu.search import search_menu

results = search_menu(menu.structure, "настройки", fuzzy=True)
for r in results:
    print("Найдено:", r)

📚 Пагинация

Если подменю содержит более 25 пунктов, TH_Menu сам разбивает его на страницы, добавляя кнопки навигации ⏪, 1/3, ⏩.

🧠 SmartAction

from th_menu.actions import SmartAction

structure = {
    "admin": SmartAction(
        label={"ru": "Админка", "en": "Admin"},
        description={"ru": "Только для админов", "en": "Admins only"},
        callback=lambda i, v: i.followup.send("🔐 Доступ"),
        condition=lambda i: i.user.guild_permissions.administrator
    )
}

💡 Автообновление

При импорте модуля проверяется последняя версия TH_Menu на PyPI. Если вышло обновление — в консоли появится подсказка:

📦 TH_Menu: доступна новая версия v0.2.0 (установлена v0.1.0)
🔁 Обновите: pip install -U TH_Menu