Hubot несколько сообщений - PullRequest
       57

Hubot несколько сообщений

0 голосов
/ 04 января 2019

У меня есть следующий скрипт:

module.exports = (robot) ->

  robot.respond /petsit/i, (res) ->

    user_name = res.envelope.user.name
    res.reply "Starting new petsitting under: @" + user_name + "\n"
    res.send "What is the dog's name? Reply with 'dog `INSERT_DOG_NAME`'"

    robot.respond /dog (.*)/i, (msg) ->
      dog_name = msg.match[1]

      user_dog_name = "" + user_name + dog_name

      if robot.brain.get(user_dog_name)
        msg.send "Petsitting is already in progress for @" + user_name + " Dog: " + dog_name
      else
        robot.brain.set(user_app_name, true)
        msg.send "#{dog_name} " + robot.brain.get(user_app_name)

Я не понимаю, почему я получаю несколько сообщений, когда я звоню petsit несколько раз?

Например:

@hubot petsit
@hubot dog lucky

@hubot petsit
@hubot dog kenny ---> This will give me multiple messages.

Я думаю, что это асинхронно, а 2-е сообщение запускается 1-м набором / разговором?Как это исправить, чтобы 1-й разговор не мешал последующим?

1 Ответ

0 голосов
/ 10 января 2019

Вы получаете несколько сообщений, потому что слушатель robot.respond /dog (.*)/i подключается каждый раз, когда вызывается robot.respond /petsit/i.Это первый раз, когда вы отправляете petsit , слушатель /dog (.*)/i подключается впервые.Когда вы отправляете собака ... , будет активирован только один ответ.Каждый раз, когда вы отправляете petsit , второй слушатель будет связываться с одним и тем же экземпляром robot , таким образом отправляя вам несколько ответов.

По умолчанию встроенная поддержка отHubot для управления разговорами.Вместо этого вам следует взглянуть на сторонний модуль, такой как hubot-разговор , который добавляет этот тип функциональности или реализует вашу собственную логику.

...