Нужен таймер-антифлудилка для бота. Может есть у кого идеи?
Есть игровой бот. У него есть некоторые функции, которые должны выполнятся максимально быстро, но так, чтобы между каждыми его сообщениями был интервал как минимум 20 секунд. При этом он всё еще собирает информацию, которую пишут ему люди, обрабатывает её и засовывает в массив, чтобы в итоге всем ответить с интервалом минимум 20 секунд. Есть идеи?
Реализация примерно на 146% зависит от деталей.
Бот синхронный или асинхронный?
Таймаут у каждого пользователя свой, или общий?
Должен ли бот отказывать в обслуживании, если таймаут не истёк, или ставить задание в очередь?
Предусмотрена ли отмена запланированной операции?
может быть воспользуешься библиотекой time? Там секундомер используй и проверяй если секунды в таймере равны 20 тогда отправлять сообщение, чёт типо того
Можно использовать очередь asyncio.Queue, в которую слать сообщения при получении ботом и в отдельной корутине по таймеру каждые 20 сек. вытягивать их из очереди, обрабатывая.