首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型机器人听觉变量

大型机器人听觉变量
EN

Stack Overflow用户
提问于 2015-12-04 22:08:01
回答 2查看 1K关注 0票数 2

我希望能找到办法让巨人队在这里找到一个变数。例如

代码语言:javascript
复制
name = "Peter"
module.exports = (robot) ->
   robot.hear /hello name/i, (msg) ->
       msg.send "Peter?! No I am Hubot."

我已经尝试过像下面这样的"#{}“语法,但是它没有结果。

代码语言:javascript
复制
name = "Peter"
module.exports = (robot) ->
   robot.hear /hello #{name}/i, (msg) ->
       msg.send "Peter?! No I am Hubot."

任何帮助都将不胜感激。

致以敬意,

奥斯汀

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-05 07:42:55

由于regex不是常量,所以应该使用new Regex()

使用构造函数提供正则表达式的运行时编译。当您知道正则表达式模式将发生变化时,或者您不知道该模式并从另一个源(如用户输入)获取该模式时,请使用构造函数。

代码语言:javascript
复制
name = "Peter"
regx = new Regex("hello #{ name }", 'i')
module.exports = (robot) ->
  robot.hear regx, (msg) ->
      msg.send "Peter?! No I am Hubot."

以名称作为参数的编辑

代码语言:javascript
复制
module.exports = (robot, name) ->
  regx = new Regex("hello #{ name }", 'i')
  robot.hear regx, (msg) ->
      msg.send "#{ name }?! No I am Hubot."
票数 4
EN

Stack Overflow用户

发布于 2018-01-03 00:46:22

如果有用的话,使用javascript而不是coffeescript的hubot示例也使用所选的选项并将其放入另一个变量中:

代码语言:javascript
复制
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进行快速重新加载。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34098300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档