Discord集成

创作者: VerdantsAscent
已更新:2026-05-13 16:23:35
0KB

前置 MOD

使用 Discord集成 时将自动安装

关于此 MOD

Discord与Valheim双向聊天,带重启/停止反应的实时服务器状态面板,自动为每个客户端保存登录快照,以及一个自动重启的包装批处理文件。

Discord集成

为《英灵神殿》1.0版本更新。

双向 Discord ↔ Valheim 聊天,一个带重启/停止反应功能的实时服务器状态面板,自动为每个客户端记录登录快照,将死亡/成就/技能升级截图发布到 Discord,崩溃检测,聊天中的 GIF/图片渲染,以及一个自动重启包装批处理——全部由你自己的单个 Discord 机器人驱动。

需要帮助、发现漏洞、想要新功能? https://discord.gg/H9uKGcAujs


这个模组的功能

功能 你得到的东西
服务器管理面板 一条在 Discord 频道中实时更新的嵌入消息,显示玩家数量、名称、运行时间和最后心跳时间。点击 🔄 表情可重启服务器,点击 ⛔ 可停止服务器(停止后将等待下一次点击 🔄 才会重新启动)。
双向聊天中继 Discord消息会在游戏内显示,并带有前缀 [Discord] 作者: 以作者在Discord中的角色颜色显示。游戏内的喊话、说话和密语内容会通过webhook以玩家的名称和头像回传到Discord。
行内 GIF 和图片 Tenor / Giphy / Klipy 分享链接和直接附件上传会在游戏内聊天浮层中显示为实际图像(以及动图 GIF)。
@提及解析 一名玩家正在输入 @管理员 游戏内聊天发送真实消息 @管理员 通过机器人解析角色名称来发送Discord提醒。 @所有人 和 @here 按原样工作。
登录快照 每位登录的玩家都会收到一条 Discord 嵌入消息:其模组列表、错误数、警告数,以及 实际 产生这些错误的模组(无模糊匹配误报),以及客户端与服务器的模组差异对比。管理员可通过回应嵌入消息来请求完整日志/仅错误报告/模组列表 .txt/断线时捕获的会话日志。默认关闭(通知客户端登录制品关闭时,客户端完全不发送日志。
来自Discord的服务器指令 玩家, 踢出, 禁用 / 解封 和 !admin 添加 / 移除 / 列表,在Relay的聊天频道中输入。默认关闭,且仅允许白名单中的Discord用户或角色运行它们。
英灵神殿自身的成就 原版成就解锁时也会截图,就像FiresRPGmaker成就那样。
崩溃检测 一个独立的看门狗进程会随服务器一同启动。如果服务器崩溃或被强制关闭,看门狗会通过 webhook 发送一条“Server Crash Detected”嵌入消息,并更新状态面板。
自动重启封装器 可直接编辑 瓦尔海姆服务器包装器.bat 首次运行时会被提取到你的配置文件夹中。配置 服务器名称 / 服务器端口 / 服务器世界 / 服务器密码 / 公共服务器 曾经,把它丢在 瓦尔海姆服务器.exe,然后运行它而不是exe——这个包装器会处理崩溃后自动重启,并在Discord触发的停止操作后保持存活,这样只需点一下🔄就能让服务器恢复。
Discord 活动 可选的每事件Webhook推送:服务器启动、服务器停止、世界保存、玩家加入、玩家离开、玩家死亡、玩家喊话、随机事件、新的一天、反作弊踢出/违规、每小时摘要、美东时间午夜每日摘要。每一项都是独立的配置开关,因此你只会收到你想要的事件。
死亡时截图并保存进度 玩家的客户端会在死亡(附带死因说明)、完成成就和技能升级时截取屏幕截图,并发布到 Discord。ExpandWorldPrefabs 也可以通过以下方式触发截图 截图 戳一下玩家。每个来源都路由到一个 webhook(回退到通用 webhook)。按来源开关,默认全部开启;成就需要安装 FiresRPGmaker,EWP 戳一下需要 ExpandWorldPrefabs。

安装

需要 火焰统一核心 ——共享的Fires核心库。在Thunderstore上它会作为依赖项自动安装;如果你手动安装,请连同此模组一起下载。

  1. 安装 BepInEx——这个 BepInExPack_Valheim 在Thunderstore上是标准版。
  2. 丢弃 FiresDiscordIntegration.dll 进入 BepInEx/plugins/. 哪一侧需要它取决于你想要哪些功能——见下表。
  3. 启动一次服务器。它将:
    • 创建 BepInEx/config/com.Fire.FiresDiscordIntegration.cfg 每一处设置都为你注释好了。
    • 提取 BepInEx/config/FiresDiscordIntegration/valheim_server_wrapper.bat (自动重启包装模板)。
  4. 打开服务器配置并填写 [Discord] 已启用 = true 以及你在下方设置的 Webhook URL / 机器人令牌。

该DLL会自动检测它在哪一侧运行于 ZNet.Awake (它呼唤 是否为服务器() 并将其自身路由到 InitServer() 或 初始化客户端())。配置文件仅在需要它的一端读取——客户端无需进行任何配置。

DLL 按功能所需放置的位置

功能 服务器 客户端
实时服务器状态面板及重启/停止响应 ✓ —
游戏内喊话 → Discord(通过 Webhook) ✓ ✓*
游戏内说 / 密语 → Discord(通过 webhook) ✓ ✓
Discord → 游戏内聊天(纯文本显示) ✓ —
每用户 Discord 身份组颜色 在中继聊天频道上 ✓ ✓
GIF / 图像渲染 在游戏内聊天覆盖界面中 ✓ ✓
登录快照 (模组列表、错误、警告、附加日志) ✓
按需日志 / 错误 / 模组请求,通过 Discord 反应功能实现 ✓ ✓
截图 (死亡 / 成就 / 技能 / EWP 戳) ✓ ✓
崩溃检测 Discord 帖子 ✓ —
包装器批处理自动重启 + Discord 触发重启/停止 ✓ —

在客户端没有DLL的情况下,服务器看不到该玩家的任何日志数据,并完全跳过快照(不会出现误报嵌入,也不会崩溃)。

*Valheim 1.0 的喊话是从玩家发送给玩家的,所以只有当服务器上有其他人在线听到时,喊话才会到达服务器。如果在喊话玩家的客户端上安装此模组,那么即使服务器上只有他一个人,他的喊话也总能传到 Discord。而说话和耳语则始终需要在说话者的客户端上安装模组。

加入已安装该模组的服务器的玩家即使自己没有安装该模组也依然能正常游玩——只是不会贡献快照。其余服务端功能(状态面板、崩溃通知)无论是否安装模组对所有人都有效。


设置 Discord 机器人

如果你只想要 发出 Webhook(事件推送到Discord),你完全不需要机器人——只需在想要接收每类帖子的频道上创建webhook,然后把URL粘贴到配置里即可。

如果你想要 服务器管理面板, Discord 聊天转发,这个 每用户角色颜色,或 基于响应的日志请求,你需要一个机器人。以下是5分钟的设置:

1. 创建应用

  1. 打开 https://discord.com/developers/applications 并点击 新应用.
  2. 给它起个名字(例如 我的英灵神殿服务器). 点击 创建.

2. 添加机器人用户

  1. 在左侧边栏点击 机器人.
  2. 设置你希望其他玩家看到的头像和显示名称。
  3. 以下 特权网关意图,启用 服务器成员意图这就是让机器人读取每个Discord用户角色颜色,以便游戏内聊天能重新着色其消息的原因。(消息内容意图是 不 必需——我们使用 REST,而不是网关。)

3. 生成机器人令牌

  1. 仍在 机器人 页面,点击 重置令牌 → 好,动手吧!.
  2. 复制出现的长字符串。
  3. 令牌已显示 一次. 如果丢失了,就再次重置。

令牌粘贴位置

令牌会存入一个专用文件,位于你的 英灵神殿安装根目录 (包含以下内容的文件夹 瓦尔海姆服务器.exe) — 不 放入任意 BepInEx 配置:

<服务器文件夹>/FiresDiscordIntegration_BotToken.cfg

如果文件还不存在,先安装模组并启动一次服务器——首次加载时它会在该位置自动创建一个空模板。打开文件,将你的令牌粘贴到后面 BotToken = ,保存,重新开始。

为什么不在里面 BepInEx/配置/:Modman和其他配置分享方式在分享时会同步配置,把机器人令牌分享给任何人都是个坏主意。专用文件存放在该路径之外,因此同步工具永远不会碰它。

包装器批处理文件读取同一个文件来驱动 Discord 触发的重启轮询,因此批处理文件和模组会自动保持同步。

其他可获得该代币的来源(以最先找到的为准):

  1. 这 火盘_Discord机器人令牌 环境变量。最适合租用的主机:磁盘上什么都不留。
  2. [Discord.BotListener] Bot令牌路径,你在Valheim安装目录(或BepInEx文件夹)内选择的文件。配置存储了 路径,绝不是象征。一条通往内心的 BepInEx/配置 或 BepInEx/plugins 被拒绝,因为那些是模组管理器导出的文件夹。
  3. Discord集成机器人令牌.cfg 在服务器根目录(上方)。
  4. FiresDiscordIntegration_BotToken.cfg 在BepInEx文件夹中。

该令牌仅由专用服务器可执行文件加载。客户端或任何其他进程都不会读取它。

4. 邀请机器人加入你的Discord

  1. 在左侧边栏点击 OAuth2 → 网址生成器 (或 安装 取决于 Discord 版本)。
  2. 瞄准镜:勾选 机器人.
  3. 机器人权限: 查看频道, 发送消息, 阅读消息记录, 添加反应, 管理消息 (让模组在重启时清理旧状态消息)。
  4. 复制生成的网址,粘贴到浏览器中,选择你的服务器,点击 授权.

5. 复制你将使用的频道 + 公会ID

在Discord中, 用户设置 → 高级 → 开发者模式 开启右键菜单中的“复制 ID”选项。

然后右键单击并 复制ID 开启:

  • 你的服务器 (侧边栏中的公会名称)→ [Discord.BotListener] DiscordGuildId
  • 聊天频道 你想让机器人读取并转发 → [Discord.机器人监听器] 聊天频道ID
  • 状态面板和登录快照应存放的频道 → [Discord.BotListener] StatusChannelId (或 服务器管理器频道ID 如果你想将面板与快照放在不同的频道中)

6. 创建传出 Webhook

在每个应接收事件帖子的频道中: 编辑频道 → 集成 → Webhook → 新建Webhook → 复制URL将网址粘贴到匹配的 [Discord.网络钩子] 设置:

  • 通用Webhook地址 — 开始/停止/保存/每小时汇总/每日汇总
  • 聊天网络钩子地址 — 转发游戏内聊天(这样消息显示的是玩家名称和头像,而不是机器人的)
  • 反作弊Webhook地址 — 踢出/违规通知
  • 客户端日志Webhook地址 — 登录快照 + 按需日志产物
  • 事件网络钩子网址 — 随机事件(突袭)开始和结束,由服务器发布(空则回退到 通用网络钩子地址)

Webhook 和机器人可以发到同一个频道——Discord 不在乎。


包装器批处理(自动重启 + Discord触发重启/停止)

首次加载服务器时,该模组会提取 瓦尔海姆服务器启动器.bat 到:

<server folder>\BepInEx\config\FiresDiscordIntegration\valheim_server_wrapper.bat

那是 模板在文本编辑器中打开它,并填写顶部附近的配置块:

设置服务器名称=我的英灵神殿服务器(这些不需要引号)设置服务器端口=2456设置服务器世界=专用设置服务器密码=changeme设置服务器公开=1设置重启延迟=10

这些就是你通常会在 瓦尔海姆服务器.exe 命令行。密码必须至少5个字符,且不能出现在服务器名称中。

然后 将编辑后的 bat 文件复制到你的 Valheim 专用服务器文件夹 (那个带有 瓦尔海姆服务器.exe 在其中)。球棒可以重命名为任何名字—— 运行我的服务器.bat, 服务器.bat,随便什么——如果你在一台机器上运行多个实例,还可以把它的一份副本放到多个服务器文件夹中。每个副本都会读取哨兵文件和标志路径 相对于自身位置,这样他们就不会互相踩到。

这个功能主要是给那些用闲置Windows电脑开服、没有配置FTP也没有方便的服务器控制台的服主准备的……如果心跳停止而命令行窗口还开着,你可以在手机上通过Discord停止并重启服务器。 它确实有自己的心跳故障代码来实现自动重启,但说实话……目前还没达到预期效果(也许是未来的功能)

然后运行 蝙蝠 而不是 瓦尔海姆服务器.exe那只蝙蝠:

  • 如果服务器崩溃或被关闭,将在10秒冷却后自动重启。
  • 当Discord管理员点击状态面板上的🔄反应时,立即自动重启。
  • 当 Discord 管理员点击 ⛔ 反应时,干净地停止(并等待下一次 🔄 点击)。
  • 停止时回退到15秒一次的Discord轮询循环,因此无需单独启动一个进程来恢复服务器。

不要 添加 启用延迟环境变量扩展 对这个批处理文件。(别指望你会去改重启延迟行下面的内容)用于轮询 Discord 的内联 PowerShell 很讨厌它,会把脚本搞乱。该模板自带延迟扩展。 关 正因如此。


来自Discord的服务器指令

开启 [Discord.BotListener] 启用服务器指令,然后在中继的聊天频道中输入这些(前缀 命令前缀, 默认 !:)

!players | !who | !online 谁在线,附带ID !kick <名称或ID> !ban <名称或ID> !unban <ID> !admin add <steam ID> | !admin remove <steam ID> | !admin list !fireshelp 此列表
  • 只有白名单内的人员才能运行它们。 一个命令为某个Discord用户ID运行于 命令用户ID 或在其中担任职务的人 命令角色ID. 两个都为空 = 无人,即使功能开启也是如此。
  • 命令绝不会被转发到游戏聊天中,即使是拒绝的命令也不会。
  • !admin add 写入《英灵神殿》自己的管理员列表(管理员名单.txt)并立即将其发送给已连接的玩家。 管理员列表路径 对于控制面板读取自身文件的主机来说,这是一个可选的额外副本;它必须放在 Valheim 安装目录内(或 BepInEx 文件夹中)。
  • 命令永远不会重放:在服务器开始监听之前发布的命令会被忽略,因此重启不会踢出或封禁任何人。

英灵神殿的成就

原版成就截图 (默认开启)当玩家解锁一项英灵神殿成就时发布截图。

瓦尔海姆在模组游戏中不会解锁成就,所以默认情况下不会解锁任何内容,也不会发布任何帖子。这是预期行为。 允许在模组配置中解锁成就 (默认关闭)解除该限制。开启前请先阅读以下内容:

  • 解锁内容为 真实Steam成就 在每个玩家的个人资料上,即使移除模组后它们也会保留。
  • 作弊依然不作数:刷出的击杀、免费制作或作弊获得的物品都不会被记录。
  • 游戏内统计数据看似重置,其实是因为《英灵神殿》为符合成就条件的游玩单独显示了一套统计计数。旧有的总计数据仍然保留。

配置映射(快速参考)

这 BepInEx/config/com.Fire.FiresDiscordIntegration.cfg 文件中每个设置都有内联文档——打开它查看完整列表。重点如下:

章节 按键 笔记
Discord 已启用 主开关。
Discord.机器人监听器 Discord公会ID 用于@提及解析和每个用户的角色颜色。
Discord.Webhooks 通用网络钩子网址 / 聊天网络钩子网址 / 反作弊网络钩子地址 / 客户端日志Webhook地址 传出 Webhook。留空 = 该频道已禁用。
Discord.Webhooks 截图Webhook网址 死亡/成就/技能/EWP截图。留空则回退至 通用网络钩子地址.
Discord 网络钩子 事件网络钩子地址 随机事件(突袭)的开始与结束。留空则回退至 通用网络钩子地址. 切换: Discord.Events / 通知随机事件.
Discord.机器人监听器 启用机器人监听 所有需要机器人令牌的功能的总开关。
(无按键) Discord集成机器人令牌配置文件 在服务器根目录 机器人令牌存放在其独立文件中,位于外部 BepInEx/配置/ ——见上文第3步。
Discord.机器人监听器 机器人令牌路径 可选:你自己的令牌文件位置(仅路径,切勿包含令牌)。
Discord.机器人监听器 启用服务器命令 / 命令前缀 / 命令用户ID / 指令角色ID / 管理列表路径 来自Discord的服务器命令(见上方)。默认关闭。
Discord.BotListener 聊天频道ID 机器人读取Discord聊天内容的频道。
Discord机器人监听器 状态频道ID 直播状态面板所在的频道。
Discord.服务器管理 服务器管理器频道ID 可选——如果你不希望面板出现在这里,可为它单独设置频道 状态频道ID.
Discord.事件 启用状态心跳 开启/关闭实时面板。
Discord.事件 通知* 按事件开关。默认开启合理的选项;你可以随意调低干扰。
Discord.事件 聊天中继忽略前缀 以逗号分隔的词语;以其中某个词开头的聊天内容不会发送到Discord(例如 机器人 对于输入给机器人的命令;它抓取不到 瓶子)。默认为空。
Discord.事件 死亡截图 / 成就截图 / 技能升级截图 / 快速查看截图 截图来源开关,默认全部开启。 升级所需最低等级 / 技能升级消耗 限制技能帖。
Discord.事件 原版成就截图 / 允许在模组配置下解锁成就 英灵神殿成就截图(开启)和模组游戏解锁覆盖(关闭)。见上文。
Discord.客户端日志 通知客户端登录神器 / 登录时附加完整客户端日志 / 登录时附加模组列表 / 登录时附加错误警告 控制每次登录时显示的内容。
Discord.外观 网络钩子显示名称 / 网络钩子头像链接 覆盖 webhook 帖子的作者名称/头像。留空则回退到机器人的 @我 用户名 + 头像。

兼容性

  • 设计为与其他英灵神殿模组同时运行。已在与FiresGhettoNetworking相同的重度模组化环境中测试。
  • 聊天中继的TMP富文本重新着色 [Discord]在 Harmony 后缀中会发生带前缀的行 收到新聊天消息 —只要聊天频道模组不在我们的补丁运行前移除缓冲区条目,就应该能与它们共存。
  • 封装批处理文件从以下位置读取机器人令牌 FiresDiscordIntegration_BotToken.cfg 在服务器根目录,以及此模组BepInEx配置中的频道ID。其他模组的配置不会被修改。
  • 这个模组的Discord webhook和Bot监听器在配置文件中默认关闭,这是一个认知测试,防止那些不愿阅读的人直接使用。如果你希望它们真正发挥作用,你需要将它们开启并设置你的bot/webhook。

制作人员

Discord webhook 和 REST 管道最初是在 FiresGhettoNetworking 里搭建的。现在拆分成这个独立模组,这样大家就不用把网络模组范围之外的东西都打包在一起了。过去几个月一直在做这个,后来发现最近冒出来几个不太行的版本,没法从 Discord 本身拉取日志,也没有 gif 这种酷炫功能 XD,所以决定干脆把它单独拿出来发布。

许可

麻省理工学院——见 许可证.

问题 / 疑问

https://discord.gg/H9uKGcAujs

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!