code: async def filter_commands(self, commands, *, sort=False, key=None):
          
  
          if sort and key is None:
              key = lambda c: c.name
  
          iterator = commands if self.show_hidden else filter(lambda c: not c.hidden, commands)
  
          if not self.verify_checks:
              # if we do not need to verify the checks then we can just
              # run it straight through normally without using await.
              return sorted(iterator, key=key) if sort else list(iterator)
  
          # if we're here then we need to check every command if it can run
          async def predicate(cmd):
              try:
                  return await cmd.can_run(self.context)
              except CommandError:
                  return False
  
          ret = []
          for cmd in iterator:
              valid = await predicate(cmd)
              if valid:
                  ret.append(cmd)
  
          if sort:
              ret.sort(key=key)
          return ret
docs: |coro|
  
          Returns a filtered list of commands and optionally sorts them.
  
          This takes into account the :attr:`verify_checks` and :attr:`show_hidden`
          attributes.
  
          Parameters
          ------------
          commands: Iterable[:class:`Command`]
              An iterable of commands that are getting filtered.
          sort: :class:`bool`
              Whether to sort the result.
          key: Optional[Callable[:class:`Command`, Any]]
              An optional key function to pass to :func:`py:sorted` that
              takes a :class:`Command` as its sole parameter. If ``sort`` is
              passed as ``True`` then this will default as the command name.
  
          Returns
          ---------
          List[:class:`Command`]
              A list of commands that passed the filter.