-
Notifications
You must be signed in to change notification settings - Fork 0
TH_Menu
Ivan edited this page Jul 15, 2025
·
3 revisions
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: ...
}
}# 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, ⏩.
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