feat: expose Telegram anti-flood settings

This commit is contained in:
3252a8
2026-06-05 11:38:42 +03:00
parent fd1edf38b5
commit 728599c882
8 changed files with 490 additions and 1 deletions
+27
View File
@@ -15,6 +15,33 @@
openssl rand -hex 32
```
## Telegram антифлуд
Апдейты Telegram-бота проходят через ранний anti-flood middleware до sync
профиля, проверки каналов и логирования действий, которые обращаются к базе.
Профиль по умолчанию специально мягкий: он не должен мешать быстрым обычным
нажатиям кнопок, но отбрасывает экстремальные всплески сообщений и callback от
одного источника до того, как они разгонят записи в БД, платежные обработчики
или Telegram FloodWait.
Настройки доступны в **Админка -> Система -> Настройки -> Система -> Telegram
антифлуд**. Для обычного приватного продающего бота дефолтов достаточно, поэтому
они не добавлены в `.env.example`. Меняйте их только если реальный трафик
показывает, что пороги нужно расширить или сузить.
- `TELEGRAM_DROP_NON_PRIVATE_UPDATES=True` отбрасывает апдейты из групп и
каналов до дорогих middleware. Оставляйте включенным, если бот не должен
работать вне приватных чатов.
- `TELEGRAM_ANTIFLOOD_ENABLED=True` включает per-user/per-chat лимиты. Значение
`0` у отдельного числового лимита отключает только этот лимит.
- `TELEGRAM_ANTIFLOOD_WINDOW_SECONDS=60` задает общее скользящее окно. Дефолты
рассчитаны на нормальные button-heavy флоу: `180` всех апдейтов, `120`
сообщений, `240` callback, `60` inline-запросов, `30` команд `/start` и `60`
тяжелых callback за окно.
- `TELEGRAM_ACTION_COOLDOWN_ENABLED=True` дедуплицирует точные повторные
платежные и trial callback от того же пользователя. Разные платежные payload
не объединяются, поэтому обычный checkout остается независимым.
## Доступ администраторов
- `ADMIN_IDS` задает Telegram ID администраторов.