Skip to content

Предупреждения через Bedolaga ​

Если клиенты покупают доступ через бота Bedolaga, панель может объяснять им нарушения его руками. Предупреждение приходит в Telegram от того же бота, с которым клиент и так общается, и на почту. В кабинете Bedolaga клиент видит плашку с этим предупреждением, а оператор — уровень доверия и историю нарушений.

Панель остаётся источником данных: решает, кого и о чём предупредить, хранит тексты и историю. Бот только доставляет и показывает.

Что понадобится ​

КомпонентВерсияЗачем
Remnawave Admin5.1.0 или новеешаблоны с каналами Telegram и Email, мягкие меры в автоматизациях
Бот Bedolaga4.16.0 или новееручка отправки POST /users/{id}/notify и ручки кабинета для плашки
Кабинет Bedolagaс поддержкой нарушенийплашка клиенту и вкладка оператору — изменения в PR #613, ждут принятия

Шаг 1. Связать панель и бота ​

Связь нужна в обе стороны: панель отправляет предупреждения через бота, а бот спрашивает у панели вердикт и историю, чтобы показать их в кабинете.

Панель → бот ​

Панель ходит во внешний API бота (Web API). Та же связь нужна разделу «Обращения» и карточкам клиентов Bedolaga — если они у вас уже работают, эта половина готова.

Боту в .env:

bash
WEB_API_ENABLED=true
WEB_API_DEFAULT_TOKEN=длинная-случайная-строка

Web API отвечает с корня веб-сервера бота — того же адреса, куда приходят вебхуки платёжных систем.

Панели в .env:

bash
BEDOLAGA_API_URL=https://bot.example.com
BEDOLAGA_API_TOKEN=длинная-случайная-строка   # тот же токен

Если бот и панель стоят в одной docker-сети, адрес может быть внутренним: http://remnawave_bot:8080.

Бот → панель ​

  1. Включите внешний API панели — в её .env:

    bash
    EXTERNAL_API_ENABLED=true
  2. Создайте ключ. API и Вебхуки → API-ключи → Создать, область — только violations:read: бот лишь читает вердикт и историю. Список разрешённых адресов оставьте пустым или впишите адрес сервера бота.

  3. Пропишите боту в .env:

    bash
    ABUSE_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: кабинет ищет нарушения по нему, и вошедший только по почте плашку не увидит. Вкладке оператора по такому клиенту тоже нечего показать.

Проверка ​

Панель → бот. Раздел «Обращения» показывает обращения клиентов — связь есть.

Бот → панель. Один запрос с сервера бота:

bash
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-клиенте. Само нарушение аннулируйте — плашку клиент не увидит.

AGPL-3.0 с исключением для плагинов