如何动态定义 hubot 命令的帮助?

How do I dynamically define help for a hubot command?

Hubot 通常希望脚本具有 header 形式:

# Commands:
#   hubot foo - Hubot says foo.

但是,如果我想为我的命令动态定义文本触发器怎么办?例如。如果我有命令:

fooCommandText = process.env.HUBOT_FOO_COMMAND || 'foo'

module.exports = (robot) ->
  robot.respond ///#{fooCommandText}///, (response) ->
    response.send 'foo'

我仍然希望 hubot help 工作,但我不能使用静态 header 来定义我的命令的样子。

查看 Hubot 本身的 robot.coffee,我可以看到 parseHelp 显式读取脚本文件并解析 header。

如何让 hubot help 对文本触发器是动态的命令起作用?

您可以附加到 robot.commands 而不是定义帮助块:

module.exports = (robot) ->
  robot.commands.push "hubot #{fooCommandText} - Hubot says foo."