Help for Invalid Command Syntax
One pattern for robot commands (especially for robots managing infrastructure) is to use a CLI-like <verb> (... args) or <verb-noun> (... args) structure - e.g. build-app. These kinds of commands can have arbitrarily complex syntax, however; build-app (branch) (--skip-checks), or multiple forms of the command. To mimic a CLI environment, you can take advantage of the first-match behavior in the list of CommandMatchers for a given plugin:
CommandMatchers:
- Regex: '(?i:build-?app(?: (\w[\w-]*))?(?: (--skip-checks))?)'
Command: build
- Regex: '(?i:build-?app\b.*)'
Command: buildhelp
Then, add code to your plugin to handle the buildhelp command (ruby example):
when "buildhelp"
bot_alias = bot.GetBotAttribute("alias")
bot.Say("Usage for build-app:")
bot.Say("#{bot_alias}build-app (branch) (--skip-checks)", "fixed")
The more complex forms of build-app should come first, if none of them match, it will fall-through to buildhelp command.
NOTE:
- If a user command matches multiple plugins, the robot will complain and do nothing; the first-match behavior only applies within a single list of
CommandMatchers - The help message should probably match the configured keyword help