Документация SquadClans

Как пользоваться сервисом: от входа через Steam до управления кланом, заявками, группами прав и API-ключами.

Разделы

Регистрация и вход

Для обычного пользователя вход выполняется через Steam. После успешного входа сервис сохраняет SteamID, никнейм и аватар из Steam. SteamID используется как основной идентификатор игрока.

  1. Нажмите Войти через Steam в шапке сайта.
  2. Подтвердите вход на стороне Steam.
  3. После возврата на сайт в шапке появится ваш никнейм и кнопка выхода.
  4. Нажатие на никнейм открывает ваш профиль игрока.

Профиль игрока

В профиле отображаются никнейм, SteamID, общее время игры, описание игрока, опыт игры, киты, статистика и личное дело.

  • Редактировать профиль может только сам игрок.
  • В профиле можно заполнить «О себе», «Опыт игры и предпочитаемые киты», месяц и год рождения, часовой пояс.
  • В редакторе профиля можно выбрать любимые игровые роли нажатием на иконки. Выбранные роли отображаются в профиле игрока и в составе клана.
  • В редакторе профиля можно нажать Привязать Discord и пройти авторизацию Discord. После возврата сервис сам сохранит Discord ID и имя, а в профиле игрока появится кнопка для связи через Discord.
  • Возраст видят только владельцы, офицеры и рекрутеры кланов.
  • События в личном деле отображаются во временной зоне пользователя, который смотрит профиль.
  • SteamID в профиле является ссылкой на Steam-профиль игрока.

Подача заявки в клан

Подать заявку может только пользователь, вошедший через Steam и не состоящий в другом клане.

  1. Откройте профиль клана.
  2. Если клан ведет набор и вы не состоите в клане, будет доступна подача заявки.
  3. Напишите короткое сообщение о себе и отправьте заявку.
  4. Пока заявка не обработана, ее можно отменить.

Заявки видят участники клана с правом управления составом. По заявке можно принять игрока в рекруты, принять сразу в основной состав или отклонить.

Создание своего клана

Создать клан может игрок, который вошел через Steam, не состоит в другом клане и набрал минимальное количество игровых часов, заданное в настройках сервиса.

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

При создании клана заполняются:

  • основной тег клана;
  • название клана;
  • резервные варианты тегов;
  • краткое и полное описание;
  • возрастные ограничения;
  • минимальный опыт в часах;
  • цель клана;
  • статус набора.

После создания клана создатель становится лидером клана, а событие записывается в его личное дело.

Редактирование профиля клана

Кнопка Редактировать в профиле клана видна пользователям, у которых есть хотя бы одно право на редактирование.

В редакторе можно менять:

  • описание, краткое описание, цель, набор, возрастные ограничения и требования по часам;
  • основной тег, название и резервные теги, если пользователь является лидером;
  • тег рекрутов;
  • настройку пробела после тега;
  • логотип клана;
  • ссылки на Discord, YouTube, Twitch и Telegram;
  • Discord webhook для уведомлений в канал сервера и список событий, которые надо отправлять.

Webhook URL является секретом: после сохранения он не показывается обратно в интерфейсе, а отображается только статус подключения. Если Discord временно недоступен или webhook удален, основное действие на сайте все равно завершается, а ошибка отправки записывается в серверный лог.

Логотип загружается в формате PNG или JPG. Сервер проверяет формат файла, ограничивает размер загрузки и разрешение изображения, затем конвертирует логотип в PNG 512x512 и сохраняет файл с именем по id клана.

Роли и состав клана

В клане есть один лидер. Остальные роли задаются через роль-группы: это обычные группы прав, у которых выбран тип роли. Добавление игрока в такую группу одновременно назначает ему роль и выдает права этой группы.

  • Лидер управляет всем кланом, может передать лидерство и распустить клан.
  • Старший офицер - роль-группа для расширенного управления. По умолчанию получает все делегируемые права.
  • Офицер - роль-группа для работы с составом, заявками и внутренними заметками.
  • Рекрутер - роль-группа для работы с набором игроков.
  • Участник - роль-группа без специальных прав по умолчанию.
  • Рекрут не является роль-группой. Это отдельный статус игрока до перевода в основной состав.

В профиле клана основной состав и рекруты показываются отдельно. Основной состав сортируется так: лидер, старшие офицеры, офицеры, рекрутеры, участники, затем по алфавиту. Участники отображаются с клановым тегом перед никнеймом.

Роль-группы и права клана

Группы прав позволяют лидеру делегировать управление кланом другим участникам. В редакторе клана у группы можно выбрать тип: произвольная группа, старший офицер, офицер, рекрутер или участник.

Стандартные роль-группы создаются автоматически при создании клана. Их можно переименовывать, менять права и состав участников.

Группе можно выдать права:

  • изменение описания, короткого описания, возрастных ограничений, статуса набора и требований;
  • изменение логотипа;
  • редактирование групп;
  • добавление и удаление игроков;
  • редактирование роль-групп и назначение игроков в эти группы;
  • чтение внутренних заметок на игроках;
  • создание и редактирование внутренних заметок на игроках;
  • экспорт SteamID участников групп в буфер обмена или текстовый файл.

Добавление пользователя в группу выполняется через поиск среди текущих игроков основного состава. Рекрутов в роль-группы не добавляют: сначала игрок переводится в основной состав. Если игрок выходит из клана или его исключают, его групповые права сбрасываются.

Журналы, личное дело и заметки

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

  • Журнал клана видят только пользователи с правом управления составом.
  • Журнал можно фильтровать по дате, времени, игроку и офицеру.
  • В личное дело игрока попадают события вступления, выхода, исключения, перевода, лидерства и роспуска клана.
  • Время отображается в часовом поясе пользователя, который просматривает страницу.

Внутренние заметки клана по игроку открываются кнопкой Заметки клана в профиле игрока. Эти заметки видят только участники клана с правом чтения заметок. Писать и редактировать заметки могут только те, кому выдано соответствующее право.

Лидер клана: передача и роспуск

В редакторе клана лидер видит блок управления владельцем.

  • Передать роль лидера можно только игроку из основного состава. Передача требует повторного подтверждения.
  • После передачи прежний лидер становится обычным членом клана, а его настроенные группы и права сохраняются.
  • Распустить клан может только лидер клана или администратор проекта. Роспуск требует повторного подтверждения.
  • При роспуске все игроки теряют членство в клане, а в личное дело записывается выход из-за роспуска клана.

API и токены

Сервис поддерживает работу через API. Токены выдаются администратором проекта в панели Админ.

Для запросов используйте заголовок:

Authorization: Token ВАШ_API_КЛЮЧ

Полезные API-разделы:

  • /api/clans/ - список кланов;
  • /api/clans/{id}/ - профиль клана;
  • /api/clans/{id}/members/ - состав клана;
  • /api/users/ - поиск пользователей;
  • /api/player-history/ - личное дело игрока;
  • /api/applications/ - заявки, доступные пользователю;
  • /api/clantagguard/check/ - одиночная проверка права игрока носить зарегистрированный клановый тег для SquadJS-плагина;
  • /api/clantagguard/check-batch/ - пакетная проверка списка игроков для периодической проверки SquadJS-сервера.

Для плагина clantagguard создайте отдельный ключ в панели /project-admin/ в блоке Ключи ClanTagGuard. При создании указывается название сервера и заметка, чтобы было понятно, где используется ключ. Полученный ключ передается в настройке secretToken. Плагин отправляет методом POST только steam_id и player_name, а сервис сам ищет зарегистрированный клановый тег в имени игрока и принимает решение. Если тег зарегистрирован, но SteamID не состоит в составе этого клана, API вернет allowed: false.

{
  "plugin": "clantagguard",
  "enabled": true,
  "apiUrl": "https://squadclans.ru/api/clantagguard/check/",
  "batchApiUrl": "https://squadclans.ru/api/clantagguard/check-batch/",
  "secretToken": "ВАШ_СЕКРЕТНЫЙ_ТОКЕН",
  "enforcementMode": "backend",
  "broadcastWarning": true,
  "periodicCheckEnabled": true,
  "periodicCheckIntervalMs": 600000,
  "skipChecksWhenApiUnavailable": true,
  "apiFailureThreshold": 3,
  "apiFailureCooldownMs": 60000
}

Плагин проверяет игрока при подключении и дополнительно раз в periodicCheckIntervalMs отправляет текущий список игроков одним пакетным запросом. По умолчанию это 10 минут. Если API SquadClans временно недоступен, плагин работает в режиме fail-open: не предупреждает и не кикает игроков, а после нескольких ошибок на время приостанавливает проверки, чтобы не мешать работе SquadJS и других плагинов.

Ответ API содержит поле action: log, warn или kick. По умолчанию плагин использует enforcementMode: "backend" и выполняет действие, которое вернул сервис. На конкретном SquadJS-сервере можно принудительно заменить поведение, указав enforcementMode: "log", "warn" или "kick". Глобальная реакция настраивается в /project-admin/, а при варианте «как указано в профиле клана» используется настройка самого клана.

Проверка учитывает статус игрока в клане: основной и резервные теги разрешены только основному составу. Рекрут может носить тег рекрутов, но если он поставит основной или резервный тег, защита вернет отказ с причиной recruit_using_main_tag.

Когда защита срабатывает, в панели /project-admin/ в блоке Журнал ClanTagGuard появляется запись: дата и время, сервер, клантег, клан, SteamID, имя игрока и действие, которое было отправлено плагину.

Секреты внешних сервисов, ключи Steam, playtime и статистики хранятся только в серверном окружении и не передаются во фронтенд.

Администрирование проекта

Панель администратора проекта доступна по адресу /project-admin/ только пользователям с флагом is_staff.

В панели можно:

  • смотреть сводку по пользователям, кланам, членствам, заявкам и API-ключам;
  • искать пользователей по нику и SteamID;
  • выдавать, перевыпускать и отзывать API-ключи;
  • настраивать глобальную реакцию ClanTagGuard: только логировать, предупреждать, кикать или брать настройку из профиля клана;
  • создавать отдельные ключи ClanTagGuard для SquadJS-серверов, указывать название сервера и заметку, отключать или перевыпускать ключи;
  • смотреть журнал срабатываний ClanTagGuard по серверу, клантегу, SteamID и имени игрока;
  • открывать кланы;
  • удалять кланы, если они нарушают правила или заняли чужой тег.

Удаление клана администратором работает как роспуск: активные членства закрываются, игроки получают запись в личное дело, логотип и данные клана удаляются.

Стандартная Django-админка также доступна по адресу /admin/ для технического обслуживания.