Перейти к основному содержимому

Интеграция с DiscordSRV

EliteMobs использует DiscordSRV, чтобы транслировать сообщения с приоритетом объявлений 3 и выше. О системе приоритета объявлений можно почитать здесь.

По сути это означает, что некоторые особые Кастомные боссы могут отправлять сообщения в Discord — выглядит это так:

Пример сообщения в Discord

Задумка в том, чтобы создать отдельную комнату объявлений EliteMobs, куда игроки смогут заглянуть и посмотреть, нет ли сейчас живых интересных Мировых боссов, которых можно пойти убить и похвастаться этим в таблице лидеров по убийствам.

Настройка всего этого

Настройка DiscordSRV​

DiscordSRV — это отдельный плагин, разработанный не мной. Их подробное руководство по настройке доступно здесь. Если у вас возникнут трудности с настройкой, их комната поддержки находится здесь. Я не могу оказывать поддержку по этому плагину, поэтому по этой части установки обращайтесь к ним.

EliteMobs компилируется с DiscordSRV 1.28.0. Используйте команду проверки ниже, чтобы подтвердить доставку с версией, установленной на вашем сервере.

Настройка конфигурации DiscordSRV в EliteMobs​

После того как вы корректно настроили DiscordSRV (и обязательно проверьте, что он действительно работает, прежде чем переходить к этому шагу), в конфигурации EliteMobs остаётся всего 1 шаг.

Откройте конфигурационный файл DiscordSRV.yml в папке конфигурации EliteMobs (обычно plugins/EliteMobs/DiscordSRV.yml) — там вы найдёте настройку announcementRoomName.

Для этого сообщения можно использовать три варианта значения. Я рекомендую №1.

  1. [Рекомендуется] Название комнаты в том виде, в каком вы задали его в конфигурационном файле DiscordSRV. Неважно, как вы назвали комнату, важно лишь использовать правильное название. Вот пример комнаты, которую я выделил под события EliteMobs: Пример использования имени В моём случае настройка должна выглядеть так: announcementRoomName: EMEvents.

  2. Идентификатор комнаты в том виде, в каком вы задали его в конфигурационном файле DiscordSRV. Вот пример комнаты. Обратите внимание, что каждая комната уникальна. Изображения приведены лишь как пример, не пытайтесь копировать эти числовые идентификаторы. Это не сработает. В вашей настройке должен быть уникальный набор цифр, соответствующий идентификатору вашей комнаты в Discord. Пример использования ID

  3. [Менее надёжно] Название канала в Discord. Последний поиск не учитывает регистр и выбирает первый подходящий текстовый канал, поэтому одинаковые названия могут привести к неверному получателю. DiscordSRV и его бот должны быть настроены и иметь доступ к каналу; сам поиск по имени не требует сопоставления с игровым каналом.

Технические замечания​

  • У сообщений, отправляемых в Discord, автоматически удаляются цветовые коды Minecraft — это нужно для корректного отображения
  • Сообщения в Discord отправляются асинхронно, чтобы не вызывать лаги сервера
  • EliteMobs использует трёхуровневый поиск вашего канала Discord: сначала по идентификатору канала (только если announcementRoomName состоит из одних цифр), затем по сопоставлению каналов DiscordSRV и, наконец, по поиску по названию канала
  • Автоматические объявления контента требуют приоритета не ниже 3: сообщения о спавне, смерти и побеге кастомных боссов, а также startMessage/endMessage кастомных событий. Команда ручной проверки ниже отправляет сообщение напрямую, без проверки приоритета контента.
  • В Discord отправляются те же сообщения, что показываются в игре
  • Канал ищется заново для каждого объявления, поэтому исправленное значение announcementRoomName вступает в силу после /em reload. Если поиск ничего не нашёл, в лог пишется Channel room <name> is not valid!; если Discord отклонил сообщение, в лог пишется DiscordSRV announcement failed for <name>.

Тестирование​

Чтобы проверить, работает ли ваша конфигурация, используйте команду /em discord <message>. Замените <message> на любой текст, который хотите отправить в Discord.

Пример: /em discord Test message from EliteMobs!

Убедитесь, что сообщение появилось в нужном канале Discord. Ответ команды подтверждает лишь попытку отправки; он может появиться даже без DiscordSRV, со значением-заглушкой в настройке или при неудачном поиске канала. Без сообщения в Discord доставка не подтверждена.

Примечание: для этой команды требуется право elitemobs.discord.message

Кроме того, командой /em discord (без сообщения) можно вывести ссылку-приглашение на сервер Discord EliteMobs для поддержки и загрузок. Для этой команды требуется право elitemobs.discord.link.

Устранение неполадок​

Сообщения не появляются в Discord:

  • Убедитесь, что DiscordSRV установлен и работает (сначала проверьте это собственными командами DiscordSRV)
  • Проверьте, что announcementRoomName НЕ оставлено со значением-заглушкой по умолчанию
  • Убедитесь, что название/идентификатор комнаты в точности совпадает с указанным в вашей конфигурации DiscordSRV
  • Проверьте консоль на наличие предупреждений EliteMobs об интеграции с Discord
  • Убедитесь, что у вас есть право elitemobs.discord.message для тестирования

Ошибки «канал не найден»:

  • Ещё раз проверьте написание названия канала как в DiscordSRV.yml, так и в DiscordSRV.yml от EliteMobs
  • Попробуйте использовать числовой идентификатор канала вместо названия
  • Убедитесь, что канал правильно настроен в config.yml от DiscordSRV

Команда тестирования не работает:

  • Убедитесь, что у вас есть право elitemobs.discord.message
  • Используйте правильный синтаксис: /em discord <message> (с сообщением)
  • Проверьте консоль сервера на наличие сообщений об ошибках