Repository: Cog-Creators/Red-DiscordBot

Issue:
[Help] Give confirmation on help being sent to users DMs
# 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 -->

- [ ] Cog
- [x] Command
- [ ] API functionality

#### Describe your requested feature
A modification to the `[p]help` command when it is set to only send the help messages via DMs. 

#### What would you like it do do?
I think either responding in the channel it was called with a message like "Help was successfully sent to DMs" or even a non-obtrusive method like applying a checkmark reaction to the [p]help message upon sending successfully. If the first option is doable, make it an option in `[p]helpset`.

#### The reasoning
I feel like the users that don't call the command get confused when no help is shown in the channel when the command is called by another user. I don't really want to disable sending help via dm because the command list is so big. I am aware of menus but I kind of don't want to use them because of their timeout (I know this is soon to be fixed however). This was originally discussed on Discord here: https://discordapp.com/channels/133049272517001216/387398816317440000/732765573221580851


Discussion:

Resolving patch:
diff --git a/redbot/core/bot.py b/redbot/core/bot.py
--- a/redbot/core/bot.py
+++ b/redbot/core/bot.py
@@ -112,6 +112,7 @@ def __init__(self, *args, cli_flags=None, bot_dir: Path = Path.cwd(), **kwargs):
             help__verify_checks=True,
             help__verify_exists=False,
             help__tagline="",
+            help__use_tick=False,
             description="Red V3",
             invite_public=False,
             invite_perm=0,
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
@@ -76,6 +76,7 @@ class HelpSettings:
     verify_exists: bool = False
     tagline: str = ""
     delete_delay: int = 0
+    use_tick: bool = False
 
     # Contrib Note: This is intentional to not accept the bot object
     # There are plans to allow guild and user specific help settings
@@ -127,6 +128,7 @@ def bool_transformer(val):
             "\nHelp only shows commands which can be used: {verify_checks}"
             "\nHelp shows unusable commands when asked directly: {verify_exists}"
             "\nDelete delay: {delete_delay}"
+            "\nReact with a checkmark when help is sent via DM: {use_tick}"
             "{tagline_info}"
         ).format_map(data)
 
@@ -778,7 +780,8 @@ async def send_pages(
                     )
                 else:
                     messages.append(msg)
-
+            if use_DMs and help_settings.use_tick:
+                await ctx.tick()
             # The if statement takes into account that 'destination' will be
             # the context channel in non-DM context, reusing 'channel_permissions' to avoid
             # computing the permissions twice.
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
@@ -2173,6 +2173,22 @@ async def helpset_showhidden(self, ctx: commands.Context, show_hidden: bool = No
         else:
             await ctx.send(_("Help will filter hidden commands."))
 
+    @helpset.command(name="usetick")
+    async def helpset_usetick(self, ctx: commands.Context, use_tick: bool = None):
+        """
+        This allows the help command message to be ticked if help is sent in a DM.
+
+        Defaults to False.
+        Using this without a setting will toggle.
+        """
+        if use_tick is None:
+            use_tick = not await ctx.bot._config.help.use_tick()
+        await ctx.bot._config.help.use_tick.set(use_tick)
+        if use_tick:
+            await ctx.send(_("Help will now tick the command when sent in a DM."))
+        else:
+            await ctx.send(_("Help will not tick the command when sent in a DM."))
+
     @helpset.command(name="verifychecks")
     async def helpset_permfilter(self, ctx: commands.Context, verify: bool = None):
         """


Test patch: