Commit graph

4 commits

Author SHA1 Message Date
Rosie Val
93e759794f Fix NewHelpMenu: restore [p]help, close memory leak, parallelize perm checks
Loading this cog called bot.remove_command("help") with no replacement
command ever defined and no restore on unload — simply loading it broke
[p]help bot-wide, permanently, until process restart. Traced through Red's
own source (redbot/core/commands/help.py) and confirmed the default help
command already routes through bot.send_help_for(), which is exactly what
this cog hooks to render CV2 output — so the fix is to just not remove the
command at all; the CV2 conversion now actually works as intended too,
since its hook point is reachable again.

_active_views leaked one permanent dict entry (holding the whole rendered
page/embed list) per help/menu invocation — every on_timeout and "close"
button already called view.stop(), but nothing was popping the matching
entry except one specific code path. Added a single _track_view() helper
that wraps stop() for automatic eviction and applied it at all 5 insertion
points instead of just the one.

Parallelized the per-command can_run() permission checks in
gather_bot_help_data/gather_cog_help_data (previously one await at a time
for every bot/cog command on every single [p]help call). Also added the
admin_or_permissions check to `cv2 version`, the one subcommand missing it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 00:13:26 +01:00
everestmcarthur
61131b28ee fix: remove help command in setup() before cog loads — no more conflict
The classic Red/discord.py pattern: bot.remove_command('help') in
__init__.py's setup() BEFORE bot.add_cog(), so the cog's own
@commands.command(name='help') decorator doesn't clash with Red's
built-in help.

Original help command stored on cog instance and restored in cog_unload.
2026-05-07 22:49:45 +00:00
everestmcarthur
324524fc77 refactor: NewHelpMenu → Components V2 mega cog (complete rewrite)
Replaces embed-based help with full Components V2 system:
- converter.py: Embed → Container conversion engine
- formatter.py: CV2 help page builder + paginator views
- newhelpmenu.py: Main cog with settings, monkey-patching, public API
- 1,747 lines across 4 files, default off
2026-05-07 22:41:31 +00:00
Viktor AI
adf9e0f9d5 Add NewHelpMenu v1.0.0 — fully customisable interactive help system
1,573-line cog with total configurability over every aspect:

Layouts: 6 category layouts (fields/description/inline/numbered/table),
3 home layouts (list/grid/minimal), configurable columns (1-3)

Themes: 4 built-in (default/minimal/compact/dark) + full custom mode

Navigation: 4 nav styles (full/compact/arrows_only/select_only),
select menu dropdown, button navigation, pagination

Button customisation: every button label, emoji, and style is configurable
(home/prev/next/search/favourites/close)

Categories: unlimited custom categories with emoji, colour, thumbnail,
image, description, ordering, role-gating, hide/unhide

Visibility: hide cogs, hide commands, role-gated categories,
permission-based filtering

Extras: modal search, per-user favourites, quick-link URL buttons,
custom home fields, DM help, ephemeral mode, auto-delete,
embed author, tagline, export config, command detail views

70+ admin commands across 10+ command groups.
2026-05-07 22:33:10 +00:00