Вялый как узнать если бот недавно выложил
Я использую 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 ответ
Я вижу два решения вашей проблемы:
Запишите предыдущие действия вашего бота в каком-то контексте приложения (например, в базе данных). Затем вы можете проверить каждый раз, если ваш бот уже ответил.
Попробуйте использовать Event API вместо загрузки истории чата каждый раз. Тогда ваш бот получает ровно один запрос на событие для каждого нового сообщения в канале, и вы можете быть уверены, что ваш бот будет реагировать только один раз.