Skip to content

Пользователи

Раздел «Пользователи» — список всех клиентов с фильтрами и карточкой, из которой делаются все ручные операции: баланс, продление, лимит устройств, сброс трафика, бан.

Список и поиск

Поиск понимает @username (с собакой или без), имя, фамилию и Telegram ID (число ищется точным совпадением). Спецсимволы экранируются — % в запросе не превратится в «показать всех».

Табы-фильтры со счётчиками:

ФильтрКто попадает
ВсеВсе, кроме системных аккаунтов
АктивныеАктивный юзер с подпиской ACTIVE или LIMITED (упёрся в лимит трафика)
ТриалПодписка в статусе TRIAL
ИстёкшиеПодписка EXPIRED или DISABLED
БлокЗабаненные (status = BLOCKED)

В строке видно баланс, план (из снапшота подписки), срок, трафик, лимит устройств и активность. Кнопка «Экспорт CSV» выгружает текущую выборку с колонками id, telegram_id, username, first_name, status, balance_minor, subscription, created_at.

Карточка пользователя

Клик по строке открывает карточку с вкладками Обзор / Финансы / Тикеты / Действия:

  • баланс и валюта;
  • подписка: статус, план (замороженный снапшот), срок, трафик использовано/лимит, лимит устройств (HWID), ссылка подписки, автопродление, UUID юзера на панели;
  • рефералка: код, сколько приведено, сколько заработано;
  • персональная и одноразовая скидки;
  • последние 10 транзакций.

Ручные операции

Все операции пишутся в журнал аудита с именем админа.

Баланс. Начисление или списание произвольной суммы (до 10 млн ₽ за операцию) с комментарием. В истории юзера появляется транзакция с пометкой admin @username — начисление типа GIFT, списание — WITHDRAWAL.

Продлить подписку. +N дней (1–3650, в интерфейсе — быстрые кнопки «+7» и «+30»). Продление идёт panel-first: новый срок сначала применяется на панели Remnawave, потом коммитится локально. Считается от текущей даты окончания (или от «сейчас», если подписка уже истекла), статус подписки становится ACTIVE. Ошибка панели вернёт 502 — ничего не «продлится наполовину».

Расширить HWID. Меняет лимит устройств на ±N (минимум 1) и сразу пушит новый лимит на панель.

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

Бан и разбан

Кнопка «Заблокировать» ставит юзеру статус BLOCKED:

  • бот полностью игнорирует его сообщения и нажатия (админов забанить бан не может — стафф-аккаунты защищены);
  • веб-кабинет клиента и миниапп отвечают 403 — ни новую сессию получить, ни удержать старую не выйдет.

Бан не отключает VPN

Блокировка касается только бота и кабинета клиента. Подписка на панели Remnawave не трогается — конфиг продолжает работать до конца оплаченного срока. Если нужно оборвать доступ немедленно, отключите юзера на панели вручную.

«Разблокировать» возвращает статус ACTIVE — юзер снова видит бота и кабинет.

MIT License · сделано для тех, кто продаёт VPN, а не настраивает ботов