он должен отслеживать: Если пользователь не писал более N - времени (Указывается в настройках бота), то пользователя кикает и отправляет уведомление в беседу администраторов. Если же он успел опять написать сообщение, то - ничего. Проблема в следующем - я не знаю, где и как хранить эти данные. Предлагали приоритетную очередь, но не подходит под задачу, т.к нужны только уникальные элементы, то есть, если есть уже объект (время кика, время последнего сообщения, id чата, id пользователя), то нужно обновлять, а проходиться по каждому элементу - долго и дорого. Может быть кто-то подскажет, как правильно и с наименьшими затратами по времени это реализовать? Если можно, то с примерами) Спасибо.
В редисе можно хранить ключом ид юзера, а значением — время последнего сообщения в FIFO очереди Человек написал — кидаешь в начало, каждую секунду, например, проходишь с конца, где лежат те, кто писал давнее всего, и кикаешь нужных
Можно пример реализации? А то с redis не работал. И что такое FIFO?
Обсуждают сегодня