Подтвердить что ты не робот

Могу ли я писать сценарии для hubot в Javascript?

Hubot - робот в чате Github. Это отличный инструмент, за исключением того, что никто в нашей компании не хочет писать в Coffeescript.... но похоже, что мы не можем писать сценарии для Hubot в простом Javascript. Это правда? Здесь что-то не хватает? Coffeescript - "просто javascript", но я не могу использовать Javascript с ним?
ИЗМЕНИТЬ
Я делал две абсурдно простые ошибки:
 - Я скопировал синтаксис комментария CoffeeScript в свой JS файл

 - У меня был script в узле hubot-scripts node_module, а не только в каталоге/scripts/в главном проекте.

Теперь работает отлично.

4b9b3361

Ответ 1

CoffeeScript скомпилирован в JavaScript, но это не надмножество JavaScript, поэтому код JavaScript не обязательно является допустимым кодом CoffeeScript.

Тем не менее, после поиска в источнике, похоже, что 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.

Ответ 2

Да, вы можете писать свои hubot-скрипты в чистом JavaScript. Ниже приведен простой hubot script, написанный на чистом JavaScript и помещенный в каталог /scripts/ моего настроенного hubot:

// 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");
    });
}