вялый как узнать если бот недавно выложил - PullRequest
0 голосов
/ 08 декабря 2018

Я использую Botkit, у меня есть бот, который отвечает на определенное слово.Но я не хочу, чтобы бот отвечал, если он недавно это сделал.

В настоящее время я использую метод channels.history, чтобы получить 4 последних сообщения, а затем найти идентификатор бота, если он там не будет отвечать.Это не красиво, я искал полезные методы для использования, но я не могу найти ни одного.Я просто хочу узнать, был ли бот недавно размещен или нет, и выполнять действия на его основе.

   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 голосов
/ 08 декабря 2018

Я вижу два решения вашей проблемы:

  1. Запишите предыдущие действия вашего бота в каком-то контексте приложения (например, в базе данных).Затем вы можете каждый раз проверять, отвечает ли ваш бот.

  2. Попробуйте использовать Events API вместо загрузки истории чата каждый раз.Тогда ваш бот получает ровно один запрос на событие для каждого нового сообщения в канале, и вы можете быть уверены, что ваш бот будет реагировать только один раз.

...