Discord机器人

创作者: RustyMods
已更新:2025-09-01 01:59:06
129KB

前置 MOD

使用 Discord机器人 时将自动安装

关于此 MOD

实现你的英灵神殿服务器与 Discord 频道之间的双向通信。

《英灵神殿》Discord 机器人插件

在你的英灵神殿服务器和 Discord 频道之间启用双向通信。

功能

  • 🗨️ 聊天集成:在Discord和游戏内聊天之间发送消息
  • 🤖 Discord 命令从Discord执行服务器命令
  • 📢 服务器通知:服务器启动时获得通知
  • 💻 死亡动图 / 截图玩家死亡时,发送事件相关的gif或图片,并附上一句死亡吐槽
  • ✨ 截图 Discord聊天命令/快捷键
  • 📱 聊天AI:提示 AI 服务并改进死亡台词

前置条件

  • BepInEx 已安装
  • JsonDotNet 已安装
  • Discord Webhooks 已为你的服务器配置
  • Discord 机器人令牌 (如果你想让你的Discord服务器能够向游戏中发送消息)
  • 需要开启 客户端 和 服务器

安装

Discord 设置

如何创建Discord机器人

  1. 创建一个 Discord 应用程序
    • 前往 Discord 开发者门户
    • 点击“新申请”(右上角)
    • 为你的应用取一个名称(例如 ValheimBot),然后点击“创建”。
  2. 添加一个 机器人 到应用程序
    • 在左侧边栏中,点击“机器人”
    • 点击“添加机器人”---->点击“是的,执行!”确认
    • 您的应用程序现已关联一个机器人用户。
    • 你必须启用 消息内容意图
  3. 复制 机器人令牌
    • 在机器人页面中,在“令牌”部分下,点击“重置令牌”(如果已显示,则点击“复制”)。
    • 确认后复制生成的令牌。
    • 请保管好此令牌!如果泄露,请点击“重置令牌”生成新的令牌。
  4. 邀请机器人加入你的 Discord 服务器
    • 在侧边栏中,点击“O2Auth2”----“URL Generator”。
    • 以下 瞄准镜,检查 机器人
    • 在……下 机器人权限,检查你的机器人所需的权限
      • 发送消息
      • 阅读消息记录
      • 查看频道
    • 复制底部生成的链接
    • 在你的浏览器中打开该网址,并邀请机器人加入你的Discord服务器

创建 Discord Webhook

Webhook允许插件在不使用机器人身份的情况下向Discord频道发送消息。

  1. 创建 Webhook

    • 前往“集成”选项卡
    • 点击“创建Webhook”
    • 给它起个名字(例如“英灵神殿聊天”)
  2. 复制 Webhook URL

    • 点击“复制 Webhook URL”
    • 保存此URL用于你的插件配置

正在获取频道 ID

你需要 Discord 频道 ID 才能让机器人读取消息:

  1. 启用开发者模式

    • 在Discord中,前往用户设置(齿轮图标)
    • 前往“高级”设置
    • 启用“开发者模式”
  2. 复制频道ID

    • 右键点击每个要使用的通道
    • 选择“复制ID”
    • 保存这些ID以供配置使用

配置插件

首次运行后,配置文件将生成在 BepInEx/配置/编辑 Discord 机器人配置文件以设置您的:

  • 频道 ID
  • Webhook 网址
  • 机器人令牌【仅限服务器】

配置

在以下位置查找DiscordBot插件配置 BepinEx/配置/RustyMods.DiscordBot.cfg

你的配置可能如下所示:

[1 - 常规] ## 开启后,配置将被锁定,仅服务器管理员可更改。[与服务器同步] 锁定配置 = 开 ## 设置检查 Discord 消息的间隔时间,单位为秒 [与服务器同步] 轮询间隔 = 5 ## 开启后,错误将以警告形式记录到控制台 [与服务器同步] 记录错误 = 关 [2 - 通知] ## 设置 webhook 以接收通知,如服务器启动、停止、保存等... [与服务器同步] Webhook 地址 = https://discord.com/api/webhooks/1405043541192741007/X-WuWkr_0ApZ4JHq7_TOeMHfRCErXgUZkVnE_oh_yfy2mWKRShHK-wDzdasdWWDzdjk ## 开启后,服务器启动时机器人将发送消息 [与服务器同步] 启动 = 关 ## 开启后,服务器关闭时机器人将发送消息 [与服务器同步] 关闭 = 关 ## 开启后,服务器保存时机器人将发送消息 [与服务器同步] 保存 = 关 ## 开启后,玩家死亡时机器人将发送消息 [与服务器同步] 死亡通知 = 开 ## 开启后,新玩家连接时机器人将发送消息 [与服务器同步] 新连接 = 关 [3 - 聊天] ## 设置 Discord webhook 以显示聊天消息 [与服务器同步] Webhook 地址 = https://discord.com/api/webhooks/1404119063046652035/OqBFopk29Cku3_4TiLCJVwaagkyLVsdlkjasd239-sdjzdHH7vHh_RfWy1d3 ## 设置要监控消息的频道 ID [与服务器同步] 频道 ID = 9839768234583209 ## 开启后,玩家喊话时机器人将发送消息并监控 Discord 中的消息 [与服务器同步] 启用 = 开 [4 - 命令] ## 设置 Discord webhook 以显示命令的反馈消息 [与服务器同步] Webhook 地址 = https://discord.com/api/webhooks/1404941903144685779/gc8DFwfIO5eUnxzoJ1Dqsi-iX68GLUMWz_3sdlkjasd9DDAS7tKfB1qWuYN ## 设置要监控输入命令的频道 ID [与服务器同步] 频道 ID = 1106947857194165898 ## 可运行命令的 Discord 管理员列表 [与服务器同步] Discord 管理员 = .rusty,.warp [5 - 设置] ## 在此处添加机器人令牌,仅服务器端 机器人令牌 = 


用途

游戏内发送至Discord

  • 以以下身份发送的任何消息: 喊叫 游戏内聊天内容将显示在你配置的 Discord 聊天频道中
  • 服务器事件(如启动)将发布到通知频道
  • 死亡事件将发布到死亡信息频道

Discord 到游戏内

  • 在配置的Discord聊天频道中发送的消息将显示在游戏内聊天中
  • 在已配置的Discord命令频道中发送的命令将在服务器上执行

Discord 命令

在指定命令频道中发送命令:

  • 命令应以命令前缀开头 !
  • 示例: !listplayers 列出在线玩家
  • 示例: 存档 拯救世界

指令

图例:

- <string:Parameter> - 文本参数 - <int:Parameter> - 数字参数 - <float:Parameter> - 小数参数 - <parameter?> - 可选参数 - [仅限管理员] - 仅限已注册的 Discord 管理员使用的命令

通用指令

❓ 帮助

描述: 所有可用命令列表
用法: 帮助

⚠️ 管理员列表 [仅管理员]

描述: 注册到插件的Discord管理员列表
用法: !listadmins


玩家管理

🐉 玩家列表 仅管理员可见

描述: 活跃玩家及其位置列表
用法: !listplayers

❌ 踢 [仅管理员]

描述: 将玩家踢出服务器
用法: !kick <string:PlayerName>

🎁 给 【仅管理员】

描述: 直接将物品添加到玩家背包
用法: !give <string:PlayerName> <string:ItemName> <int:Stack> <int?:Quality> <int?:Variant>
示例: !give PlayerName IronSword 1 3 0

🌹 位置 仅限管理员

描述: 获取玩家当前坐标
用法: !pos <string:玩家名>

🐅 死亡 [仅管理员]

描述: 击杀指定玩家
用法: !die <string:PlayerName>


传送指令

🏃 传送 仅限管理员

描述: 将玩家传送至地点、床或另一名玩家
用法:

  • 传送 <string:PlayerName> 到床上 - 传送到床上
  • 传送 <string:PlayerName> <string:OtherPlayerName> - 传送至其他玩家
  • 传送 <string:PlayerName> <float:x> <float:y> <float:z> - 传送到坐标

⛳ 传送所有 [仅管理员]

描述: 将所有玩家传送至指定坐标
用法: !teleportall <float:x> <float:y> <float:z>


环境与天气

🌪️ 听着

描述: 可用环境列表
用法: !listenv

✨ 环境 仅限管理员

描述: 强制所有玩家使用此环境
用法: !env <string:环境名称>
示例: !环境 暮光_晴朗

✨ 重置环境 【仅管理员】

描述: 将所有玩家的环境重置为默认值
用法: 重置环境


生成与生物

❗ 生成 仅限管理员

描述: 在指定位置生成预制体
用法:

  • !spawn <string:PrefabName> <int:Level> <string:PlayerName> - 在玩家位置生成
  • !spawn <string:预制体名称> <int:等级> <float:x> <float:y> <float:z> - 在坐标处生成
    示例: !spawn 巨魔 3 PlayerName

事件

🌙 事件列表 仅限管理员

描述: 可用事件名称列表
用法: !listevents

⭐ 活动 仅限管理员

描述: 在玩家身上触发一个事件
用途: !event <字符串:事件名> <字符串:玩家名>
示例: !事件 狼 玩家名


玩家效果与技能

🚀 列表状态

描述: 可用状态效果列表
用法: 列表状态

🍕 添加状态 仅限管理员

描述: 给玩家添加状态效果
用法: !addstatus <string:PlayerName> <string:StatusEffect> <float:Duration>
示例: !添加状态 玩家名称 休息中 300

🙏 技能列表

描述: 可用技能列表
用法: 技能列表

💪 提升技能 [仅管理员]

描述: 提升玩家技能等级
用法: !raiseskill <字符串:玩家名称> <字符串:技能类型> <浮点数:数值>
示例: 将PlayerName的剑术技能提升10


服务器管理

💾 保存 [仅限管理员]

描述: 保存玩家档案和世界
用法: 保存

😊 信息 [仅管理员]

描述: 向所有玩家发送广播消息(显示在屏幕中央)
用法: !message <讯息文本>
示例: !message 服务器将在5分钟后重启!

🦄 设置按键 [仅管理员]

描述: 设置全局键(影响世界状态)
用法: !setkey <字符串:GlobalKeyName>
示例: !setkey 已击败骨量


管理员管理

🔑 添加管理员 [仅管理员]

描述: 将 discord 用户名添加到管理员列表
用法: !addadmin <string:用户名>

🔒 移除管理员 [仅管理员]

描述: 从管理员列表中移除Discord用户名
用法: !removeadmin <string:用户名>


聊天AI

🤖 AI 聊天集成

该插件支持多个AI服务商,以增强聊天互动和死亡吐槽。每个客户端各自配置API密钥,确保令牌用量和费用互不影响。

🔑 按键

  • 客户端管理的密钥:每位用户提供自己的 API 密钥
  • 增强死亡台词:配置API密钥后,由AI生成独特的死亡提示信息

多个服务商:可从4种不同的AI服务中选择

💡 提供商推荐与说明

免费层级选项:

  • 双子星——通过谷歌AI工作室提供有限的免费使用额度,是零成本实验的最佳选择
  • OpenRouter - 提供来自多家供应商的多个免费模型

付费服务:

  • ChatGPT - 需要付费的 OpenAI API 额度(无免费套餐)
  • DeepSeek——虽然价格有竞争力,但需要购买API点数

还没完全测试过这个功能的持久性,但短时间内可以是个有趣的噱头

## 设置使用哪个人工智能API [不与服务器同步] # 设置类型: AIService # 默认值: Gemini # 可接受的值: ChatGPT, Gemini, DeepSeek, OpenRouter 提供商 = Gemini ## 设置ChatGPT密钥 [不与服务器同步] # 设置类型: String # 默认值: ChatGPT = ## 设置Gemini密钥 [不与服务器同步] # 设置类型: String # 默认值: Gemini = ## 设置DeepSeek密钥 [不与服务器同步] # 设置类型: String # 默认值: DeepSeek = ## 设置OpenRouter密钥 [不与服务器同步] # 设置类型: String # 默认值: OpenRouter = ## 设置OpenRouter模型 [不与服务器同步] # 设置类型: OpenRouterModel # 默认值: Claude3_5Sonnet # 可接受的值: Claude3_5Sonnet, GeminiFlashFree, Llama31_8B, Llama31_70B, WizardLM8x22B, GPT4oMini, DeepSeekChat OpenRouter模型 = Claude3_5Sonnet

职业 [beta]

该任务允许按设定间隔调用Discord命令,从服务器启动时开始计时。

格式:

命令:!shout 间隔:1000.0 参数:这是服务器每16分钟重复发送的喊话消息

示例:

  • 每30分钟列出当前活跃玩家
命令:!listplayers 间隔:1800
  • 每小时保存世界和活跃玩家档案
指令:!save 间隔:3600

笔记

  • 管理员命令: 带有标记的命令 [仅管理员] 只能由管理员名单中注册的Discord用户使用
  • 玩家名称: 使用游戏中显示的确切玩家名称(区分大小写)
  • 坐标: 使用世界坐标(你可以通过以下方式获取这些坐标: 位置 指令)
  • 物品名称: 使用游戏中的精确预制体名称
  • 错误处理: 如果命令失败或参数不正确,机器人将回复错误消息

Valheim: 英灵神殿 的热门 MOD

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

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