Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [ADMIN/SEC/MISC] DiscordUtils v5.0.1 - Discord-бот для сервера Minecraft [1.8+]

mirrerror

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
mirrerror
DiscordUtils - Discord-бот для сервера Minecraft
Актуальная версия: v5.0.1​

Данный плагин позволяет Вам хостить своего бота для Discord на сервере Minecraft.​

Особенности:
  • Возможность привязать свой игровой аккаунт к аккаунту в Discord;
  • Двухфакторная аутентификация через Discord;
  • Сессии двухфакторной аутентификации (можно отключить в конфиге);
  • Прочие команды бота (например, узнать онлайн сервера через Discord и так далее);
  • Возможность интеграции с плагином на пермишены для автоматической выдачи ролей в Discord;
  • Возможность полностью кастомизировать сообщения;
  • Возможность выдавать награды за то, что игроки сидят в голосовых каналах в Discord;
  • Автоматическая проверка обновлений (можно отключить в конфиге);
  • Возможность приглашать игроков на сервере в голосовой канал, в котором вы находитесь, прямо в игре;
  • Синхронизация никнеймов в Discord и в игре;
  • Анимированная активность бота;
  • Интеграция с PlaceholderAPI, свои переменные;
  • Возможность включить виртуальную консоль на вашем сервере в Discord (там можно выполнять команды от имени консоли и просматривать полный лог консоли) (только для администраторов);
  • Возможность логировать некоторые события с вашего сервера в Minecraft на ваш сервер в Discord (заход на сервер, выход с сервера, смерть, сообщение в чат);
  • Возможность уведомления верифицированных игроков о их упоминаниях в Discord;
  • Поддержка слеш-команд;
  • Возможность создать чат между игроками в Minecraft и верифицированными пользователями Discord;
  • Поддержка hex-цветов в сообщениях;
  • Возможность принуждать определенные роли или группы проходить двухфакторную аутентификацию;
  • Возможность выбирать и скачивать официальные переводы плагина в настройках;
  • Возможность создавать собственные триггеры на игровые события;
  • Возможность создавать информационные каналы (позволяет менять название настроенных каналов каждые N секунд, также там можно использовать переменные PlaceholderAPI);
  • Возможность создавать свои дополнения для плагина, используя DiscordUtils API.
Список команд бота:
~ Discord:
  • /help — помощь по командам;
  • /link — привязать свой аккаунт в Discord к аккаунту в игре;
  • /online — узнать количество игроков онлайн (на сервере);
  • /stats [ник] — посмотреть свою статистику или статистику другого игрока (базируется на плейсхолдерах PAPI) (если не указать ник, то плагин отобразит вашу статистику);
  • /unlink — отвязать свой аккаунт в Discord от аккаунта в игре;
  • /sudo — выполнить команду на сервере от имени консоли (только для администраторов);
  • /embed — отправить embed-сообщение (только для администраторов).
~ Сервер:
  • /du help — помощь по командам (пермишен:
    discordutils.discordutils.help) (алиасы: /du h);
  • /du link — привязать свой аккаунт в Discord к аккаунту в игре (пермишен: discordutils.discordutils.link);
  • /du unlink — отвязать свой аккаунт в Discord от аккаунта в игре (пермишен: discordutils.discordutils.unlink) (алиасы: /du ulink);
  • /du secondfactor — включить/выключить двухфакторную аутентификацию (пермишен: discordutils.discordutils.secondfactor) (алиасы: /du 2fa);
  • /du sendtodiscord — отправить сообщение с игрового сервера на Discord-сервер (пермишен: discordutils.discordutils.sendtodiscord) (алиасы: /du sendtodis, /du std, /du stodis, /du stdis);
  • /du voiceinvite [игроки] — пригласить всех игроков на сервере (или только указанных игроков) в голосовой канал в Discord, в котором Вы находитесь (пермишен: discordutils.discordutils.voiceinvite) (алиасы: /du vinvite, /du vcinvite, /du vinv, /du vcinv);
  • /du getdiscord — узнать Discord верифицированного игрока (пермишен: discordutils.discordutils.getdiscord) (алиасы: /du gdis, /du gdiscord, /du gd);
  • /dua reload — перезагрузить конфиг-файлы (пермишен:
    discordutils.discordutilsadmin.reload) (алиасы: /dua rl, /dua rel);
  • /dua forceunlink — принудительно отвязать Discord-аккаунт игрока от его игрового аккаунта (пермишен: discordutils.discordutilsadmin.forceunlink) (алиасы: /dua funlink, /dua fulink, /dua forceulink);
  • /dua stats — посмотреть админ-статистику (пермишен:
    discordutils.discordutilsadmin.stats) (алиасы: /dua stat);
  • /dua migrate — мигрировать данные из конфига/базы данных в ваш текущий менеджер данных (эта опция перезаписывает текущих пользователей) (пермишен:
    discordutils.discordutilsadmin.migrate) (алиасы: /dua mig, /dua migr).

Список переменных PAPI:
  • %discordutils_islinked% — привязал ли игрок свой аккаунт к Discord;
  • %discordutils_2fa% — включил ли игрок двухфакторную аутентификацию;
  • %discordutils_discord% — привязанный Discord игрока.


API:
Maven:

Код:
<dependency>
    <groupId>io.github.mirrerror</groupId>
    <artifactId>discordutils</artifactId>
    <version>5.0.1</version>
    <scope>provided</scope>
</dependency>

Gradle:

Код:
implementation 'io.github.mirrerror:discordutils:5.0.1'
Пример использования API: https://github.com/mirrerror/DiscordUtilsAPIUsageExample/tree/main


Поддерживаемые на данный момент плагины для интеграции:
  • LuckPerms;
  • Vault (поддерживает множество плагинов).
Настройка бота Discord для работы с плагином:


Скачать плагин (SpigotMC)
Исходный код
Discord-сервер плагина
Поддержать автора

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

DiscordUtils.svg


Лог изменений:
  • Фикс багов;
  • Оптимизация.

  • Фикс багов;
  • Оптимизация;
  • Обновлена система принуждения определенные роли или группы проходить двухфакторную аутентификацию.
  • Обновлен менеджер команд, чтобы он больше сочетался с API;
  • Убрана поддержка ивента MainGetReadyEvent.
  • Пофикшен критический баг, связанный с получением последнего времени буста.
  • Добавлен API;
  • Добавлена возможность отключать логирование определенных событий с вашего сервера в Minecraft в ваш сервер в Discord.
  • Переписана система отслеживания бустов, теперь она должна работать лучше;
  • Фикс багов;
  • Оптимизация.
  • Изменена команда /du sendtodiscord, теперь вы можете выбирать, в какой канал отправить сообщение, вместо того, чтобы настраивать это в конфиге;
  • Добавлена возможность не пускать игроков, которые не прошли двухфакторную аутентификацию, на сервер;
  • Обновлена команда /du voiceinvite, теперь вы можете указывать игроков, которых хотите пригласить в голосовой канал. Если не указать никого, то будут приглашены все игроки.
  • Добавлена слеш-команда /unlink;
  • Добавлена команда /dua migrate, теперь вы можете легко мигрировать ваши данные с конфига data.yml в базу данных и наоборот (эта опция перезаписывает существующих пользователей);
  • Оптимизация;
  • Убраны ненужные сообщения из lang.yml.
  • Пофикшена инициализация бота.
  • Рефактор кода;
  • Оптимизация;
  • Фикс багов (включая баг с виртуальной консолью и бустами серверов);
  • Исключены ненужные библиотеки.
  • Реакции заменены на кнопки;
  • Добавлена возможность создавать информационные каналы (позволяет менять название настроенных каналов каждые N секунд, также там можно использовать переменные PlaceholderAPI);
  • Обновлены все зависимости.
  • Оптимизация;
  • Фикс багов;
  • Добавлен connection pool для баз данных, теперь они должны работать быстрее;
  • Добавлена возможность создавать собственные триггеры на игровые события.
  • Оптимизация;
  • Фикс багов;
  • Убрана поддержка non-slash команд в Discord;
  • Изменена структура файла bot_settings.yml, вам придется его переконфигурировать;
  • Добавлено подтверждение для отключения двухфакторной аутентификации;
  • Улучшен tab completion для команд;
  • Улучшена работа команды /dua reload.
  • Оптимизация;
  • Добавлены проверки на готовность бота и плагина. Теперь игроки не смогут зайти на сервер, пока бот и плагин не загрузились. Это сделано, чтобы не было случайных багов с двухфакторной аутентификацией.
  • Оптимизация;
  • Добавлен tab completion для команд.
  • Фикс багов;
  • Оптимизация;
  • Добавлена возможность принуждать определенные роли или группы проходить двухфакторную аутентификацию
  • Добавлена возможность выбирать и скачивать официальные переводы плагина в настройках.
  • Пофикшен критический баг с загрузкой БД при включении плагина.
  • Переделана система сообщений;
  • Обновлены зависимости;
  • Теперь плагин сам выбирает версию драйвера MySQL, в зависимости от версии Minecraft на сервере;
  • Убрана поддержка \n в игровых сообщениях;
  • Добавлена поддержка hex-цветов в сообщениях;
  • Теперь плагин будет отключаться при неуспешном запуске бота/БД.
  • Плагин был переписан с нуля;
  • Огромная оптимизация;
  • Новая система конфигов;
  • Пофикшено много багов;
  • Утечки памяти пофикшены;
  • Добавлено много уведомлений в консоль;
  • Добавлена возможность удалять сообщения бота в виртуальной консоли через определенное время;
  • Добавлена возможность указывать сразу несколько групп для одной роли в GroupRoles;
  • Добавлена возможность указывать каналы-исключения в NotifyAboutMentions;
  • Добавлена возможность посмотреть статистику игрока через !stats в Discord, используя упоминания (также можно упомянуть сразу несколько пользователей);
  • Добавлены собственные переменные PAPI;
  • Добавлена команда /dua stats (посмотреть админ-статистику);
  • Добавлена возможность создать чат между игроками в Minecraft и верифицированными пользователями Discord;
  • Добавлена поддержка слеш-команд;
  • Добавлена возможность устанавливать свою длину кода для 2FA и привязки.
  • Обработано исключение, которое может возникнуть при синхронизации имен;
  • Обработано исключение, которое может возникнуть в менеджере виртуальной консоли.
  • Добавлена возможность включить или отключить выдачу только основной группы игрока в синхронизации ролей;
  • Добавлена поддержка плейсхолдеров PAPI для формата синхронизации имен;
  • Оптимизация.
  • Пофикшен критический баг с синхронизацией ников
  • Все библиотеки были обновлены до последних версий
  • Добавлена команда !help
  • Добавлена возможность настроить команды, которые будут выполняться после успешного прохождения 2FA
  • Система конфигов была полностью переписана
  • Конфиги теперь автоматически генерируют отсутствующие поля
  • Создан новый файл конфигурации 'bot_settings.yml', туда перемещено большинство настроек
  • Добавлена возможность изменить онлайн-статус бота
  • Добавлена возможность полностью отключить синхронизацию ролей
  • Добавлена возможность полностью отключить синхронизацию ников
  • Добавлена возможность изменить формат синхронизации ников
  • Оптимизация
  • Небольшая оптимизация;
  • Пофикшен баг, заключающийся в том, что роль верифицикации не выдавалась при включенном типе хранения данных MySQL.
  • GuildVoiceRewards теперь работает в режиме реального времени;
  • Добавлена система антифарма для GuildVoiceRewards (время засчитывается, только если участник активен в голосовом чате - у него не выключен микрофон и наушники);
  • Добавлена возможность установить минимальное количество участников в голосовом канале для получения награды;
  • Добавлена возможность настроить команды, которые будут выполняться после того, как владелец аккаунта откажет в авторизации своего аккаунта в Discord;
  • Добавлена команда /dua forceunlink;
  • Подкоманда перезагрузки перемещена из команды /du в команду /dua;
  • Добавлена возможность автоматически очищать виртуальную консоль при каждой инициализации виртуальной консоли;
  • Добавлена возможность проверять статистику других игроков с помощью команды !stats через Discord (вы все еще можете использовать ее без каких-либо аргументов, чтобы проверить свою собственную статистику);
  • Оптимизация;
  • Добавлены алиасы подкоманд.
 
Последнее редактирование:
Последнее редактирование:
смело указывайте на мои недочеты в плане качества кода
Лучше тогда в опенсорс кинь, тот же гитхаб. Декомпилировать, конечно, можно, но при этом всегда что-то теряется.
 
Доступна новая версия — v 1.1.
Список изменений:
  • Добавлена поддержка интеграции с Vault, который в свою очередь поддерживает множество плагинов
  • Мелкие правки в коде
  • Открыл исходники на GitHub'е
  • Добавил видео-объяснение, как настроить бота для работы с плагином
 
Последнее редактирование:
@imDaniX, я все еще жду критики по коду :)
Пройдусь, но немного:

Несколько напрягает количество статики - не критично, но пока не поздно, стоит задуматься об избавлении от неё, иначе рано или поздно упрёшься в монолитность.
Использовать enum затея интересная, но абсолютно бесполезная в данном случае, хотя бы потому что экземпляр используется лишь раз.
Автоматическую проверку обновлений следует делать опциональной. Если ты вдруг ты удалишь репо, изменишь локацию файла, или же сменишь ник и название проекта, будет весьма неприятно - есть вероятность, что повлечет к крашу, а если нет, то к ошибки. К тому же, подключение к интернету следует оформлять в асинхроне.
В Events можно было бы упростить проверку и отмену событий - сделать отдельный метод для этого, который бы принимал Player и Cancellable - уменьшит количество кода.
Регистрацию слушателя следует перенести в основной класс, просто для лаконичности.
Когда работаешь с безопасностью, следует использовать SecureRandom.
replaceAll работает с регулярками. Для обычной подмены символов следует воспользоваться replace, либо, в данном случае, StringUtil.remove(message, ' '). Использование не единичное - тут уж сам поищи.
Здесь следовало бы найти способ искать группу по-быстрее - если среди значений нет повторений, то было бы неплохо изменить карту на Map<String, Long>.
Можно упростить до проверки на null.
Спагетти-код. Вместо этого следует
PHP:
if (проверка) {
    сообщение;
    return;
}
if (проверка) {
    сообщение;
    return;
}
// ...
кодПослеПроверок;
Ни в коем случае не говорю, что так следует делать всегда, но когда так много проверок стоят близко и создают новые блоки, читать становится проблематично - особенно учитывая, что после каждого фейла ты отсылаешь сообщения, которые стоят вообще в другом месте.
 
Пройдусь, но немного:

Несколько напрягает количество статики - не критично, но пока не поздно, стоит задуматься об избавлении от неё, иначе рано или поздно упрёшься в монолитность.
Использовать enum затея интересная, но абсолютно бесполезная в данном случае, хотя бы потому что экземпляр используется лишь раз.
Автоматическую проверку обновлений следует делать опциональной. Если ты вдруг ты удалишь репо, изменишь локацию файла, или же сменишь ник и название проекта, будет весьма неприятно - есть вероятность, что повлечет к крашу, а если нет, то к ошибки. К тому же, подключение к интернету следует оформлять в асинхроне.
В Events можно было бы упростить проверку и отмену событий - сделать отдельный метод для этого, который бы принимал Player и Cancellable - уменьшит количество кода.
Регистрацию слушателя следует перенести в основной класс, просто для лаконичности.
Когда работаешь с безопасностью, следует использовать SecureRandom.
replaceAll работает с регулярками. Для обычной подмены символов следует воспользоваться replace, либо, в данном случае, StringUtil.remove(message, ' '). Использование не единичное - тут уж сам поищи.
Здесь следовало бы найти способ искать группу по-быстрее - если среди значений нет повторений, то было бы неплохо изменить карту на Map<String, Long>.
Можно упростить до проверки на null.
Спагетти-код. Вместо этого следует
PHP:
if (проверка) {
    сообщение;
    return;
}
if (проверка) {
    сообщение;
    return;
}
// ...
кодПослеПроверок;
Ни в коем случае не говорю, что так следует делать всегда, но когда так много проверок стоят близко и создают новые блоки, читать становится проблематично - особенно учитывая, что после каждого фейла ты отсылаешь сообщения, которые стоят вообще в другом месте.
Большое спасибо, учту в следующем обновлении, да и вообще когда буду писать что-то.
 
Доступна новая версия — v 1.2.
Список изменений:
  • Оптимизация кода
  • Теперь подключение бота и проверка обновлений выполняются асинхронно
  • Добавлена команда /du help
  • Добавлена возможность отключить проверку обновлений (через конфиг)
P.S. Спасибо за советы от imDaniX.
 
Последнее редактирование:
Доступна новая версия — v 1.3.
Список изменений:
  • Добавлены сессии для двухфакторной аутентификации (если айпи игрока сохраняется, то вводить код повторно не нужно) (можно отключить в конфиге)
  • Добавлена возможность менять режимы двухфакторной аутентификации в конфиге (доступные режимы - code (ввод кода в игре), reaction (авторизация через клик на реакцию в Discord))
  • Добавлена возможность узнать айпи-адрес заходящего на аккаунт
 
Плагин очень хороший, как я понял он только не давно был создан! Автор плагин, очень хороший человек! Предлагайте ему идеи для улучшения плагина, так как многие из них он спокойно делает! Желаем хорошего продвижения плагину!
 
Плагин очень хороший, как я понял он только не давно был создан! Автор плагин, очень хороший человек! Предлагайте ему идеи для улучшения плагина, так как многие из них он спокойно делает! Желаем хорошего продвижения плагину!
Спасибо за отзыв :)
 
Доступна новая версия — v 1.4.
Список изменений:
  • Исправлено несколько недочетов в коде
 
Доступна новая версия — v 1.5.
Список изменений:
  • Переписана система генерации кодов для верификации и 2FA
  • Небольшая оптимизация
 
А как выдать администратора

Ошибка
У вас недостаточно прав для использования данной команды.
Bot by mirrerror#4790
 
А как выдать администратора

Ошибка
У вас недостаточно прав для использования данной команды.
Bot by mirrerror#4790
В AdminRoles в конфиге прописываешь ID ролей, которые являются административными, только у них работает !sudo
 

Поделиться этой страницей

Назад
Верх