Полная настройка DiscordSRV для Minecraft
Чтобы связать Discord и Minecraft-сервер, установите плагин DiscordSRV на сервер (Spigot/Paper), создайте бота в Discord Developer Portal, вставьте его токен в config.yml и укажите ID каналов для синхронизации чата. Для связи ролей настройте файл synchronization.yml, сопоставив игровые группы (ранги) с ролями в Discord. Это обеспечит двустороннюю передачу сообщений и автоматическое управление правами игроков.
Ниже — детальное руководство по безопасной и правильной конфигурации всех функций плагина.
Оглавление
Подготовка: создание бота и установка {#podgotovka}
Перед редактированием конфигов необходимо подготовить инфраструктуру.
1. Установка плагина
Скачайте актуальную версию DiscordSRV с официального сайта или SpigotMC и поместите .jar файл в папку plugins вашего сервера. Перезапустите сервер, чтобы сгенерировались файлы конфигурации.
2. Создание приложения в Discord
- Перейдите в Discord Developer Portal.
- Нажмите New Application, дайте ему имя (например, "MyServer Bot").
- Перейдите во вкладку Bot → Add Bot.
- В разделе Privileged Gateway Intents включите:
- Server Members Intent (нужно для синхронизации ролей).
- Message Content Intent (нужно для чтения сообщений в чате).
- Скопируйте Token бота. Он понадобится для конфига.
Никогда не публикуйте токен бота и не передавайте его посторонним. Если токен утечет, нажмите кнопку Reset Token в панели разработчика.
3. Добавление бота на сервер
- Во вкладке OAuth2 → URL Generator выберите скоупы
botиapplications.commands. - В разделе Bot Permissions отметьте:
- Manage Roles (для выдачи ролей).
- Send Messages, View Channels, Read Message History.
- Manage Nicknames (опционально, для синхронизации никнеймов).
- Сгенерируйте ссылку, перейдите по ней и добавьте бота на свой Discord-сервер.
Настройка чата: связь каналов {#nastrojka-chata}
Основная функция плагина — дублирование сообщений между игрой и Дискордом.
- Откройте файл
plugins/DiscordSRV/config.yml. - Найдите строку
DiscordBotTokenи вставьте туда токен, полученный на этапе подготовки. - Найдите секцию
Channels. Здесь указывается соответствие каналов.
Пример конфигурации для основного чата:
Channels:
# Формат: "игровой_канал": "ID_Discord_канала"
# 'global' — это стандартный чат в Minecraft (обычно основной)
global: "123456789012345678"
Как узнать ID канала в Discord? Зайдите в настройки пользователя → Расширенные → включите Режим разработчика. Затем кликните правой кноп мыши по нужному каналу в Discord и выберите «Копировать ID».
Дополнительные настройки чата
В том же config.yml можно тонко настроить отображение:
DiscordChatChannelTruncateLength: ограничение длины сообщения из Discord перед отправкой в игру (чтобы не спамить в чат).MinecraftChatToDiscordFormat: формат сообщения в Discord (поддерживает переменные вроде%displayname%,%message%).DiscordChatChannelToMinecraftFormat: формат сообщения в игре от пользователей Discord.
После изменений выполните команду в консоли сервера или в игре (с правами админа):
/discordsrv reload
Синхронизация ролей и аккаунтов {#nastrojka-rolej}
Эта функция позволяет автоматически выдавать роль в Discord при получении доната или повышения в игре, и наоборот.
1. Привязка аккаунтов (Linking)
Игрок должен связать свой Minecraft-ник с Discord-аккаунтом.
- В файле
linking.ymlубедитесь, чтоEnabled: true. - Игрок вводит в игре команду
/discord link, получает код, вводит его в ЛС боту в Discord. - Опция
RequireLinkedAccountToJoin(вconfig.yml) может запрещать вход на сервер непривязанным игрокам (используйте с осторожностью).
2. Настройка синхронизации ролей
Откройте файл synchronization.yml.
Пример настройки для плагина групп LuckPerms (самый популярный вариант):
Groups:
Enabled: true
# Сопоставление: "Роль в Discord": "Группа в LuckPerms"
Roles:
"112233445566778899": "vip" # ID роли Discord -> группа vip
"998877665544332211": "admin" # ID роли Discord -> группа admin
# Удалять ли роли, если игрок потерял группу в игре?
RemoveRolesOnUnlink: true
Если вы используете другие плагины прав (PermissionsEx, GroupManager), логика аналогична, но названия ключей могут отличаться в зависимости версии плагина. Всегда проверяйте комментарии внутри synchronization.yml.
Синхронизация работает в обе стороны только если настроена корректно. По умолчанию чаще всего используют схему: Изменение в Minecraft → Обновление в Discord. Обратная синхронизация (выдача прав в игре за роль в Дискорде) требует более сложной настройки и может быть небезопасной.
Консоль и дополнительные функции {#konsol-i-funkcii}
DiscordSRV умеет транслировать консоль сервера в Discord, что удобно для администраторов.
- В
config.ymlнайдите секциюConsole. - Установите
Enabled: true. - Укажите
ChannelId— ID текстового канала, куда будет падать лог. - Настройте фильтры
Filters, чтобы скрыть лишние строки (например, частые обновления координат или отладочную информацию).
Также полезны опции в разделе Notifications:
PlayerJoinLeaveMessages: отправлять уведомления о входе/выходе игроков.DeathMessages: отправлять сообщения о смерти игроков.
Частые ошибки и решения {#oshibki}
| Проблема | Причина | Решение |
|---|---|---|
| Бот оффлайн или не отвечает | Неверный токен или отключены Intents | Проверьте токен в config.yml. Убедитесь, что Server Members Intent и Message Content Intent включены в Developer Portal. |
| Сообщения не приходят в Discord | Неверный ID канала или нет прав | Проверьте ID канала в config.yml. Убедитесь, что у бота есть право Send Messages в этом канале. |
| Роли не выдаются | Ошибка в synchronization.yml или ID роли | Проверьте, что ID роли скопирован верно. Убедитесь, что роль бота в списке ролей Discord находится выше роли, которую он пытается выдать. |
| Дублирование сообщений | Установлено несколько плагинов чата | Удалите другие плагины для связи с Discord (например, OldDiscordSRV или конфликтующие мосты). |
| Цвета в чате отображаются кодами | Неверный формат | В config.yml настройте MinecraftChatToDiscordFormat, используя поддержку Markdown или эмодзи вместо цветовых кодов Minecraft. |
FAQ {#faq}
Безопасно ли давать боту право Manage Roles? Да, если бот принадлежит вам. Однако убедитесь, что роль самого бота в иерархии ролей Discord стоит выше тех, которые он должен выдавать, но ниже роли владельца/главных админов.
Можно ли сделать разные каналы для разных миров или чатов (локальный/глобальный)?
Да. В секции Channels файла config.yml можно указать несколько пар. Например:
Channels:
global: "111111111111111111"
local_nether: "222222222222222222"
staff_chat: "333333333333333333"
Для работы локальных чатов убедитесь, что ваш плагин чата в Minecraft поддерживает разделение каналов, которое понимает DiscordSRV.
Почему сообщения из Discord приходят в игру без ника?
Проверьте настройку DiscordChatChannelToMinecraftFormat в config.yml. По умолчанию там может стоять просто %message%. Измените на %username%: %message%, чтобы видеть автора.
Поддерживает ли плагин Fabric/Forge? DiscordSRV изначально создан для Spigot/Paper/Bukkit. Для Fabric существуют порты (например, DiscordSRV-Fabric), но их функциональность и стабильность могут отличаться. Рекомендуется использовать серверные ядра на базе Paper для наилучшей совместимости.