Предупреждения через Bedolaga
Если клиенты покупают доступ через бота Bedolaga, панель может объяснять им нарушения его руками. Предупреждение приходит в Telegram от того же бота, с которым клиент и так общается, и на почту. В кабинете Bedolaga клиент видит плашку с этим предупреждением, а оператор — уровень доверия и историю нарушений.
Панель остаётся источником данных: решает, кого и о чём предупредить, хранит тексты и историю. Бот только доставляет и показывает.
Что понадобится
| Компонент | Версия | Зачем |
|---|---|---|
| Remnawave Admin | 5.1.0 или новее | шаблоны с каналами Telegram и Email, мягкие меры в автоматизациях |
| Бот Bedolaga | 4.16.0 или новее | ручка отправки POST /users/{id}/notify и ручки кабинета для плашки |
| Кабинет Bedolaga | с поддержкой нарушений | плашка клиенту и вкладка оператору — изменения в PR #613, ждут принятия |
Шаг 1. Связать панель и бота
Связь нужна в обе стороны: панель отправляет предупреждения через бота, а бот спрашивает у панели вердикт и историю, чтобы показать их в кабинете.
Панель → бот
Панель ходит во внешний API бота (Web API). Та же связь нужна разделу «Обращения» и карточкам клиентов Bedolaga — если они у вас уже работают, эта половина готова.
Боту в .env:
WEB_API_ENABLED=true
WEB_API_DEFAULT_TOKEN=длинная-случайная-строкаWeb API отвечает с корня веб-сервера бота — того же адреса, куда приходят вебхуки платёжных систем.
Панели в .env:
BEDOLAGA_API_URL=https://bot.example.com
BEDOLAGA_API_TOKEN=длинная-случайная-строка # тот же токенЕсли бот и панель стоят в одной docker-сети, адрес может быть внутренним: http://remnawave_bot:8080.
Бот → панель
Включите внешний API панели — в её
.env:bashEXTERNAL_API_ENABLED=trueСоздайте ключ. API и Вебхуки → API-ключи → Создать, область — только
violations:read: бот лишь читает вердикт и историю. Список разрешённых адресов оставьте пустым или впишите адрес сервера бота.Пропишите боту в
.env:bashABUSE_API_ENABLED=true ABUSE_API_URL=https://panel.example.com/api/v3 ABUSE_API_KEY=rwa_… ABUSE_API_TIMEOUT=5
Этой половиной пользуется кабинет: без неё предупреждения уходят, но плашке и вкладке оператора нечего показать. Сам кабинет к панели не обращается — его фронт работает в браузере клиента, и ключ, попавший туда, достался бы клиенту. Ключ живёт только на сервере бота.
Применить
У бота docker compose up -d bot, у панели docker compose up -d.
Именно up -d, а не restart
Переменные из .env попадают в контейнер только при его создании. restart перезапускает старый контейнер со старыми значениями, up -d пересоздаёт его с новыми.
Шаг 2. Тексты
Нарушения → вкладка «Предупреждения». Общий шаблон и свой на каждый вид нарушения: раздавшему подписку и качающему торренты надо сказать разное. У шаблона выключатель, порог скора для автоотправки и каналы — Telegram и Email, тексты у каналов раздельные.
Пишите факт и последствие, без подробностей детекта: ни стран, ни числа устройств, ни скоринга — иначе предупреждение станет инструкцией по обходу. В конце скажите, куда писать, если предупреждение ошибочное, например в поддержку через кабинет: обращение придёт в раздел «Обращения».
Разметка Telegram, письмо и предпросмотр — в разделе «Предупреждения клиенту».
Шаг 3. Как отправлять
- Вручную — кнопка «Предупредить» в карточке нарушения или «⚠️ Предупредить» в уведомлении о нарушении в Telegram. Нужно право
violations:resolve. Порог скора здесь не действует: решение уже принял человек. - Вместе с мерой — настройка «Нарушения: предупреждать клиента при мере», включена по умолчанию. Автоматическая блокировка или урезание скорости, как и мера кнопкой из уведомления в Telegram, приходят к клиенту с объяснением. Порог скора из шаблона здесь действует.
- Сначала предупредить, мера — позже — в автоматизациях: действие «Предупредить юзера», а мера — отложенным шагом через N часов. Написал клиент за это время в поддержку — мера не ставится, решает оператор. Подробности — в разделе «Сначала предупредить, мера — позже».
Доставка
- Telegram — от бота Bedolaga.
- Почта — тоже ботом. Если бот письмо не доставил (недоступен, не нашёл клиента, у клиента в боте нет почты), его отправит встроенный почтовый сервер панели, при настроенном домене отправки.
- На неподтверждённую почту не пишем. Такой адрес мог вписать кто угодно, и письмо о нарушении ушло бы постороннему. Бот на него не отправляет, панель тоже не досылает.
- Каналы независимы: заблокировавший бота клиент всё равно получит письмо.
- Отметка «клиента предупредили» ставится, только если дошёл хотя бы один канал. Повторно по тому же нарушению — только явно.
Плашка и вкладка в кабинете
Появятся после обновления кабинета до версии с поддержкой нарушений — при настроенной связи «бот → панель».
У клиента на главной — плашка с тем самым предупреждением, которое ему отправили, и кнопкой написать в поддержку. Ни истории, ни скоринга, ни видов нарушений клиент не видит: этих данных нет в ответе, который получает его браузер.
У оператора в карточке клиента — чип «Замечен» или «Ограничен» у имени и вкладка «Нарушения» с историей; хватает права users:read.
Когда плашки не будет:
- предупреждение ещё не отправляли — одного нарушения мало;
- с отправки прошло больше 14 дней;
- нарушение аннулировано — оператор признал срабатывание ошибкой;
- у клиента нет Telegram ID: кабинет ищет нарушения по нему, и вошедший только по почте плашку не увидит. Вкладке оператора по такому клиенту тоже нечего показать.
Проверка
Панель → бот. Раздел «Обращения» показывает обращения клиентов — связь есть.
Бот → панель. Один запрос с сервера бота:
curl -s -H "X-API-Key: rwa_…" "https://panel.example.com/api/v3/violations/summary?telegram_id=1"| Ответ | Что значит |
|---|---|
200 и "level":"clean" | всё работает |
404 Not Found | в панели не включён EXTERNAL_API_ENABLED |
401 | ключ не принят: опечатка, ключ выключен или истёк, адреса сервера бота нет в списке ключа, владелец ключа отключён |
403 | у ключа нет области violations:read |
| таймаут или обрыв | бот не достаёт до панели: фаервол или закрытая сеть |
Если предупреждение не ушло, панель называет причину:
| Причина | Что делать |
|---|---|
| «Бот Bedolaga не принял предупреждение» | бот старше 4.16.0 или недоступен — обновите его и проверьте связь «панель → бот» |
| «Клиент не найден в боте Bedolaga» | клиент заведён в панели мимо бота, а письма нет: почта не указана или Email выключен в шаблоне — впишите клиенту почту в панели |
| «Почта клиента не подтверждена, а Telegram недоступен» | попросите клиента подтвердить почту в кабинете |
| «Клиенту нечем доставить» | для отмеченных в шаблоне каналов у клиента нет контактов — включите в шаблоне второй канал |
| «Нет включённого шаблона» | включите общий шаблон или шаблон этого вида |
Частые вопросы
Клиент пишет, что торренты не качал. Проверьте игровые лаунчеры: некоторые качают обновления через BitTorrent — например, War Thunder. Детектор видит настоящий P2P, просто клиент о нём не знает. Правило «в обход VPN» по доменам игры не поможет: пиры торрента — голые адреса без домена, и они уходят через ноду. Поможет правило по процессу или по папке игры в VPN-клиенте. Само нарушение аннулируйте — плашку клиент не увидит.