我可以在Javascript中为hubot编写脚本吗?

时间:2013-03-30 20:14:07

标签: javascript coffeescript hubot

Hubot是Github的聊天室机器人。这是一个很棒的工具,除了我们公司没有人想写Coffeescript ....但似乎我们不能用普通的旧Javascript编写Hubot的脚本。
这是真的?这里有什么我想念的吗? Coffeescript是“只是javascript”,但我不能使用Javascript吗? 的修改
我犯了2个荒谬简单的错误:
    - 我将CoffeeScript注释语法复制到我的JS文件中     - 我在hubot-scripts node_module下有脚本,而不是在主项目的/ scripts /目录下。

现在完美运作。

2 个答案:

答案 0 :(得分:30)

是的,您可以使用纯JavaScript编写hubot脚本。以下是一个简单的hubot脚本,用纯JavaScript编写,放在我定制的hubot的/scripts/目录下:

// Description:
//   holiday detector script
//
// Dependencies:
//   None
//
// Configuration:
//   None
//
// Commands:
//   hubot is it weekend ?  - returns whether is it weekend or not
//   hubot is it holiday ?  - returns whether is it holiday or not

module.exports = function(robot) {
    robot.respond(/is it (weekend|holiday)\s?\?/i, function(msg){
        var today = new Date();

        msg.reply(today.getDay() === 0 || today.getDay() === 6 ? "YES" : "NO");
    });
}

答案 1 :(得分:22)

CoffeeScript被编译成JavaScript,但它不是JavaScript的超集,因此JavaScript代码不一定是有效的CoffeeScript代码。

然而,在查看at the source之后,看起来Hubot可以同时接受这两个:

  # Public: Loads a file in path.
  #
  # path - A String path on the filesystem.
  # file - A String filename in path on the filesystem.
  #
  # Returns nothing.
  loadFile: (path, file) ->
    ext  = Path.extname file
    full = Path.join path, Path.basename(file, ext)
    if ext is '.coffee' or ext is '.js'
      try
        require(full) @
        @parseHelp "#{path}/#{file}"
      catch error
        @logger.error "Unable to load #{full}: #{error.stack}"
        process.exit(1)

此方法由loadHubotScripts调用。