Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coffeescript Hubot听力变量_Coffeescript_Hubot - Fatal编程技术网

Coffeescript Hubot听力变量

Coffeescript Hubot听力变量,coffeescript,hubot,Coffeescript,Hubot,我希望找到一个变量,把hubot带到这里。 前 我已经尝试过下面这样的“#{}”语法,但没有成功 name = "Peter" module.exports = (robot) -> robot.hear /hello #{name}/i, (msg) -> msg.send "Peter?! No I am Hubot." 任何帮助都将不胜感激 问候, Austin由于正则表达式不是常数,因此应使用: 使用构造函数可以提供正则表达式的运行时编译。当您知道正则表

我希望找到一个变量,把hubot带到这里。 前

我已经尝试过下面这样的“#{}”语法,但没有成功

name = "Peter"
module.exports = (robot) ->
   robot.hear /hello #{name}/i, (msg) ->
       msg.send "Peter?! No I am Hubot."
任何帮助都将不胜感激

问候,


Austin

由于正则表达式不是常数,因此应使用:

使用构造函数可以提供正则表达式的运行时编译。当您知道正则表达式模式将要更改,或者您不知道该模式并从其他源(如用户输入)获取它时,请使用构造函数

代码

name = "Peter"
regx = new Regex("hello #{ name }", 'i')
module.exports = (robot) ->
  robot.hear regx, (msg) ->
      msg.send "Peter?! No I am Hubot."
编辑 以名称作为参数

module.exports = (robot, name) ->
  regx = new Regex("hello #{ name }", 'i')
  robot.hear regx, (msg) ->
      msg.send "#{ name }?! No I am Hubot."

如果有用,可以使用一个使用javascript而不是coffeescript的hubot示例,该示例还接受所选选项并将其放置在另一个变量中:

const options = 'now|later|never';
const regexOptions = new RegExp(`starting (${options})`, 'i');
robot.respond(regexOptions, (msg) => {
    // this will respond to:
    // hubot starting now
    // but not to:
    // hubot starting notAnOption
    const optionChosen = msg.match[1];
    msg.send(`option chosen: ${optionChosen}`);
});

当我有可以添加或删除名称的动态列表时,我会使用这种技术,然后我想在响应中使用它-当然,在向命令中使用的列表添加名称时,确实需要快速重新加载hubot。

感谢您的响应,但问题是,在整个执行过程中,名称会多次更改。这是我的错,我应该提供一个更清晰和完整的代码部分。再次感谢!这不是问题,您可以将名称设置为参数,也可以使用相同的方法。我在我的答案中添加了一个代码示例。正则表达式起作用了,但我似乎对hubot的工作方式有另一个问题。谢谢你的回答。
const options = 'now|later|never';
const regexOptions = new RegExp(`starting (${options})`, 'i');
robot.respond(regexOptions, (msg) => {
    // this will respond to:
    // hubot starting now
    // but not to:
    // hubot starting notAnOption
    const optionChosen = msg.match[1];
    msg.send(`option chosen: ${optionChosen}`);
});