Уровни

Уровень участника зависит от общего количества накопленного опыта.

На этой странице можно настроить:

  • роли за достижение определённого уровня;
  • роли за накопленное время в голосовых каналах;
  • канал для уведомлений о повышении;
  • собственный текст поздравления.

Само начисление опыта настраивается отдельно — в разделе «Рейтинг».

Как открыть и включить

Откройте страницу «Уровни».

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

Для работы команд /ranking также должен быть включён общий модуль Рейтинг.

Подробнее о настройках и переключателях системы можно прочитать на странице «Рейтинг».

Как рассчитывается уровень

Все участники начинают с первого уровня.

Для перехода на второй уровень необходимо получить 100 опыта. Каждый следующий уровень требует больше опыта, чем предыдущий.

ПереходТребуется опыта для переходаВсего накопленного опыта
1 → 2100100
2 → 3165265
3 → 4240505
4 → 5325830
5 → 64201250

После первого перехода стоимость следующего уровня увеличивается на 65 опыта. Затем размер этого увеличения дополнительно возрастает на 10 опыта с каждым уровнем.

Формулу уровней изменить нельзя.

Команда <префикс>setrank level устанавливает участнику ровно столько опыта, сколько требуется для начала выбранного уровня.

Основные настройки

ПараметрГде настраиваетсяЗначение по умолчаниюОписание
Канал повышенийПанель Уровни или /ranking channelНе заданКанал, в который бот отправляет уведомления о новом уровне. Если канал не выбран, уведомление отправляется туда, где участник получил опыт.
Текст уведомленияПанель УровниСтандартный текстСобственный шаблон поздравления длиной до 1000 символов.
Роли за уровеньПанель Уровни, /ranking lvlup и /ranking removelvlroleНе настроеныРоли, выдаваемые участникам при достижении указанных уровней.
Роли за голосовой онлайнПанель Уровни, /ranking vcrole и /ranking removevcroleНе настроеныРоли, выдаваемые за накопленное время в голосовых каналах.

В панели можно создать:

  • до 100 наград за уровни от 1 до 1000;
  • до 100 наград за голосовой онлайн от 1 до 100 000 часов.

Текст уведомления

В собственном тексте поздравления можно использовать следующие переменные:

ПеременнаяЧто будет подставлено
{user}Упоминание участника
{username}Отображаемое имя участника
{level}Новый уровень
{server}Название сервера

Пример:

Поздравляем, {user}! Вы достигли {level}-го уровня на сервере {server}.

Максимальная длина шаблона — 1000 символов.

Команды

КомандаКто может использоватьОписание
/ranking channel channel:<канал>Участник с разрешением Discord АдминистраторВыбирает канал для уведомлений о повышении.
/ranking channelУчастник с разрешением Discord АдминистраторСбрасывает выбранный канал и пользовательский текст уведомления.
/ranking lvlup level:<уровень> role:<роль>Участник с разрешением Discord АдминистраторДобавляет или заменяет роль за достижение уровня.
/ranking removelvlrole level:<уровень>Участник с разрешением Discord АдминистраторУдаляет роль, назначенную за выбранный уровень.
/ranking vcrole hours:<часы> role:<роль>Участник с разрешением Discord АдминистраторДобавляет или заменяет роль за накопленное время в голосовых каналах.
/ranking removevcrole hours:<часы>Участник с разрешением Discord АдминистраторУдаляет роль, назначенную за выбранное количество часов.

Если повторно выполнить /ranking lvlup с уже существующим уровнем, старая роль будет заменена новой.

То же правило применяется к наградам за голосовой онлайн с одинаковым количеством часов.

Карточка участника /ранг и команды ручного изменения опыта <префикс>setrank описаны в разделе «Рейтинг».

Как происходит повышение

Повышение уровня проверяется в момент начисления опыта за сообщение.

Когда участник достигает нового уровня, бот:

  1. обновляет его уровень;
  2. отправляет уведомление;
  3. проверяет доступные роли-награды;
  4. выдаёт самую высокую доступную роль за уровень;
  5. снимает младшие роли за уровни.

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

Повышение не проверяется постоянно. Оно происходит только при очередном начислении опыта за сообщение.

Роли за уровни

Для каждого уровня можно назначить одну наградную роль.

Например:

УровеньРоль
5Активный участник
10Постоянный участник
25Ветеран

Если участник достиг 25-го уровня, бот оставит ему только роль, назначенную за 25-й уровень.

Младшие роли за 5-й и 10-й уровни будут сняты.

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

Когда выдаётся роль

Роли пересчитываются при повышении уровня и при ручной правке опыта (setrank exp, addexp, delexp, level, reset).

Если добавить награду за уровень, который участник уже прошёл, она не будет выдана сразу.

Например, если участник уже имеет 20-й уровень, а администратор добавил роль за 10-й уровень, участник получит подходящую роль только при следующем пересчёте.

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

Роли за голосовой онлайн

Голосовые роли зависят от общего количества накопленных часов в голосовых каналах.

Например:

Голосовой онлайнРоль
10 часовСобеседник
50 часовЗавсегдатай голосовых
100 часовГолосовой ветеран

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

Младшие голосовые роли снимаются.

Когда пересчитываются часы

Голосовые роли проверяются, когда участник:

  • выходит из голосового канала;
  • переключается между голосовыми каналами;
  • включает микрофонный мут (отсчёт закрывается);
  • получает ручное изменение времени через <префикс>setrank addvoice;
  • получает точное значение времени через <префикс>setrank setvoice.

Как и роли за уровни, голосовые роли снимаются, если время уменьшили командой setrank setvoice.

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

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

Требования к ролям бота

Чтобы бот мог выдавать и снимать наградные роли:

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

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

Информация об ошибке отображается только в технических журналах бота.

Сохранение настроек в панели

При сохранении панели списки наград заменяются целиком.

Это означает, что сервер сохраняет именно тот набор ролей, который находится в форме на момент сохранения.

Если несколько записей используют один и тот же уровень или одинаковое количество часов, сохраняется только первая запись.

Перед сохранением проверьте, что:

  • уровни не повторяются;
  • значения часов не повторяются;
  • выбранные роли ещё существуют;
  • роль бота расположена выше наградных ролей.

Ограничения

Нельзя отключить только поздравления

Отдельной настройки для отключения сообщений о повышении нет.

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

Сброс канала удаляет текст

Вызов /ranking channel без выбранного канала удаляет всю настройку уведомлений.

При этом сбрасываются:

  • выбранный канал;
  • собственный текст поздравления.

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

Роли не выдаются задним числом

Роль за уровень выдаётся только во время следующего повышения.

Добавление новой награды не запускает автоматическую проверку всех участников сервера.

Голосовые роли пересчитываются раньше — при следующем завершении или переключении голосовой сессии.

Голосовая активность не даёт опыт

Время в голосовых каналах используется только для отдельных голосовых наград.

Оно не увеличивает опыт и не повышает обычный уровень участника.

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

Ошибки выдачи ролей не показываются участнику

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

Проверить причину можно только в журналах бота.