code: def get_commands(self):
          
          commands = []
          for name, value in inspect.getmembers(self):
              if not inspect.isgeneratorfunction(value):
                  continue
              if name.startswith('_') or name == 'run':
                  continue
              doc = inspect.getdoc(value)
              commands.append((name, doc))
          return commands
docs: Returns commands available to execute
          :return: list of (name, doc) tuples