adapters - ¿Puedo escribir scripts para hubot en Javascript?
hubot download (2)
Hubot es el robot de chat de Github. Es una gran herramienta, excepto que nadie en nuestra compañía quiere escribir en Coffeescript ... pero parece que no podemos escribir scripts para Hubot en un simple y antiguo Javascript.
¿Es esto cierto? ¿Hay algo que me falta aquí? Coffeescript es "solo javascript" pero no puedo usar Javascript con él?
EDITAR
Estaba cometiendo 2 errores absurdamente simples:
- Copié la sintaxis del comentario de CoffeeScript en mi archivo JS
- Tenía el script bajo hubot-scripts node_module, en lugar de solo debajo del directorio / scripts / en el proyecto principal.
Funciona perfectamente ahora
CoffeeScript se compila en JavaScript, pero no es un superconjunto de JavaScript, por lo que el código JavaScript no es necesariamente un código CoffeeScript válido.
Sin embargo, después de mirar la fuente , parece que Hubot puede aceptar ambos:
# 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)
Este método es llamado por loadHubotScripts
.
Sí, puedes escribir tus scripts de hubot en JavaScript puro. Lo que sigue es un simple script de hubot escrito en JavaScript puro y puesto bajo el directorio /scripts/
de mi hubot personalizado:
// 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");
});
}