Перейти к содержанию

Как отправлять уведомления Valheim в Discord через ServerManager

Настройка discord.yml, фильтры событий и тест маршрута webhook с учётом требований и влияния ServerManager на серверных персонажей.
Версия не проверена

В ServerManager уведомления из игры в Discord отправляются через webhooks. Для этого направления не нужен отдельный bot-процесс или RCON-порт. Встроенный Discord-бот требуется для обратного чата и команд из Discord; уведомления можно настроить отдельно от него.

Сначала проверьте условия ServerManager

Информация
Для описанной автором сборки ServerManager 1.2.3 указаны Valheim 1.0.20 на сервере и клиентах, установка DLL на всех сторонах и отключённый Crossplay. Мод также управляет серверными персонажами и допуском модов. По умолчанию существующий локальный персонаж с прогрессом не допускается без серверного сохранения или одобрения; не устанавливайте мод как безобидный переключатель уведомлений.

Автор требует убрать конфликтующие ServerCharacters и старые отдельные OrbOfDiscord DLL и избегать других модов, управляющих теми же сохранениями персонажей. Перед внедрением сохраните резервные копии и согласуйте набор модов сервера с клиентами. Если используются другие BepInEx-плагины, заранее настройте для них required и optional: неуказанные плагины не допускаются у обычных игроков.

Где настроить маршрут уведомлений

  1. После настройки и запуска ServerManager найдите discord.yml в папке ServerManager внутри каталога сохранений Valheim. При -savedir это <savedir>/ServerManager.
  2. В нужном канале Discord создайте webhook и скопируйте его URL.
  3. В discord.yml оставьте bot.enabled: false, если нужны только уведомления из игры.
  4. В списке webhooks задайте уникальное стабильное name, enabled: true, свой url и список events. В новых шаблонах примеры отключены и credentials пусты.
  5. Используйте пробелы в YAML и сохраняйте имена ключей. Не включайте URL webhook в опубликованный модпак.

Какие события выбрать

Ключ события · Что отправляет
Ключ событияЧто отправляет
server.statusГотовность сервера и штатную остановку
server.savedСохранение мира; это не подтверждение завершения всех сохранений персонажей
player.connectionВходы и выходы удалённых игроков
chat.shoutГлобальные сообщения из игры
player.death, boss.killedСмерти игроков и убийства боссов
server.announcementОбъявления ServerManager и маршрут для тестового сообщения

Проверьте доставку до широкого включения событий

  1. На время проверки добавьте server.announcement в events нужного маршрута.
  2. В серверной консоли выполните sm:discordstatus для диагностики, затем sm:discordtest для пробного сообщения.
  3. Проверьте, в какой канал пришло сообщение. Тест отправляется маршрутам с server.announcement; его отсутствие в фильтре не доказывает поломку webhook.
  4. После проверки оставьте только нужные события. Для публичной ленты и закрытых административных предупреждений используйте разные маршруты.

Как применяются изменения

Редактируемые YAML-файлы перечитываются автоматически. Невалидная правка именованного webhook сохраняет последнюю рабочую конфигурацию этого маршрута, а корректные изменения других маршрутов могут примениться. Эти рабочие настройки хранятся только в памяти: после перезапуска ошибочный маршрут будет отключён. Поэтому проверяйте ошибки сейчас, а не считайте продолжение доставки доказательством валидного нового файла.

Информация
Несколько маршрутов в один канал способны дублировать сообщения. Права каналов бота не защищают аудиторию webhook: заранее выбирайте закрытый канал для административных данных, храните URL в тайне и замените его при утечке.

Гайд был полезен?