Repository: Cog-Creators/Red-DiscordBot

Issue:
[Help] Tagline formatting
# Feature request

<!-- This template is for feature requests. Please fill out the following: -->


#### Select the type of feature you are requesting:

<!-- To check a box, replace the space between the [] with a x -->

- [x] Cog
- [ ] Command
- [ ] API functionality

#### Describe your requested feature

Be able to use `[p]` in `[p]helpset tagline` to specify the context's prefix. Currently it will only use format on the default tagline. 

Nice to have: also the ability to reference the current command object for `command.signature` or `command.qualified_name`

Default tagline can use the context prefix: 
![image](https://user-images.githubusercontent.com/955640/101991420-8c276200-3c7a-11eb-8673-402d3a6bb89f.png)

Custom tagline can't use context prefix:
![image](https://user-images.githubusercontent.com/955640/101991456-c264e180-3c7a-11eb-9828-433d9032d36e.png)




Discussion:

Resolving patch:
diff --git a/redbot/core/commands/help.py b/redbot/core/commands/help.py
--- a/redbot/core/commands/help.py
+++ b/redbot/core/commands/help.py
@@ -308,6 +308,12 @@ def get_default_tagline(ctx: Context):
             command2=f"{ctx.clean_prefix}help <category>",
         )
 
+    @staticmethod
+    def format_tagline(ctx: Context, tagline: str):
+        if not tagline:
+            return
+        return tagline.replace("[p]", ctx.clean_prefix)
+
     @staticmethod
     def get_command_signature(ctx: Context, command: commands.Command) -> str:
         parent = command.parent
@@ -345,7 +351,7 @@ async def format_command_help(
 
         description = command.description or ""
 
-        tagline = (help_settings.tagline) or self.get_default_tagline(ctx)
+        tagline = self.format_tagline(ctx, help_settings.tagline) or self.get_default_tagline(ctx)
         signature = _("Syntax: {command_signature}").format(
             command_signature=self.get_command_signature(ctx, command)
         )
@@ -569,7 +575,7 @@ async def format_cog_help(self, ctx: Context, obj: commands.Cog, help_settings:
             return
 
         description = obj.format_help_for_context(ctx)
-        tagline = (help_settings.tagline) or self.get_default_tagline(ctx)
+        tagline = self.format_tagline(ctx, help_settings.tagline) or self.get_default_tagline(ctx)
 
         if await self.embed_requested(ctx):
             emb = {"embed": {"title": "", "description": ""}, "footer": {"text": ""}, "fields": []}
@@ -642,7 +648,7 @@ async def format_bot_help(self, ctx: Context, help_settings: HelpSettings):
             return
 
         description = ctx.bot.description or ""
-        tagline = (help_settings.tagline) or self.get_default_tagline(ctx)
+        tagline = self.format_tagline(ctx, help_settings.tagline) or self.get_default_tagline(ctx)
 
         if await self.embed_requested(ctx):
             emb = {"embed": {"title": "", "description": ""}, "footer": {"text": ""}, "fields": []}
@@ -763,7 +769,9 @@ async def command_not_found(self, ctx, help_for, help_settings: HelpSettings):
                     name=_("{ctx.me.display_name} Help Menu").format(ctx=ctx),
                     icon_url=ctx.me.display_avatar,
                 )
-                tagline = help_settings.tagline or self.get_default_tagline(ctx)
+                tagline = self.format_tagline(
+                    ctx, help_settings.tagline
+                ) or self.get_default_tagline(ctx)
                 ret.set_footer(text=tagline)
                 await ctx.send(embed=ret)
             else:
@@ -776,7 +784,9 @@ async def command_not_found(self, ctx, help_for, help_settings: HelpSettings):
                     name=_("{ctx.me.display_name} Help Menu").format(ctx=ctx),
                     icon_url=ctx.me.display_avatar,
                 )
-                tagline = help_settings.tagline or self.get_default_tagline(ctx)
+                tagline = self.format_tagline(
+                    ctx, help_settings.tagline
+                ) or self.get_default_tagline(ctx)
                 ret.set_footer(text=tagline)
                 await ctx.send(embed=ret)
             else:
@@ -795,7 +805,9 @@ async def subcommand_not_found(self, ctx, command, not_found, help_settings: Hel
                 name=_("{ctx.me.display_name} Help Menu").format(ctx=ctx),
                 icon_url=ctx.me.display_avatar,
             )
-            tagline = help_settings.tagline or self.get_default_tagline(ctx)
+            tagline = self.format_tagline(ctx, help_settings.tagline) or self.get_default_tagline(
+                ctx
+            )
             ret.set_footer(text=tagline)
             await ctx.send(embed=ret)
         else:
diff --git a/redbot/core/core_commands.py b/redbot/core/core_commands.py
--- a/redbot/core/core_commands.py
+++ b/redbot/core/core_commands.py
@@ -4535,8 +4535,11 @@ async def helpset_tagline(self, ctx: commands.Context, *, tagline: str = None):
         The maximum tagline length is 2048 characters.
         This setting only applies to embedded help. If no tagline is specified, the default will be used instead.
 
+        You can use `[\u200bp]` in your tagline, which will be replaced by the bot's prefix.
+
         **Examples:**
         - `[p]helpset tagline Thanks for using the bot!`
+        - `[p]helpset tagline Use [\u200bp]invite to add me to your server.`
         - `[p]helpset tagline` - Resets the tagline to the default.
 
         **Arguments:**


Test patch: