diff options
Diffstat (limited to '')
| -rw-r--r-- | bot/exts/info/help.py | 26 | 
1 files changed, 21 insertions, 5 deletions
| diff --git a/bot/exts/info/help.py b/bot/exts/info/help.py index 06799fb71..864e7edd2 100644 --- a/bot/exts/info/help.py +++ b/bot/exts/info/help.py @@ -113,12 +113,28 @@ class CommandView(ui.View):      If the command has a parent, a button is added to the view to show that parent's help embed.      """ -    def __init__(self, help_command: CustomHelpCommand, command: Command): +    def __init__(self, help_command: CustomHelpCommand, command: Command, context: Context): +        self.context = context          super().__init__()          if command.parent:              self.children.append(GroupButton(help_command, command, emoji="↩️")) +    async def interaction_check(self, interaction: Interaction) -> bool: +        """ +        Ensures that the button only works for the user who spawned the help command. + +        Also allows moderators to access buttons even when not the author of message. +        """ +        if interaction.user is not None: +            if any(role.id in constants.MODERATION_ROLES for role in interaction.user.roles): +                return True + +            elif interaction.user.id == self.context.author.id: +                return True + +        return False +  class GroupView(CommandView):      """ @@ -130,8 +146,8 @@ class GroupView(CommandView):      MAX_BUTTONS_IN_ROW = 5      MAX_ROWS = 5 -    def __init__(self, help_command: CustomHelpCommand, group: Group, subcommands: list[Command]): -        super().__init__(help_command, group) +    def __init__(self, help_command: CustomHelpCommand, group: Group, subcommands: list[Command], context: Context): +        super().__init__(help_command, group, context)          # Don't add buttons if only a portion of the subcommands can be shown.          if len(subcommands) + len(self.children) > self.MAX_ROWS * self.MAX_BUTTONS_IN_ROW:              log.trace(f"Attempted to add navigation buttons for `{group.qualified_name}`, but there was no space.") @@ -302,7 +318,7 @@ class CustomHelpCommand(HelpCommand):          embed.description = command_details          # If the help is invoked in the context of an error, don't show subcommand navigation. -        view = CommandView(self, command) if not self.context.command_failed else None +        view = CommandView(self, command, self.context) if not self.context.command_failed else None          return embed, view      async def send_command_help(self, command: Command) -> None: @@ -347,7 +363,7 @@ class CustomHelpCommand(HelpCommand):              embed.description += f"\n**Subcommands:**\n{command_details}"          # If the help is invoked in the context of an error, don't show subcommand navigation. -        view = GroupView(self, group, commands_) if not self.context.command_failed else None +        view = GroupView(self, group, commands_, self.context) if not self.context.command_failed else None          return embed, view      async def send_group_help(self, group: Group) -> None: | 
