Уровни и опыт
Команды -уровни и -опыт - выдача и снятие уровней, начисление опыта, установка уровня, сброс прогресса, лимиты выдачи и отмена изменений.
Уровни и опыт участники набирают сами, за живое общение в чате. Как это устроено, описано в карточке уровня. Эти команды нужны для правок поверх автоматики: наградить за конкурс, исправить случайную потерю прогресса или убрать накрученный опыт.
-уровни работает с уровнями, -опыт с очками опыта (XP). Устроены они одинаково: сначала действие, потом кому, потом сколько.
-уровниУровни участников: выдача, снятие, установка и сброс прогресса
-лвлы-levels-lvls<параметр> — обязательный[параметр] — необязательныйБез действия и без ответа на сообщение бот пришлёт памятку с тем, что умеет команда.

| Действие | Что делает |
|---|---|
| <кол-во> | Поднимает участника на столько уровней. |
| <кол-во> | Опускает на столько уровней. |
| <уровень> | Ставит ровно указанный уровень, вверх или вниз от текущего. |
| Обнуляет прогресс: первый уровень и пустая полоса опыта. |
Значение всегда идёт последним числом и должно быть больше нуля. Минус и ноль бот не примет и напомнит про действие снять. Само действие обязательно: -уровни @юзер 5 без слова дать команда не поймёт.
Панель с кнопками
Ответьте -уровни на сообщение участника и не пишите больше ничего, тогда бот пришлёт панель с готовыми действиями и значениями, синтаксис набирать не придётся.

В панели показано только то, что доступно вам по правам, и открыта она лишь тому, кто вызвал команду. Через пять минут панель закрывается, и бот попросит повторить команду.
Выдать и снять уровни
-уровни датьПоднимает участника на указанное количество уровней
-уровни выдать-уровни add<параметр> — обязательный<параметр> — обязательныйСнятие устроено так же, только слово другое: -уровни снять @юзер 3.

Уровень меняется целиком, а полоса опыта внутри уровня обнуляется. Было 5 lvl и 800 XP, после дать 2 станет 7 lvl и 0 XP: набранное внутри уровня не переносится. При снятии всё то же, поэтому мелкие правки лучше делать через опыт, а не через уровни.
Если участник перешагнул ключевой уровень, ему прилетит награда за уровень, точно так же, как при обычном росте, и бот напишет об этом в ответе. В самом ответе видно «было ➔ стало», а при выдаче нескольким участникам приходит компактный список: у кого что изменилось и кого не тронули.
Задать уровень
-уровни установитьСтавит участнику конкретный уровень
-уровни уст-уровни сет-уровни set<параметр> — обязательныйУказанный уровень ставится как есть, выше или ниже текущего, полоса опыта при этом обнуляется.
Действие закреплено за владельцем, потому что одной командой отправляет участника хоть на 50 уровень, хоть обратно. Лимиты выдачи при этом действуют и для владельца, разница между старым и новым уровнем пересчитывается в опыт и списывается из запаса.
Награды за пройденные по пути ключевые уровни выдаются и здесь, а вот при понижении они не снимаются. Награды остаются в профиле, забрать их можно только вручную через -награда снять.
Сбросить прогресс
-уровни очиститьОбнуляет уровень и опыт участника
-уровни сброс-уровни обнулить-уровни clear<параметр> — обязательныйУровень становится первым, опыт нулевым. Значение здесь не нужно, зато бот сначала покажет текущие статы участника и попросит подтверждение кнопкой. Если сбрасываете нескольким сразу, в подтверждении будет список всех, кого это затронет.

Опыт вместо уровней
-опытНачисление и снятие очков опыта участникам
-хп/xp<параметр> — обязательный[параметр] — необязательныйДействий здесь два, и . Всё остальное работает как в -уровни: ответ на сообщение или @юзер, до пяти участников за раз, кнопки вместо синтаксиса, если написать команду без всего.
Начисленный опыт ведёт себя как заработанный: как только его хватит на следующий уровень, участник поднимется сам и получит положенную награду. Поэтому для аккуратных правок опыт удобнее уровней, полоса прогресса не обнуляется.
Снятие может опустить участника на уровень ниже. Если забрать больше, чем накоплено внутри текущего уровня, бот возьмёт разницу из уровней, а не остановится на нуле. Ниже первого уровня прогресс не уходит.
Отмена изменений
Под ответом на каждое изменение есть кнопка «Отменить». Она возвращает участнику ровно тот уровень и опыт, что были до команды, забирает награды, которые выдала эта же команда, и возвращает потраченное из лимитов.
Нажать её можно один раз и только тому, кто менял прогресс. Если участник успел заработать опыт после вашей команды, отмена не сработает: бот скажет, что кнопка устарела, вместо того чтобы стереть набранное человеком. Живёт кнопка те же пять минут, дальше правку придётся откручивать руками.
Лимиты выдачи
Ручные правки ограничены, чтобы одна опечатка или один увлёкшийся администратор не переписали прогресс всего чата. Личных лимитов два, и оба считаются в опыте:
- За раз можно выдать не больше десятой части того опыта, который нужен вам самим до следующего уровня. Чем выше ваш уровень, тем крупнее разрешённая выдача.
- На неделю у вас есть запас в десять таких максимальных выдач.
Поверх личных лимитов у чата свой недельный запас на все ручные изменения, 50 000 XP, он обнуляется с началом новой недели.
Уровни пересчитываются в свою стоимость в опыте, поэтому дать 5 на высоком уровне съедает запас куда быстрее, чем на низком. Снятие тратит лимит наравне с выдачей.
Когда выдача не проходит, бот покажет запрошенное и ваш максимум, а рядом кнопку «Выдать максимум» с тем значением, которое сейчас поместится. Когда от недельного запаса чата остаётся меньше пятой части, остаток дописывается в ответ на каждую выдачу.
Прогресс и лимиты под рукой
[параметр] — необязательныйУровень, накопленный опыт, сколько осталось до следующего уровня и ваши лимиты в одном сообщении. Без участника команда покажет ваш собственный прогресс. Она ничего не меняет, поэтому иерархия здесь не проверяется, посмотреть можно любого.

Только лимиты: сколько можно выдать за раз и сколько осталось от недельного запаса чата. У обеих подкоманд есть привычные замены, и , и работают они не только у -уровни, но и у -опыт.
Кому нельзя менять прогресс
Свой собственный прогресс через команду не изменить, боту тоже ничего не выдать. И не получится тронуть того, кто равен вам по роли или выше: иерархия здесь работает так же, как в модерации. При выдаче нескольким участникам каждый проверяется отдельно, поэтому в ответе бывает часть строк с изменениями и часть с причиной отказа.
Что должно быть включено
Команды работают только в группах и только пока в настройках включён модуль «Уровни». С выключенным модулем бот на них не отвечает.
Между правками есть пауза в пять секунд, причём -уровни и -опыт отсчитывают её отдельно: поправить уровень и сразу же опыт можно без ожидания.
Управлять уровнями и опытом могут администраторы и старшие администраторы, а установка уровня и сброс прогресса закреплены за владельцем. Раздать или отобрать эти права можно через роли и личные права.