An embed version of the built-in help command for discord.py
Inspired by the DefaultHelpCommand that discord.py uses, but revised for embeds and additional sorting on individual pages that can be "scrolled" through.
pip install discord-pretty-help
Example of how to use it:
from discord.ext import commands
from pretty_help import PrettyHelp
bot = commands.Bot(command_prefix="!", help_command=PrettyHelp())
color
- Set the default embed colordelete_invoke
- Delete the message that invoked the help command. Requires message delete permission. Defaults isFalse
ending_note
- Set the footer of the embed. Ending notes are fed acommands.Context
(ctx
) and aPrettyHelp
(help
) instance for more advanced customization.image_url
- The url of the image to be used on the embedindex_title
- Set the index page name default is "Categories"menu
- The menu to use for navigating pages. Uses apretty_help.PrettyMenu()
instance. Default ispretty_help.AppMenu()
no_category
- Set the name of the page with commands not part of a category. Default is "No Category"paginator
- The paginator to use. One is created by default.send_typing
- A bool that indicates if the bot will send a typing indicator. Defaults toTrue
show_index
- Show the index page or notsort_commands
- Sort commands and categories alphabeticallythumbnail_url
- The url of the thumbnail to be used on the embed
- Uses Emojis to navigate
active_time
- Set the time (in seconds) that the message will be active. Default is 30sdelete_after_timeout
- Delete the message afteractive_time
instead of removing reactions. DefaultFalse
page_left
- The emoji to use to page leftpage_right
- The emoji to use to page rightremove
- The emoji to use to remove the help message
- Uses Application Interactions (buttons) for navigating
timeout
- The duration the interaction will be active for. Defaults toNone
.ephemeral
- Send as an ephemeral message. Defaults toFalse
.
By default, the help will just pick a random color on every invoke. You can change this using the color
argument:
from discord.ext import commands
from pretty_help import EmojiMenu, PrettyHelp
# ":discord:743511195197374563" is a custom discord emoji format. Adjust to match your own custom emoji.
menu = EmojiMenu(page_left="\U0001F44D", page_right="👎", remove=":discord:743511195197374563", active_time=5)
# Custom ending note
ending_note = "The ending note from {ctx.bot.user.name}\nFor command {help.clean_prefix}{help.invoked_with}"
bot = commands.Bot(command_prefix="!")
bot.help_command = PrettyHelp(menu=menu, ending_note=ending_note)
The basic help
command will break commands up by cogs. Each cog will be a different page. Those pages can be navigated.
- Subcommands in pages are indicated with a 🔗, previously it was unclear they were sub commands of the page title
- Support Application commands
- Support for GroupCogs
- Navigation using discord interactions e.g. Buttons and select menus
- discord.py must already be installed to use this
manage-messages
permission is recommended so reactions can be removed automatically