DiscordSRV: настройка Discord бота для Minecraft сервера
Discord уже давно стал вторым домом для игровых комьюнити. Люди сидят там, даже когда не в игре, и логично, чтобы чат сервера был доступен оттуда же. DiscordSRV - самый популярный плагин для связки Minecraft с Discord. Он делает двусторонний мост чата, дублирует консоль в канал, синхронизирует роли, привязывает аккаунты и отправляет алерты о событиях сервера.
В этом гайде разберем всё: от создания бота в Developer Portal до тонкой настройки group sync и webhook-сообщений. Инструкция для Paper/Spigot/Purpur, но почти всё применимо и к другим форкам.
Что умеет DiscordSRV
Основные фичи, ради которых его ставят:
- Чат-мост: сообщения из игрового чата попадают в Discord-канал, и наоборот, сообщения из канала появляются в игре
- Консольный канал: вся консоль сервера летит в отдельный приватный канал, можно даже выполнять команды из Discord
- Алерты: join/leave игроков, смерти, достижения, падение/старт сервера
- Account linking: привязка Minecraft-ника к Discord-аккаунту через код
- Group sync: роли LuckPerms автоматически мапятся на роли Discord и обратно
- Webhook-сообщения: сообщения из игры приходят в Discord с аватаркой игрока, а не от имени бота
- API для аддонов: куча плагинов расширяют DiscordSRV (реакции как эмодзи, чат по каналам, модерация)
Альтернативы
Коротко о конкурентах, чтобы не гадать.
- DiscordIntegrator - проще, легче, без group sync и консоли. Подойдет, если нужен только базовый чат-мост
- EssentialsDiscord - часть EssentialsX, встроен в экосистему. Нет group sync, ограниченный функционал
- DiscordChat - минималистичный вариант, только чат
- UltimateChat с Discord-аддоном - платный, красивый, но overkill для большинства
DiscordSRV - стандарт де-факто. Живое сообщество, регулярные обновления, поддержка всех актуальных версий Minecraft от 1.8 до 1.21+. Дальше будем ставить именно его.
Установка плагина
- Откройте страницу плагина на SpigotMC или GitHub Releases
- Скачайте последний
.jarпод вашу версию Minecraft - Положите файл в папку
plugins/сервера - Перезапустите сервер (полный restart, не reload)
После старта в plugins/DiscordSRV/ появятся конфиги: config.yml, messages.yml, alerts.yml, synchronization.yml, linking.yml. Трогать сейчас их не нужно - сначала делаем бота.
Проверьте, что плагин загрузился:
/plugins
В списке должен быть DiscordSRV. Если красным - смотрите консоль, чаще всего это несовместимая версия Java или Minecraft.
Создание Discord-бота
Шаг 1: создать приложение
- Откройте Discord Developer Portal
- Нажмите New Application в правом верхнем углу
- Введите имя (например,
MyServer Bot) и примите условия - На вкладке General Information можно поменять иконку и описание - это то, что игроки увидят в Discord
Шаг 2: создать бота
- В левом меню выберите Bot
- Нажмите Add Bot -> Yes, do it!
- Задайте никнейм и аватар бота (это отличается от имени приложения)
Шаг 3: получить токен
На той же странице Bot нажмите Reset Token -> Yes, do it!. Появится токен вида:
MTIzNDU2Nzg5MDEyMzQ1Njc4.Xy7Z_A.abcdefghijklmnopqrstuvwxyz
Скопируйте его сразу - Discord не покажет токен повторно, только даст сбросить. Никогда не публикуйте токен, не заливайте в git, не показывайте в скриншотах. Если токен утек - сразу сбрасывайте на той же странице.
Шаг 4: включить privileged intents
Это критичный шаг, без него бот не увидит сообщения пользователей.
На странице Bot найдите раздел Privileged Gateway Intents и включите:
- PRESENCE INTENT (опционально, для статусов)
- SERVER MEMBERS INTENT (обязательно для group sync)
- MESSAGE CONTENT INTENT (обязательно для чата)
Нажмите Save Changes.
Шаг 5: пригласить бота на сервер
- Перейдите в раздел OAuth2 -> URL Generator
- В Scopes отметьте:
bot,applications.commands - В Bot Permissions отметьте минимум:
- View Channels
- Send Messages
- Embed Links
- Attach Files
- Read Message History
- Manage Messages (для редактирования/удаления)
- Manage Roles (для group sync)
- Manage Webhooks (для красивых сообщений с аватарами)
- Add Reactions
- Скопируйте сгенерированный URL внизу
- Откройте URL в браузере, выберите свой Discord-сервер, подтвердите
Бот появится в списке участников, но пока оффлайн.
Получение Channel ID и Guild ID
DiscordSRV работает с числовыми ID, а не с названиями каналов. Чтобы их получить, включите Developer Mode в клиенте Discord:
- User Settings -> Advanced -> Developer Mode: On
- Правый клик по серверу (guild) -> Copy Server ID - это ID гильдии
- Правый клик по каналу -> Copy Channel ID - это ID канала
ID выглядят так: 948273194820394820. Сохраните ID нужных каналов: #minecraft-chat (глобальный чат), #console (если будете зеркалить консоль), #server-events (для алертов).
Настройка DiscordSRV
Откройте plugins/DiscordSRV/config.yml. Самые важные параметры:
BotToken
BotToken: "MTIzNDU2Nzg5MDEyMzQ1Njc4.Xy7Z_A.abcdefghijklmnopqrstuvwxyz"
Вставьте токен из Developer Portal. Без него бот не запустится.
Channels
Здесь мапятся игровые каналы DiscordSRV на каналы Discord. global - дефолтный канал для всего чата.
Channels:
global: "948273194820394820"
staff: "948273194820394821"
Первое значение (global, staff) - имя канала в DiscordSRV, второе - ID канала в Discord. Несколько каналов позволяют разделить стафф-чат и публичный.
Console Channel
Отдельная секция для зеркалирования консоли:
DiscordConsoleChannelId: "948273194820394822"
DiscordConsoleChannelUsageLog: true
DiscordConsoleChannelBlacklistedCommands:
- "?"
- "op"
- "deop"
- "stop"
Канал должен быть приватным, с доступом только для админов - иначе любой, у кого есть права смотреть канал, сможет выполнять команды на сервере.
MinecraftChatToDiscordMessageFormat
Формат сообщений из Minecraft в Discord, редактируется в messages.yml:
MinecraftChatToDiscordMessage:
Content: "%message%"
Webhook:
Enable: true
AvatarUrl: "https://mc-heads.net/avatar/%uuid%/128"
Username: "%username%"
Webhook-режим делает сообщения похожими на обычные сообщения Discord: с аватаркой игрока (из головы в Minecraft) и его никнеймом, а не от имени бота. Рекомендую включить.
DiscordChatChannelMinecraftMessage
Формат для обратного направления: из Discord в Minecraft.
DiscordToMinecraftChatMessageFormat: "&b[Discord] &r<%username%> %message%"
DiscordToMinecraftChatMessageFormatNoPrimaryGroup: "&b[Discord] &r<%username%> %message%"
Цвета через &-коды. %username% - Discord-ник, %message% - текст сообщения.
Полный пример минимального рабочего config.yml:
BotToken: "YOUR_TOKEN_HERE"
Channels:
global: "948273194820394820"
DiscordConsoleChannelId: "948273194820394822"
DiscordConsoleChannelUsageLog: true
DiscordChatChannelPrefixRequiredToProcessMessage: ""
MinecraftDiscordAccountLinkedConsoleCommands:
- "lp user %player% parent add verified"
MinecraftDiscordAccountUnlinkedConsoleCommands:
- "lp user %player% parent remove verified"
Сохраните, в игре выполните /discord reload - плагин подхватит изменения без перезапуска сервера.
Account Linking (привязка аккаунтов)
Чтобы DiscordSRV знал, какой Discord-юзер соответствует какому игроку, нужна привязка. Без неё group sync и персональные аватары не работают.
Процесс привязки
- Игрок в Minecraft вводит команду
/discord link - Плагин выдает 4-значный код, например
4829 - Игрок в Discord пишет этому боту в личку:
link 4829 - Бот отвечает подтверждением, привязка сохранена
Код одноразовый, действует ограниченное время (по умолчанию 15 минут). Отвязать: /discord unlink в игре или unlink боту в ЛС.
Автоматическая выдача роли за привязку
В linking.yml настраивается автовыдача ролей:
MinecraftDiscordAccountLinkedRoleNameToAddUserTo: "Verified"
MinecraftDiscordAccountLinkedConsoleCommands:
- "lp user %player% parent add verified"
- "say %player% привязал Discord!"
Игрок получит роль Verified в Discord и группу verified в LuckPerms сразу после привязки. Это удобно, чтобы отделить проверенных от случайных.
Обязательная привязка
Можно сделать вход на сервер только для привязавших Discord. В config.yml:
Require linked account to play:
Enabled: true
Subtract from online count: true
Kick message: "Привяжите Discord: /discord link | Invite: discord.gg/yourserver"
Whitelisted players bypass check: true
Пускать на сервер будут только игроков с привязкой. Для whitelisted-игроков можно оставить обход.
Group Sync (синхронизация ролей)
Одна из самых полезных фич. Настраивается в synchronization.yml.
GroupRoleSynchronizationGroupsAndRolesToSync:
"admin": "948273194820394830"
"moderator": "948273194820394831"
"vip": "948273194820394832"
"donator": "948273194820394833"
"member": "948273194820394834"
GroupRoleSynchronizationOneWay: false
GroupRoleSynchronizationCycleTime: 10
Слева - группа в LuckPerms (или permission), справа - ID роли в Discord. Синхронизация работает в обе стороны по умолчанию: получил админа в LuckPerms - получил @Admin в Discord и наоборот.
OneWay: true заставит DiscordSRV только читать из Minecraft и писать в Discord, но не трогать LuckPerms обратно. Это безопаснее, если не хотите, чтобы кто-то с правами в Discord случайно получил права на сервере.
CycleTime: 10 - интервал в минутах, с которым плагин пересчитывает синхронизацию. Плюс она срабатывает по событиям (join, role change).
Иерархия ролей
Бот может выдавать только те роли, которые ниже его собственной в иерархии Discord. В настройках сервера Discord перетащите роль бота выше всех синхронизируемых ролей. Иначе получите в консоли Missing Permissions.
Alerts (алерты событий)
Файл alerts.yml. Позволяет слать в канал любые события сервера через custom-сообщения.
Alerts:
- Trigger: "PlayerJoinEvent"
Async: true
Channel: "server-events"
Content: ":green_circle: **%player%** присоединился к серверу"
- Trigger: "PlayerDeathEvent"
Async: true
Channel: "server-events"
Content: ":skull: %player% умер: `%event.deathMessage%`"
- Trigger: "PlayerAdvancementDoneEvent"
Async: true
Conditions:
- "event.advancement.display != null"
Channel: "server-events"
Content: ":trophy: **%player%** получил достижение **%event.advancement.display.title%**"
Триггеры - любые Bukkit-события. Условия позволяют фильтровать: например, не слать алерты на скрытые ачивки.
Для серверных событий (старт, стоп, краш) есть встроенные в config.yml:
DiscordChatChannelServerStartupMessage: ":green_circle: Сервер запущен"
DiscordChatChannelServerShutdownMessage: ":red_circle: Сервер остановлен"
Webhook-сообщения для красоты
Если включить в messages.yml:
MinecraftChatToDiscordMessage:
Webhook:
Enable: true
AvatarUrl: "https://mc-heads.net/avatar/%uuid%/128"
Username: "%username%"
Сообщения из игры будут показаны как отдельные "пользователи" в Discord, каждый со своим аватаром - головой игрока из Minecraft. Визуально это намного лучше стандартного вывода через бота, где все сообщения от одного имени.
Важно: боту нужно право Manage Webhooks в канале, иначе ничего не заработает. Также Discord ограничивает количество webhook-сообщений в минуту, на небольшом сервере это не проблема, но на 100+ онлайне может упираться в лимиты. В таком случае отключайте webhook или делайте батчинг.
Whitelist через Discord
Можно завязать вход на сервер на роль в Discord. Например, роль @Member должна давать whitelist.
Через group sync: мапим роль @Member на группу whitelisted в LuckPerms, в которой есть permission essentials.whitelist.bypass или просто добавление в whitelist.json через кастомные команды:
MinecraftDiscordAccountLinkedConsoleCommands:
- "whitelist add %player%"
MinecraftDiscordAccountUnlinkedConsoleCommands:
- "whitelist remove %player%"
Или написать свой алерт на RoleAddEvent от DiscordSRV API через плагин-аддон, но для большинства серверов хватает простой связки с group sync.
Troubleshooting
"No such channel" при старте
Плагин в логах пишет Could not find Discord channel by ID.... Причины:
- Неправильно скопирован ID канала (лишние пробелы, буквы вместо цифр)
- Бот не приглашен на сервер, где находится канал
- У бота нет прав View Channel на этот канал
- Канал - это категория или voice, а DiscordSRV ждет текстовый
Проверьте: в Discord зайдите в настройки канала -> Permissions, найдите роль бота, убедитесь, что View Channel включено.
"Missing Permissions" при выдаче ролей
WARN: Tried to assign role but lacks permissions
Две причины:
- Роль бота в иерархии Discord ниже выдаваемой. Решение: перетащите роль бота выше в настройках Server -> Roles
- У бота нет Manage Roles. Решение: Server Settings -> Roles -> роль бота -> включить Manage Roles
Сообщения не отправляются из Minecraft в Discord
- Проверьте, что
globalвChannels:мапится на правильный ID - Проверьте, что бот онлайн (
/discordв игре покажет статус) - Посмотрите консоль сервера на ошибки JDA (библиотека, которую использует DiscordSRV)
Сообщения не отправляются из Discord в Minecraft
Почти всегда - не включен Message Content Intent в Developer Portal. Это новая политика Discord с 2022 года, без этого intent бот не видит содержимое сообщений. Включите, перезапустите сервер, проверьте.
Webhook-сообщения не работают
- Бот не имеет Manage Webhooks в нужном канале
- На сервере Discord достигнут лимит webhook (10 на канал)
- Proxy/CDN блокирует исходящие webhook-запросы с сервера Minecraft
Бот показывает "Connecting..." и не запускается
- Токен неправильный или сброшен - сгенерируйте новый в Developer Portal
- Токен случайно скопирован с пробелом или переводом строки
- У хостинга заблокированы исходящие соединения на gateway.discord.gg
Group sync не работает в одну из сторон
Проверьте GroupRoleSynchronizationOneWay. Если true, синхронизация идет только MC -> Discord. Для двусторонней поставьте false.
Также проверьте, что в LuckPerms нужные группы существуют (/lp group <name> info).
Безопасность и лучшие практики
- Консольный канал - только для админов. Любой, кто может писать в канал, может выполнять команды на сервере. Выдавайте доступ к нему только доверенным людям
- Бэкапьте токен в менеджере паролей. При утечке сбрасывайте сразу
- Отдельные каналы для разных задач:
#minecraft-chatпубличный,#staff-chatприватный для модерации,#server-eventsдля алертов,#consoleдля админов - Не ставьте webhook для чата, если онлайн 200+. Лимиты Discord на webhook могут начать глючить
- Roles bot выше sync ролей. Это экономит часы отладки
- Используйте alerts умеренно. Канал, в который падает сотня алертов в минуту, никто не читает
- Обновляйте DiscordSRV. Discord регулярно меняет API, старые версии плагина могут начать отваливаться
Финальный чеклист
- Плагин DiscordSRV в
plugins/, сервер запущен, плагин зеленый - Бот создан в Developer Portal, токен сохранен
- Включены три privileged intents (SERVER_MEMBERS, MESSAGE_CONTENT, PRESENCE)
- Бот приглашен на Discord-сервер через OAuth2 URL с нужными permissions
- Developer Mode включен, ID каналов скопированы
- В
config.ymlзаполненыBotToken,Channels,DiscordConsoleChannelId - В
synchronization.ymlнастроен group sync (если нужен) - Роль бота в Discord выше всех синхронизируемых ролей
- Консольный канал приватный
- Привязка аккаунта проверена через
/discord link - Отправка сообщений работает в обе стороны
Если все галочки проставлены, DiscordSRV готов к продакшену. Дальше можно добавлять аддоны: DiscordSRV-Reactions для реакций как эмодзи в игре, DiscordSRV-Voice для отображения голосовых каналов, SRVLinker для расширенной привязки - и превращать сервер в полноценную экосистему.
Protégez votre serveur contre les attaques DDoS
Protection gratuite avec configuration en 5 minutes. 1 To de bande passante inclus.
Essayer gratuitementArticles connexes
Плагины vs защитный сервис: что реально работает против ботов в 2026
Честный разбор BotFilter, NullCord, Sonar и внутриигровых капча-плагинов. Почему внутриигровые проверки упираются в потолок и что делают серверы, которые реально выживают под бот-атаками.
Rate limiting для Minecraft: ограничение вредоносных подключений
Полное руководство по rate limiting для Minecraft серверов: iptables hashlimit и connlimit, Velocity connection throttle, server.properties rate-limit, token bucket алгоритм, плагины LimboFilter и BotSentry. Настройка лимитов по слоям без блокировки легитимных игроков.
PlaceholderAPI на Minecraft сервере: настройка, expansions и примеры
Полный гайд по PlaceholderAPI: установка, ecloud, топ expansions, кастомные плейсхолдеры на JS и примеры конфигов TAB и DeluxeChat.