Достижения
Достижения позволяют награждать участников за выполнение различных целей на сервере. За завершение достижения участник может получить:
- очки экономики;
- специальную роль;
- отметку о выполнении в своём профиле достижений.
Участники могут открыть каталог достижений и посмотреть свой прогресс с помощью команды /achievements list.
Как открыть и включить
Управлять достижениями можно на странице «Достижения».
Для работы команд /achievements должен быть включён модуль Рейтинг:
- Откройте «Обзор сервера».
- Найдите раздел Модули.
- Убедитесь, что модуль Рейтинг включён.
По умолчанию модуль уже включён. Подробнее о нём можно прочитать в разделе «Рейтинг».
Каждое достижение также можно включать и выключать отдельно. Выключенное достижение:
- не отображается участникам в каталоге;
- не получает новый прогресс.
Уже накопленный прогресс при выключении достижения сохраняется.
Как создать достижение
- Откройте страницу «Достижения».
- Нажмите кнопку создания достижения.
- Укажите код, название, тип и необходимую цель.
- При необходимости добавьте описание, иконку, награду в очках или роль.
- Сохраните достижение.
- Убедитесь, что достижение включено.
После сохранения оно появится в каталоге участников.
Параметры достижения
| Параметр | Ограничения | Описание |
|---|---|---|
| Код | До 32 символов: латинские буквы, цифры и _ | Уникальный идентификатор достижения. Используется в административных командах, например msgs_100. |
| Название | До 64 символов | Название, которое увидят участники. |
| Описание | До 200 символов | Необязательное пояснение условий достижения. |
| Тип | Один из 7 доступных типов | Определяет, какое действие должно увеличивать прогресс. |
| Цель | От 1 до 1 000 000 | Количество действий, необходимое для завершения достижения. |
| Награда в очках | От 0 до 100 000 | Количество очков, которое будет начислено на баланс экономики. |
| Роль-награда | Необязательно | Роль, которая будет выдана участнику после завершения достижения. |
| Иконка | До 8 символов | Эмодзи или короткий символ, отображаемый в каталоге. |
Код должен быть уникальным в пределах сервера. После создания он используется для удаления, включения, выключения и ручной выдачи достижения.
Типы достижений
| Тип | Что учитывается | Автоматический прогресс |
|---|---|---|
clan_join | Вступления участника в кланы | Работает |
messages | Отправленные сообщения | Работает |
voice_seconds | Время в голосовых каналах в секундах | Работает |
reputation | Полученная положительная репутация через /rep give | Работает |
reactions | Реакции, поставленные участником | Работает |
invites | Приглашённые на сервер участники | Работает |
custom | Любое условие, проверяемое администратором | Только ручная выдача |
Прогресс начисляется, только пока включён модуль Рейтинг. Достижения типа custom увеличиваются исключительно через ручную выдачу.
Как считается каждый тип
Сообщения. Прогресс растёт вместе с опытом за сообщения и подчиняется тому же ограничению по времени: сообщение, за которое опыт не начислен (частые сообщения подряд, канал в списке игнорируемых, выключенный рейтинг), прогресса тоже не даёт.
Время в голосовых каналах. Прогресс начисляется не постепенно, а целиком по завершении голосовой сессии — когда участник выходит из канала или переходит в другой. Сессии короче 30 секунд и время в игнорируемых голосовых каналах не учитываются. Значение совпадает с тем, что бот записывает в общую статистику голосовой активности.
Репутация. Прогресс получает тот, кому дали репутацию, и только за положительную оценку. Команда /rep down прогресс не уменьшает и не увеличивает.
Реакции. Считаются реакции, которые участник поставил сам. Снятая реакция откатывает прогресс назад — иначе достижение можно было бы накрутить одной реакцией, снимая и ставя её заново. Уже завершённое достижение при этом не отменяется: выданные очки и роль остаются.
Приглашения. Прогресс получает тот, по чьей ссылке-приглашению зашёл новый участник. Чтобы это работало, у бота должно быть право Управлять сервером — без него Discord не отдаёт список приглашений.
Пригласивший останется неизвестным (и прогресс не начислится никому), если:
- участник зашёл по личной ссылке сервера (vanity-URL) — у таких ссылок нет автора;
- сразу несколько участников зашли одновременно и понять, кто кого привёл, невозможно;
- бот был отключён и не успел снять первый снимок приглашений после перезапуска.
Вход ботов и возвращение по собственной ссылке прогресса не дают.
Команды участников
| Команда | Описание |
|---|---|
/achievements list | Показывает ваши достижения и текущий прогресс. |
/achievements list user:<участник> | Показывает достижения выбранного участника. |
/achievements leaderboard | Показывает 10 участников с наибольшим количеством завершённых достижений. |
Параметр user в команде /achievements list необязателен. Если его не указывать, бот покажет ваши достижения.
Команды администратора
Административные команды доступны пользователям с правами администратора или дополнительным правом achievements.manage.
| Команда | Описание |
|---|---|
/achievements admin create | Создать новое достижение. |
/achievements admin delete <code> | Удалить достижение и прогресс всех участников по нему. |
/achievements admin toggle <code> <enabled> | Включить или выключить достижение. |
/achievements admin grant <user> <code> | Вручную выдать достижение выбранному участнику. |
Подробнее о дополнительных правах можно прочитать в разделе «Права для команд».
Ручная выдача
Команда /achievements admin grant сразу устанавливает прогресс участника на значение цели и завершает достижение.
После этого бот:
- отмечает достижение как завершённое;
- начисляет указанные очки;
- пытается выдать роль-награду;
- записывает событие в журнал.
Если участник уже завершил это достижение, повторная выдача ничего не изменит. Очки и роль повторно не выдаются.
Как рассчитывается прогресс
Прогресс достижения не может превышать установленную цель.
Когда прогресс достигает цели:
- достижение отмечается как завершённое;
- участнику начисляются очки;
- участнику выдаётся роль-награда, если она указана;
- событие записывается в журнал.
Одно достижение нельзя завершить несколько раз.
Настройка роли-награды
Чтобы бот смог выдать роль после завершения достижения:
- у бота должно быть разрешение Управлять ролями;
- роль бота должна находиться выше наградной роли в списке ролей сервера;
- наградная роль не должна управляться другой интеграцией.
Если бот не сможет выдать роль, ошибка не будет показана участнику. Информация о ней будет записана только в технический журнал бота.
Управление через панель
На странице Достижения можно:
- создавать достижения;
- изменять название и описание;
- изменять цель;
- настраивать награду в очках;
- выбирать роль-награду;
- менять иконку;
- включать и выключать достижения;
- вручную выдавать достижения;
- удалять достижения.
Для ручной выдачи через панель используется ID участника Discord.
Чтобы скопировать ID участника:
- Откройте настройки Discord.
- Перейдите в раздел Расширенные.
- Включите Режим разработчика.
- Нажмите правой кнопкой мыши по участнику.
- Выберите Копировать ID пользователя.
Ограничения
Ограничение списка
Команда /achievements list показывает не больше 25 достижений из-за ограничений сообщений Discord.
Если на сервере создано больше 25 включённых достижений, часть из них не будет отображаться в команде. Полный список останется доступен в панели управления.
История начислений
Очки за завершение достижения добавляются на баланс экономики, но не записываются в историю начислений.
Поэтому такие операции не отображаются в разделе истории на странице экономики.
Удаление достижения
При удалении достижения безвозвратно удаляются:
- прогресс всех участников;
- информация о завершении достижения;
- само достижение и его настройки.
При этом уже выданные очки и роли автоматически не отзываются.
Перед удалением убедитесь, что достижение и связанный с ним прогресс больше не нужны.
Изменение цели
Если изменить цель уже существующего достижения, завершённость участников автоматически не пересчитывается.
Например, если участник уже завершил достижение с целью 10, он останется завершившим его даже после увеличения цели до 20.