Как подключить управление Valheim из Discord через ServerManager
В ServerManager встроен Discord-бот для команд и чата. Это обратное управление работающим сервером, а не только webhook-уведомления. Отдельная программа бота и дополнительный RCON-порт по описанию автора не нужны.
Подготовьте приложение бота и разрешённый канал
- Создайте приложение бота в Discord Developer Portal и сохраните его токен на сервере.
- Установите бота в нужный Discord-сервер с областями bot и applications.commands.
- Разрешите просмотр и отправку сообщений в используемых каналах.
- Включите Message Content Intent для обычного чата, в том числе при использовании только административных каналов.
- Включите Developer Mode в Discord, чтобы скопировать точные идентификаторы сервера, пользователей и каналов.
Заполните bot в discord.yml
Файл discord.yml находится в серверной папке ServerManager внутри активного каталога сохранений; при -savedir это <savedir>/ServerManager/discord.yml. Храните серверный файл отдельно от клиентского модпака.
| Поле bot | Что указать |
|---|---|
| enabled | true для включения |
| token | Токен приложения бота, не пароль Valheim |
| guild_ids | ID подключённых Discord-серверов |
| admin_user_ids | Discord user IDs допущенных администраторов, не Steam64 |
| admin_channel_ids | ID каналов команд и административного чата |
| chat_channel_ids | ID публичных каналов общения |
Для 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 вместе со сборкой. Бот останавливается с игровым сервером и не способен запустить выключенный сервер.
Гайд был полезен?