Commands deep dive

This section assumes you have read the action builders deep dive. All of the stuff in there also applies here.


The simplest way to name a command builder is to simply call the named function on it. You can however also delay that until registration. At that point the easy way to get a name is to call PrefixParser#structured, which returns a PrefixParser. You are also free to construct a PrefixParser yourself. At it’s core it’s simply a function (CacheSnapshot, Message, ExecutionContext) => Future[MessageParser[Unit]]. The function will be evaluated and tried for each incoming message. If the message parser succeeds, the remaining string will be used for the command itself. If it fails, it will discard the message.


There is also a slightly more constrained version of PrefixParser called StructuredPrefixParser. This is what you are using when you call the named function on a function. This variant as a bit more of a predefined sturcture, but can in return more easily be included in a help command.

Custom error handling

The default behavior when a command fails is to print an error message. If you want to instead do something else, call CommandConnector#newCommandWithErrors and friends. These will give your a source of command errors, that you can then handle however you want.