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

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

Настройка bot-раздела discord.yml, отдельные Discord user IDs и каналы администраторов, slash-команды мода и передача обычных команд через /rcon.
Версия не проверена

В ServerManager встроен Discord-бот для команд и чата. Это обратное управление работающим сервером, а не только webhook-уведомления. Отдельная программа бота и дополнительный RCON-порт по описанию автора не нужны.

Информация
Гайд относится к сохранённой документации ServerManager 1.2.3: она требует Valheim 1.0.20, мод на сервере и всех клиентах и отключённый crossplay. ServerManager также управляет персонажами; изучите его правила и конфликты до установки. Это не штатная настройка vanilla Valheim.

Подготовьте приложение бота и разрешённый канал

  1. Создайте приложение бота в Discord Developer Portal и сохраните его токен на сервере.
  2. Установите бота в нужный Discord-сервер с областями bot и applications.commands.
  3. Разрешите просмотр и отправку сообщений в используемых каналах.
  4. Включите Message Content Intent для обычного чата, в том числе при использовании только административных каналов.
  5. Включите Developer Mode в Discord, чтобы скопировать точные идентификаторы сервера, пользователей и каналов.

Заполните bot в discord.yml

Файл discord.yml находится в серверной папке ServerManager внутри активного каталога сохранений; при -savedir это <savedir>/ServerManager/discord.yml. Храните серверный файл отдельно от клиентского модпака.

Поле bot · Что указать
Поле botЧто указать
enabledtrue для включения
tokenТокен приложения бота, не пароль Valheim
guild_idsID подключённых Discord-серверов
admin_user_idsDiscord user IDs допущенных администраторов, не Steam64
admin_channel_idsID каналов команд и административного чата
chat_channel_idsID публичных каналов общения

Для slash-команды одновременно нужны одобренный Discord-пользователь и административный канал. Если канал находится в обоих списках, действуют правила администратора. Не подставляйте Steam ID в admin_user_ids и не заменяйте точный ID совпадающим отображаемым именем.

Различайте команды мода и обычную консоль

Пример · Назначение
ПримерНазначение
/statusПроверка состояния через бота
/discordstatusДиагностика Discord-подключения
/rcon command:saveПередача обычной серверной команды save
/giveitem с именованными параметрамиОтдельная slash-команда ServerManager, а не команда внутри /rcon

Для vanilla save, kick, ban и unban используется серверная консоль или /rcon. Для функций ServerManager выбирайте их собственные slash-команды; не помещайте sm:... или giveitem внутрь /rcon. У мода нет псевдонимов sm:save и sm:kick.

Обычный текст в разрешённом канале не становится командой: он передаётся в игру как глобальный shout. Поэтому проверку связи начните с /status и диагностики, а не со случайного административного текста. /discordtest отдельно отправляет тест маршрутам server.announcement; это уже отправка сообщения.

Чат обратно в Discord — отдельный маршрут

Для ответов из игры автор требует webhook с событием chat.shout. Права бота на административные каналы не управляют аудиторией webhook: доступ к месту, куда он публикует сообщения, проверяется отдельно. Локальный, приватный и клановый чат не отправляется в публичные webhooks по описанному маршруту.

Если вход и выход используют один канал, исходное сообщение и его webhook-копия могут быть видны одновременно. Это не означает, что нужно включать дополнительные циклы пересылки: бот игнорирует сообщения ботов и webhooks на входе.

Хранение токена и границы управления

Токен остаётся только на сервере. Автор поддерживает переопределение через SERVERMANAGER_DISCORD_BOT_TOKEN; не публикуйте его, discord.yml с секретом или webhook URL вместе со сборкой. Бот останавливается с игровым сервером и не способен запустить выключенный сервер.

Информация
Для команд с изменением состояния проверяйте результат перед повтором: тайм-аут не доказывает, что действие не произошло. Здесь приведена настройка по сохранённому авторскому источнику; реальные токены не читались, Discord-сообщения не отправлялись и конфигурации сервера не менялись.

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