feat: expose Telegram anti-flood settings
This commit is contained in:
@@ -71,6 +71,18 @@
|
||||
| `PANEL_SYNC_LIFETIME_TRAFFIC_MIN_DELTA_BYTES` | Дельта lifetime-трафика для более ранней записи. |
|
||||
| `WEBAPP_RATE_LIMIT_TTL_SECONDS` | Окно Web App rate limit. |
|
||||
| `WEBAPP_RATE_LIMIT_MAX_REQUESTS` | Количество запросов в окне rate limit. |
|
||||
| `TELEGRAM_DROP_NON_PRIVATE_UPDATES` | Отбрасывать group/channel Telegram-апдейты до DB-backed middleware. По умолчанию `True`. |
|
||||
| `TELEGRAM_ANTIFLOOD_ENABLED` | Включает мягкие per-user/per-chat лимиты для экстремального Telegram-флуда. По умолчанию `True`. |
|
||||
| `TELEGRAM_ANTIFLOOD_WINDOW_SECONDS` | Окно лимитов Telegram антифлуда. По умолчанию `60`. |
|
||||
| `TELEGRAM_ANTIFLOOD_MAX_UPDATES_PER_WINDOW` | Глобальный лимит Telegram-апдейтов на источник за окно. По умолчанию `180`; `0` отключает лимит. |
|
||||
| `TELEGRAM_ANTIFLOOD_MESSAGE_MAX_PER_WINDOW` | Лимит Telegram messages на источник за окно. По умолчанию `120`; `0` отключает лимит. |
|
||||
| `TELEGRAM_ANTIFLOOD_CALLBACK_MAX_PER_WINDOW` | Лимит callback query на источник за окно. По умолчанию `240`; `0` отключает лимит. |
|
||||
| `TELEGRAM_ANTIFLOOD_INLINE_MAX_PER_WINDOW` | Лимит inline query на источник за окно. По умолчанию `60`; `0` отключает лимит. |
|
||||
| `TELEGRAM_ANTIFLOOD_START_MAX_PER_WINDOW` | Лимит `/start` на источник за окно. По умолчанию `30`; `0` отключает лимит. |
|
||||
| `TELEGRAM_ANTIFLOOD_EXPENSIVE_CALLBACK_MAX_PER_WINDOW` | Лимит платежных, trial, promo и account-changing callback за окно. По умолчанию `60`; `0` отключает лимит. |
|
||||
| `TELEGRAM_ACTION_COOLDOWN_ENABLED` | Дедуплицирует точные повторы платежных и trial callback от того же пользователя. По умолчанию `True`. |
|
||||
| `TELEGRAM_PAYMENT_CALLBACK_COOLDOWN_SECONDS` | Cooldown точного повтора платежного callback. По умолчанию `20`; `0` отключает cooldown. |
|
||||
| `TELEGRAM_TRIAL_CALLBACK_COOLDOWN_SECONDS` | Cooldown точного повтора trial callback. По умолчанию `30`; `0` отключает cooldown. |
|
||||
| `WEBHOOK_QUEUE_NAME` | Redis queue для тяжелой обработки webhook. |
|
||||
| `WEBHOOK_QUEUE_CONCURRENCY` | Количество worker consumers для webhook queue. |
|
||||
| `WORKER_PANEL_SYNC_INTERVAL_SECONDS` | Интервал фоновой синхронизации с панелью. |
|
||||
|
||||
@@ -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 администраторов.
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
- инструкции подключения: `SUBSCRIPTION_GUIDES_ENABLED`, `SUBSCRIPTION_GUIDES_BOT_MENU_ENABLED`, чтение конфига из Remnawave Panel, JSON-переопределение и резервный путь к файлу;
|
||||
- legacy-тарифы без JSON-каталога: периоды подписки, RUB/Stars цены, реферальные бонусы и пакеты трафика;
|
||||
- платежные провайдеры: включение методов, порядок кнопок, публичные параметры и секреты YooKassa, FreeKassa, Platega, SeverPay, Wata, CryptoPay, Heleket и Stars, а также текст и иконки кнопок оплаты;
|
||||
- пробный период, приветственный реферальный бонус, уведомления, логирование, поддержка, раздел устройств, лимит устройств и legacy-лимиты трафика.
|
||||
- пробный период, приветственный реферальный бонус, уведомления, логирование, Telegram антифлуд, поддержка, раздел устройств, лимит устройств и legacy-лимиты трафика.
|
||||
|
||||
Секретные поля помечены как secret и не должны использоваться для произвольного просмотра старых значений. Настройки, которых нет в manifest, остаются только в `.env` или коде.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user