Coffeescript Hubot听力变量
我希望找到一个变量,把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由于正则表达式不是常数,因此应使用: 使用构造函数可以提供正则表达式的运行时编译。当您知道正则表
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}`);
});