Маяри

Система уровней

За что капает XP, как считается уровень и какие формулы стоят под капотом

Система уровней — это сердце активности сервера. Идея проста как палка: люди болтают и сидят в войсах → получают опыт (XP) → растут в уровнях → им за это что-то перепадает. А где есть награда, там есть и азарт 🎰

На этой странице — всё без воды: за что начисляется XP, при каких условиях, и какие именно формулы крутятся под капотом. Да, с настоящими цифрами из кода, а не «ну примерно».

TL;DR для нетерпеливых. Писать осмысленные сообщения → 5–15 XP за штуку. Сидеть в войсе с кем-то (не в муте!) → ~5 XP в минуту. Уровень требует 5·уровень² + 50·уровень + 100 опыта. За каждый новый уровень — немного валюты, а иногда и роль. Всё.

💬 XP за сообщения

Каждое осмысленное сообщение в чате приносит опыт.

  • За сообщение начисляется случайное количество XP в диапазоне от xpPerMessageMin до xpPerMessageMax.
  • Значения по умолчанию: от 5 до 15 XP.
  • Учитываются только сообщения длиннее 3 символов. «да», «лол», «+» и спам из точек опыт не дают — извини, чат-фермеры 🚜
XP за сообщение = случайное целое в диапазоне [min, max]
по умолчанию    = случайное от 5 до 15

Почему диапазон, а не фикс? Чтобы нельзя было точно «просчитать» гринд и чтобы прогресс ощущался чуть живее. Один раз тебе выпадет 5, другой — 15. Маленькое казино в каждом сообщении.

🔊 XP за голосовые каналы

За время в войсе тоже капает опыт, но с условиями — иначе все бы просто молча висели в пустом канале ради халявы.

Раз в минуту Маяри смотрит, кто сидит в голосовых, и начисляет XP, только если выполнено всё это:

  • ✅ ты не в муте и не в глухоте (ни сам себя, ни сервер тебя);
  • ✅ в канале есть хотя бы ещё один активный человек (войс — это про общение, а не про медитацию в одиночестве 🧘);
  • ✅ канал не приватный (закрытый) и не ограничен лимитом в 1 человека;
  • ✅ канал не в списке исключённых.

Формула голосового опыта:

XP в минуту = округлить( базовый_XP × групповой_множитель )
по умолчанию = округлить( 3 × 1.5 ) = 5 XP/мин
  • xpPerVoiceMinute (базовый XP) — по умолчанию 3.
  • xpGroupMultiplier (групповой множитель) — по умолчанию 1.5.

Нюанс про время. Время в войсе (то, что в профиле) считается, даже если ты сидишь один — лишь бы не в муте. А XP идёт только за компанию: соло в открытом канале можно, но опыт за это не положен 🤷

Отдельная история — приватные каналы и «одиночки» (с лимитом в 1 человека). В них не идёт ни время, ни XP: молча провисеть всю ночь в закрытом войсе — это фарм часов, а не активность. Хочешь расти — сиди там, где есть жизнь 🫂

📈 Как XP превращается в уровни

Вот тут начинается математика, но обещаю — не страшная.

Чтобы перейти на следующий уровень, нужно накопить определённый порог XP. Он растёт вместе с уровнем по формуле:

Нужно XP для уровня = 5 × уровень² + 50 × уровень + 100

Как только опыта набралось достаточно — уровень повышается на 1, а счётчик XP сбрасывается и копится заново до следующего порога.

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

ПереходНужно XP≈ сообщений (по 10 XP)≈ минут в войсе (по 5 XP)
0 → 1100~10~20
1 → 2155~16~31
2 → 3220~22~44
3 → 4295~30~59
5 → 6475~48~95
10 → 111100~110~220
20 → 213100~310~620
50 → 5115100~1510~3020

Замечаешь подвох? Из-за уровень² каждый следующий уровень даётся всё тяжелее. Первые уровни пролетаешь за вечер, а вот 50-й — это уже маленький подвиг и повод для уважения 🏅 Так и задумано: чтобы топ таблицы лидеров что-то да значил.

🪙 Награда за новый уровень

Каждое повышение уровня — это не только красивая циферка. За него выдаётся валюта:

  • Если на сервере задан фиксированный currencyReward — выдаётся именно столько за каждый уровень.
  • Если фикс не задан (по умолчанию 0) — выдаётся случайное нечётное число от 1 до 9 (1, 3, 5, 7 или 9).
Награда за уровень = currencyReward, если он > 0
                   = случайное из {1, 3, 5, 7, 9}, если не задан

А ещё бустеры сервера могут получать множитель к награде и к XP за сообщения — если на сервере включены и настроены бонусы за буст. Маленькое «спасибо» тем, кто поддерживает сервер 💎

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

Самая мотивирующая часть. Можно настроить роли-награды: достиг уровня — получил роль. Работает в двух режимах:

  • Накопительный (по умолчанию) — роли копятся. Достиг 5, 10 и 20 уровня — носишь все три роли.
  • Только высшая (removePreviousRole) — оставляется лишь одна, самая крутая роль из доступных. Дорос до новой — старая снимается автоматически.

Чтобы роли реально выдавались, Маяри нужно:

  • право «Управлять ролями»;
  • её собственная роль должна стоять в списке выше всех ролей-наград.

Если роль-награда висит выше роли бота — Discord физически не даст её выдать. Это не баг Маяри, это правило иерархии ролей самого Discord. Просто перетащи роль Маяри повыше 🆙

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

🚫 Где XP не начисляется

Иногда опыт в определённых местах не нужен (флудилки, музыкальные каналы, AFK-войсы). Для этого есть списки исключений:

  • Исключённые каналы — ни сообщения, ни голос в них не дают XP.
  • Исключённые категории — то же самое, но сразу для всех каналов внутри категории.

Удобно, чтобы спам-канал не превращался в ферму уровней 🌾

🔔 Уведомления о повышении

Когда кто-то берёт новый уровень, Маяри может это отпраздновать — отправить сообщение в выбранный канал или личным пингом через систему уведомлений. Текст полностью кастомизируется: обычное сообщение или красивый эмбед (включая формат V2).

В шаблон можно подставлять переменные — например {newLevel}, {oldLevel}, {reward} и {currencyEmoji}. Полный список ищи на странице Тэги конструктора сообщений.

Совет напоследок. Не делай пороги и награды слишком жирными сразу. Лучше начать скромно и подкручивать по ощущениям: если чат притих — добавь вкусную роль на ближайший уровень, и увидишь, как народ снова оживает 📣

On this page