【问题标题】:Is there a way to make Hubot reply to all messages that are not existing commands?有没有办法让 Hubot 回复所有不是现有命令的消息?
【发布时间】:2016-08-25 21:40:19
【问题描述】:

我第一次尝试 Hubot,我正在为基本对话制作一个对话脚本。我已经完成了很多可能性(我有很多问题和关键字都在工作,)但是当用户询问或说出 Hubot 无法识别的内容时,它完全是沉默。

当 Hubot 找不到现有命令或单词时,我想为其添加一组默认答案(模糊回复,例如“这很有趣”或“告诉我更多”。)

有没有办法通过脚本做到这一点?比如:

robot.respond / * /, (msg) ->
    msg.send ArrayOfVagueReplies

其中 * 是“其他所有内容”。 “如果命令...否则...”?

【问题讨论】:

    标签: coffeescript hubot


    【解决方案1】:

    使用robot.catchAll子句捕获所有不匹配的对话,可以参考https://www.npmjs.com/package/hubot-suggest

    【讨论】:

      【解决方案2】:

      由于 hubot 的 robot.respond 方法采用正则表达式,您应该能够只提供 /.*/ 作为正则表达式,并让它匹配所有内容。

      所以你有:

      module.exports = (robot) ->
              robot.respond /.*/i, (msg) ->
                  doSomething(msg)
      

      【讨论】:

      • 太棒了。您是否知道在哪里可以找到可用于创建更复杂匹配的表达式列表?例如,我使用“()”和“|”但我不知道是否还有更多或如何准确定位它们:/(w|W)你是谁|(w|W)hat('s|是)你的名字/
      • 网上有很多不错的正则表达式教程。尝试在 Google 中搜索“coffeescript regex”以获取特定代码示例,但任何正则表达式都应该在两个正斜杠之间工作 / /
      • 顺便说一句,看看regex101.com 这不是最好的教程,但非常适合测试和解释你的正则表达式是如何工作的。
      猜你喜欢
      • 2012-08-11
      • 2014-03-22
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多