Hubot:对所有输入使用set命令

时间:2016-04-09 03:52:57

标签: hubot chatbot pandorabots

我有一个在heroku上运行的hubot实例。我不需要任何默认行为(例如help命令)。相反,我想选择自己的命令,让用户输入带有命令的文本。在这种情况下,我只想在每个用户输入时运行pb

因此,如果用户输入hello我希望humbot运行pb hello

我根据mshish建议尝试的代码在/scripts/example.cofee

module.exports = (robot) ->
  robot.hear /.*/, (msg) ->
    pb msg

3 个答案:

答案 0 :(得分:1)

听起来你想听到“任何东西”。使用Hubot的hear and respond功能(听不回应会做你想做的事)并使用匹配所有内容的正则表达式.*

要关闭默认脚本,请使用repo根目录中的npm uninstall --save PACKAGE_NAME删除它们。 PACKAGE_NAME应与您要从package.json删除的脚本包相匹配。您可能还需要从external-scripts.jsonhubot-scripts.json手动删除脚本。

答案 1 :(得分:1)

因此,要回答问题的第一部分,请删除您不需要的部分。只需编辑package.json并删除不需要的命令行。相对自我解释,应该安全删除以下内容:

  • " hubot-diagnostics":" 0.0.1",
  • " hubot-google-images":" ^ 0.1.2",
  • " hubot-help":" ^ 0.1.1",
  • " hubot-maps":" 0.0.1",
  • " hubot-pugme":" ^ 0.1.0",
  • " hubot-rules":" ^ 0.1.0",
  • " hubot-scripts":" ^ 2.5.16",
  • " hubot-shipit":" ^ 0.1.1",

然后对于第二部分,你有部分正确。

  robot.hear /.*/, (msg) ->
    pb msg

应采用以下格式:

  robot.hear /.*/, (msg) ->
    msg.send "pb #{msg.match[0]}"

msg.send是用于实际向聊天室发送消息的命令。和msg.match [0]包含用户放置的任何信息。

编辑:另外,需要从" external-scripts.json"中删除条目。

答案 2 :(得分:1)

你也可以用中间件做到这一点。我写这篇文章来记录任何人曾经说过的每条消息以及他们说的话。但你可以得到这个想法。您可以运行我运行@robot.logger.info内容的任何代码

module.exports = (robot) ->
robot.listenerMiddleware (context, next, done) ->
if context.listener.regex.source is /(.+)/i.source
  @robot.logger.info("#{context.response.message.user.name} said: \"#{context.response.message.text}\" in Channel: #{context.response.message.room}")
next()