Oh, I noticed this yesterday and forgot to mention it: I'd prefer it if the `OnUserCommand()` function took a `command_args` list of arguments as one parameter instead of every command argument as a separate parameter. This would make it easier to extend the OnUserCommand function with other arguments in the future (with maybe an `options` parameter) without breaking existing subclasses too much.

In general I'm a big fan of explicit function parameter lists in dynamic languages.