Q:

Is there a way to list arguments of certain bot commands?

I am trying to make a an error message for a command, for when you do not include all the arguments, it echos them back to you, for example:
@commands.command()
async def foo(self, ctx, arg1, arg2):
      await ctx.send("You passed: {} and {}".format(arg1, arg2))

I know that if I run >foo by itself, it will return "arg1 is a required argument that is missing", however I want it to return all of them, for example, something like Usage: >foo <arg1> <arg2>
I also know I can always hard-code it using something like this:
@foo.error
async def foo_error(self, ctx, error):
      await ctx.send("``Usage: >foo <arg1> <arg2>``")

but I want it so it can automatically do it to any command entered, so I don't have to do it like this

A:

You can check if the error is MissingRequiredArgument, and if it is send the help text associated with the command.  You can use cog_command_error to run the  error handler for all the errors from the cog:
class MyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
    @commands.command()
    async def foo(self, ctx, arg1, arg2):
          await ctx.send("You passed: {} and {}".format(arg1, arg2))
    async def cog_command_error(self, ctx, error):
        if isinstance(error, commands.MissingRequiredArgument):
            message = f"Params are {', '.join(ctx.command.clean_params)}, you are missing {error.param}"
            await ctx.send(message)
        else:
            raise error

There are some other attributes of Command that you can use instead of help, like brief or clean_params, depending on exactly what you want your output to look like.  

