Repository: Cog-Creators/Red-DiscordBot

Issue:
[V3] Help on non-existant subcommand
### Type:

- [ ] Suggestion
- [x] Bug

### Brief description of the problem
`help` fails with error when asking for subcommand on command with no subcommands

### Expected behavior
Tells user that no subcommands exists
### Actual behavior
```
Exception in command 'help'
Traceback (most recent call last):
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\redbot\core\help_formatter.py", line 328, in help
    command = command.all_commands.get(key)
AttributeError: 'Command' object has no attribute 'all_commands'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\discord\ext\commands\core.py", line 62, in wrapped
    ret = yield from coro(*args, **kwargs)
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\redbot\core\help_formatter.py", line 344, in help
    color=ctx.bot.formatter.color,
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\redbot\core\help_formatter.py", line 77, in color
    if self.pm_check(self.context):
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\redbot\core\help_formatter.py", line 61, in pm_check
    return isinstance(ctx.channel, discord.DMChannel)
AttributeError: 'NoneType' object has no attribute 'channel'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\discord\ext\commands\bot.py", line 886, in invoke
    yield from ctx.command.invoke(ctx)
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\discord\ext\commands\core.py", line 514, in invoke
    yield from injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\Bobloy\Documents\virtualenv\lib\site-packages\discord\ext\commands\core.py", line 71, in wrapped
    raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'channel'
```
### Steps to reproduce

1. Run `[p]help help test`
2. Observe error



Discussion:
I'm actually getting a different error when doing `[p]help help test`

```py
Exception in command 'help'
Traceback (most recent call last):
  File "/home/palm/.pyenv/versions/redbot/lib/python3.6/site-packages/redbot/core/help_formatter.py", line 328, in help
    command = command.all_commands.get(key)
AttributeError: 'Command' object has no attribute 'all_commands'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/palm/.pyenv/versions/redbot/lib/python3.6/site-packages/discord/ext/commands/core.py", line 62, in wrapped
    ret = yield from coro(*args, **kwargs)
  File "/home/palm/.pyenv/versions/redbot/lib/python3.6/site-packages/redbot/core/help_formatter.py", line 345, in help
    author=ctx.author.display_name))
TypeError: simple_embed() got an unexpected keyword argument 'author'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/palm/.pyenv/versions/redbot/lib/python3.6/site-packages/discord/ext/commands/bot.py", line 886, in invoke
    yield from ctx.command.invoke(ctx)
  File "/home/palm/.pyenv/versions/redbot/lib/python3.6/site-packages/discord/ext/commands/core.py", line 514, in invoke
    yield from injected(*ctx.args, **ctx.kwargs)
  File "/home/palm/.pyenv/versions/redbot/lib/python3.6/site-packages/discord/ext/commands/core.py", line 71, in wrapped
    raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: simple_embed() got an unexpected keyword argument 'author'
```
Run in DM to get my error
nope, I actually still get my error when running in dm
what's interesting is that I'm only seeing this error when doing `[p]help help <insert something here>`
You're right, our errors are somewhat different. Maybe it's different per version?
Core error does seem to be with simple_embed though

Resolving patch:
diff --git a/redbot/core/help_formatter.py b/redbot/core/help_formatter.py
--- a/redbot/core/help_formatter.py
+++ b/redbot/core/help_formatter.py
@@ -269,6 +269,13 @@ def cmd_not_found(self, ctx, cmd, color=None):
             color=color)
         return embed
 
+    def cmd_has_no_subcommands(self, ctx, cmd, color=None):
+        embed = self.simple_embed(
+            ctx,
+            title=ctx.bot.command_has_no_subcommands.format(cmd),
+            color=color
+        )
+        return embed
 
 @commands.command()
 async def help(ctx, *cmds: str):


Test patch: