From ef493bb8d2464521a245559741650fca33a155e5 Mon Sep 17 00:00:00 2001 From: stijndcl Date: Fri, 1 Jul 2022 23:13:18 +0200 Subject: [PATCH 1/2] Start working on help --- didier/cogs/help.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 didier/cogs/help.py diff --git a/didier/cogs/help.py b/didier/cogs/help.py new file mode 100644 index 0000000..ccd92da --- /dev/null +++ b/didier/cogs/help.py @@ -0,0 +1,43 @@ +from typing import Mapping, Optional, List, Any + +import discord +from discord.ext import commands + +from didier import Didier + + +class CustomHelpCommand(commands.MinimalHelpCommand): + """Customised Help command to override the default implementation + The default is ugly as hell + """ + + client: Didier + + def __init__(self, client: Didier, **kwargs): + super().__init__(**kwargs) + self.client = client + + def _help_embed_base(self, title: str) -> discord.Embed: + """Create the base structure for the embeds that get sent with the Help commands""" + embed = discord.Embed(colour=discord.Colour.blue()) + embed.set_author(name=title) + embed.set_footer(text="Syntax: Didier Help [Categorie] of Didier Help [Commando]") + return embed + + async def send_bot_help(self, mapping: Mapping[Optional[commands.Cog], List[commands.Command[Any, ..., Any]]], /): + embed = self._help_embed_base("Categorieën") + + categories = list(mapping.keys()) + print(categories) + + +class Help(commands.Cog): + """Cog housing the custom Help command""" + + client: Didier + + def __init__(self, client: Didier): + super().__init__() + self.client = client + self.client.help_command = CustomHelpCommand(self.client) + self.client.help_command.cog = self From f33aed0cebf79cba285b17d5b624b2c775fdd3d6 Mon Sep 17 00:00:00 2001 From: stijndcl Date: Fri, 1 Jul 2022 23:58:39 +0200 Subject: [PATCH 2/2] Send cog help --- didier/cogs/help.py | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/didier/cogs/help.py b/didier/cogs/help.py index ccd92da..9da24ca 100644 --- a/didier/cogs/help.py +++ b/didier/cogs/help.py @@ -1,4 +1,4 @@ -from typing import Mapping, Optional, List, Any +from typing import Mapping, Optional, List import discord from discord.ext import commands @@ -11,12 +11,6 @@ class CustomHelpCommand(commands.MinimalHelpCommand): The default is ugly as hell """ - client: Didier - - def __init__(self, client: Didier, **kwargs): - super().__init__(**kwargs) - self.client = client - def _help_embed_base(self, title: str) -> discord.Embed: """Create the base structure for the embeds that get sent with the Help commands""" embed = discord.Embed(colour=discord.Colour.blue()) @@ -24,20 +18,25 @@ class CustomHelpCommand(commands.MinimalHelpCommand): embed.set_footer(text="Syntax: Didier Help [Categorie] of Didier Help [Commando]") return embed - async def send_bot_help(self, mapping: Mapping[Optional[commands.Cog], List[commands.Command[Any, ..., Any]]], /): + async def _filter_cogs(self, cogs: List[commands.Cog]) -> List[commands.Cog]: + """Filter the list of cogs down to all those that the user can see""" + # Remove cogs that we never want to see in the help page because they + # don't contain commands + filtered_cogs = list(filter(lambda cog: cog is not None and cog.qualified_name.lower() not in ("tasks",), cogs)) + + # Remove owner-only cogs + if not await self.context.bot.is_owner(self.context.author): + filtered_cogs = list(filter(lambda cog: cog.qualified_name.lower() not in ("owner",), filtered_cogs)) + + return list(sorted(filtered_cogs, key=lambda cog: cog.qualified_name)) + + async def send_bot_help(self, mapping: Mapping[Optional[commands.Cog], List[commands.Command]], /): embed = self._help_embed_base("Categorieën") - - categories = list(mapping.keys()) - print(categories) + filtered_cogs = await self._filter_cogs(list(mapping.keys())) + embed.description = "\n".join(list(map(lambda cog: cog.qualified_name, filtered_cogs))) + await self.get_destination().send(embed=embed) -class Help(commands.Cog): - """Cog housing the custom Help command""" - - client: Didier - - def __init__(self, client: Didier): - super().__init__() - self.client = client - self.client.help_command = CustomHelpCommand(self.client) - self.client.help_command.cog = self +async def setup(client: Didier): + """Load the cog""" + client.help_command = CustomHelpCommand()