松弛如何知道机器人最近是否发布

时间:2018-12-08 08:02:39

标签: node.js slack-api botkit

我正在使用botkit,我有一个能够响应特定单词的bot。 但是我不希望机器人最近做出回应。

当前,我正在使用channels.history方法来检索4条最近的消息,然后找到机器人ID,如果该机器人没有响应,它会在那里。这不是很漂亮,我一直在寻找有用的方法来使用,但我找不到任何方法。我只想了解该机器人最近是否发布,并根据它进行操作。

   const targetBotID = 'GKALXJCM6'  
   bot.api.channels.history({
            channel: message.channel,
                latest: message.ts,
                count: 4,
                inclusive: 1,
            },  function(err, response) {
                  if(err) { bot.reply(message, 'Something is wrong with me, check log if there is??'); }

                  if(response){
                      const recentPostFound = response.messages.filter(function (member) {
                                                 return member.user === targetBotID;
                                              });

                      if(recentPostFound){
                        return bot.reply();
                      }
                        return bot.reply(answer) // Answer if no matching id found

                  }
              });

1 个答案:

答案 0 :(得分:0)

我可以看到两种解决您问题的方法:

  1. 在某种应用程序上下文(例如数据库)中记录您的漫游器先前的操作。然后,您可以每次验证您的漫游器是否已回答。

  2. 考虑使用Events API而不是每次都加载聊天记录。然后,您的机器人会针对频道中的每条新消息收到一个确切的事件请求,并且可以确保您的机器人只会响应一次。