如何在 hubot 中没有脚本目录的脚本中发送消息?
How to send msg in scripts that locates without scripts dir in hubot?
我是 node.js 的初学者。
我想在 hubot 听到预期消息时执行此操作,评估并执行脚本目录中不存在的脚本。
我在代码下面写了代码,但是我无法发送消息。
错误消息
[Thu Feb 16 2017 20:22:34 GMT+0900 (JST)] ERROR ReferenceError: msg is not defined
我应该在哪里修改它来定义味精?
hubot_dir/scripts/load_test.咖啡
path = require('path')
module.exports = (robot) ->
robot.hear /loadscript/i, (msg) ->
script_name = "dynamictest.coffee"
script_dir = path.resolve(__dirname, "../dynamicscripts")
dynamictest = require(script_dir + "/" + script_name)
robot.loadFile(script_dir, script_name)
robot.emit "dynamic", {
robot: robot,
msg: msg
}
delete require.cache[script_dir + "/" + script_name]
hubot_dir/dynamicscripts/dynamictest.咖啡
module.exports = (robot) ->
robot.on "dynamic" , (dynamic) ->
robot.logger.info "output log"
msg.send "test"
当您调用 robot.emit
时,您正在传递一个对象,该对象 包含 您称为 msg 的变量(尽管名称完全是任意的)。此对象作为名为 dynamic
的参数传递,因此,为了引用 msg
,您需要将其引用为 dynamic.msg
:
module.exports = (robot) ->
robot.on "dynamic" , (dynamic) ->
robot.logger.info "output log"
dynamic.msg.send "test"
但是,我应该指出,根据您编写的 loadscript
函数的方式,它会在您每次调用它时加载一个额外的 dynamicscript.coffee 实例。例如,第一次调用 loadscript
时,它会加载第二个文件并发回 'test'。第二次,它会再次加载第二个文件,你会得到两个 'test' 的响应。第三次它会再次加载,你会收到三条消息等
我是 node.js 的初学者。
我想在 hubot 听到预期消息时执行此操作,评估并执行脚本目录中不存在的脚本。
我在代码下面写了代码,但是我无法发送消息。
错误消息
[Thu Feb 16 2017 20:22:34 GMT+0900 (JST)] ERROR ReferenceError: msg is not defined
我应该在哪里修改它来定义味精?
hubot_dir/scripts/load_test.咖啡
path = require('path')
module.exports = (robot) ->
robot.hear /loadscript/i, (msg) ->
script_name = "dynamictest.coffee"
script_dir = path.resolve(__dirname, "../dynamicscripts")
dynamictest = require(script_dir + "/" + script_name)
robot.loadFile(script_dir, script_name)
robot.emit "dynamic", {
robot: robot,
msg: msg
}
delete require.cache[script_dir + "/" + script_name]
hubot_dir/dynamicscripts/dynamictest.咖啡
module.exports = (robot) ->
robot.on "dynamic" , (dynamic) ->
robot.logger.info "output log"
msg.send "test"
当您调用 robot.emit
时,您正在传递一个对象,该对象 包含 您称为 msg 的变量(尽管名称完全是任意的)。此对象作为名为 dynamic
的参数传递,因此,为了引用 msg
,您需要将其引用为 dynamic.msg
:
module.exports = (robot) ->
robot.on "dynamic" , (dynamic) ->
robot.logger.info "output log"
dynamic.msg.send "test"
但是,我应该指出,根据您编写的 loadscript
函数的方式,它会在您每次调用它时加载一个额外的 dynamicscript.coffee 实例。例如,第一次调用 loadscript
时,它会加载第二个文件并发回 'test'。第二次,它会再次加载第二个文件,你会得到两个 'test' 的响应。第三次它会再次加载,你会收到三条消息等