平均 Discord Bridge

平均 Discord Bridge

一个简单的Hytale服务器Discord桥接器。允许Hytale聊天中继到Discord,反之亦然。

杂项

Get quality hosting!

Kinetic Hosting: 看看我的游戏托管合作伙伴!他们提供快速、实惠的托管服务,并拥有出色的客户支持!

AverageDiscord

一个用于 Hytale 服务器的 Discord 桥接插件。在游戏服务器和 Discord 频道之间转发聊天消息、玩家加入/离开事件以及服务器状态。

功能

  • 聊天同步(游戏内 ↔ Discord)
  • 玩家加入/离开的嵌入式通知(支持关联的 Discord 头像)
  • 服务器启动/关闭通知
  • 玩家死亡通知
  • 多频道消息路由(将不同事件类型分配到不同的 Discord 频道)
  • Discord 斜杠命令:/players/status/execute
  • 账户关联命令:/discordlink(带有私信确认流程)
  • 使用关联的 Hytale 账户权限进行权限感知的 /execute 命令执行
  • 热重载配置
  • 每 10 分钟更新一次机器人状态,显示玩家数量
  • 日志批处理:缓冲内部日志以防止 Discord 速率限制
  • 智能 ANSI 处理:支持服务器日志中的 256 色和 RGB 序列

最新变化 (0.4.2)

  • 更新插件以适配 Hytale Release 5 API
  • 修复了服务器关闭时错误日志的小问题

设置

  1. 从发布页面下载最新的 JAR 文件。
  2. 将其放入 Hytale 服务器的 plugins 文件夹。
  3. Discord 开发者门户 创建一个 Discord Bot。
  4. 启动服务器以生成 discord_bridge.json 文件。
  5. 编辑配置文件,填入你的 Bot Token 和频道 ID。
  6. 运行 /discordbridge reload 或重启服务器。

配置

首次运行后,服务器 AverageDiscord 文件夹内会生成一个 discord_bridge.json 配置文件。

配置文件示例

{
  "botToken": "your_bot_token_here",
  "channels": [
    {
      "channelId": "1234567890",
      "type": ["all"]
    },
    {
      "channelId": "2345678901",
      "type": ["chat"]
    },
    {
      "channelId": "3456789012",
      "type": ["join_leave", "server_state", "desc_status"]
    },
    {
      "channelId": "4567890123",
      "type": ["internal_log"]
    }
  ],
  "botActivityMessage": "Playing Hytale!",
  "discordIngamePrefix": "&9[Discord] ",
  "showActivePlayerCount": true,
  "stripLinksInChat": true,
  "stripPingsInChat": true
}

配置选项

选项 类型 描述
botToken 字符串 Discord Bot Token(或使用 HYTALE_DISCORD_TOKEN 环境变量)
channels 数组 频道路由配置
botActivityMessage 字符串 Discord 中显示的机器人状态文本
discordIngamePrefix 字符串 游戏内 Discord 消息的前缀(支持颜色代码)
showActivePlayerCount 布尔值 是否在机器人状态中显示在线玩家数量
stripLinksInChat 布尔值 发送到 Discord 前,是否移除游戏内聊天中的链接
stripPingsInChat 布尔值 发送到 Discord 前,是否移除游戏内聊天中的提及

频道配置

字段 描述
channelId Discord 频道 ID
type 输出类型数组(例如 ["chat", "join_leave"]

输出类型

类型 发送内容
chat 游戏内聊天消息
join_leave 玩家加入和离开
server_state 服务器启动和关闭
player_death 玩家死亡消息
internal_log 插件日志
desc_status 频道主题更新(含玩家数量)
all internal_log 外的所有内容

注意:internal_log 不包含在 all 类型中,如果需要必须显式配置。

如何获取你的 Bot Token 和频道 ID

  1. Bot Token:

    • 前往 Discord 开发者门户
    • 创建一个新应用程序或选择一个现有应用程序
    • 导航到 "Bot" 选项卡
    • 点击 "Add Bot"(如果是新应用程序)
    • 复制 "TOKEN" 部分下的令牌
  2. 频道 ID:

    • 在 Discord 中启用开发者模式(用户设置 → 高级 → 开发者模式)
    • 右键单击你想要的频道
    • 选择 "复制频道 ID"
    • 将其粘贴到配置中

工作原理

消息根据其输出类型路由到 Discord 频道。配置中的每个频道指定它接收哪些类型。

游戏内 → Discord:聊天消息发送到具有 chatall 类型的频道。

Discord → 游戏内:具有 chatall 类型的频道中的消息会以可配置的前缀发送到游戏内。

事件及其输出类型:

  • chat - 游戏内聊天消息
  • join_leave - 玩家加入/断开连接
  • server_state - 服务器启动/关闭
  • player_death - 玩家死亡
  • internal_log - 插件日志
  • desc_status - 频道主题更新(含玩家数量)
  • all - 除 internal_log 外的所有内容

依赖项

JAR 文件捆绑了所有依赖项。无需额外库。

  • Hytale Server
  • AverageHytaleCore
  • JDA 6.3.0
  • Gson
  • SLF4J

要求

  • Java 25+
  • Hytale 服务器
  • Discord Bot Token,权限包括:查看频道发送消息阅读消息历史
  • Bot Intents:GUILD_MESSAGESMESSAGE_CONTENT

命令

/discordbridge reload

重新加载插件配置,无需重启服务器。

别名: dbdiscord

用法: /discordbridge reload

权限: 服务器管理员/操作员

/execute

从配置了 all 输出类型的 Discord 频道运行服务器命令。

执行行为:

  • Discord 管理员以服务器控制台身份运行命令。
  • 非管理员的 Discord 用户以其关联的 Hytale 账户身份运行命令(必须已关联且在线)。

用法: /execute command:<命令>

示例: /execute command:say Hello from Discord!

/discordlink

关联或取消关联你的 Discord 账户与 Hytale 账户。

别名: linkdiscorddlink

用法:

  • /discordlink username <discord_username>
  • /discordlink unlink

关联工作原理:

  1. 在游戏中运行 /discordlink username <discord_username>
  2. Bot 向该 Discord 用户发送一条私信。
  3. 在私信中点击 ✅ 表情符号反应以确认并完成关联。

颜色代码

discordIngamePrefix 支持 Minecraft 颜色代码:&9(蓝色)、&a(绿色)、&c(红色)、&e(黄色)、&f(白色)以及其他标准代码。

故障排除

Bot Token 无效

  • 确认 Bot Token 是否正确地从 Discord 开发者门户复制。
  • 确保复制了整个 Token,没有多余的空格。
  • 如有必要,重新生成 Token。

找不到频道 ID

  • 确保已在 Discord 中启用开发者模式。
  • 确认频道 ID 正确(应为数字)。
  • 确保 Bot 有权访问该频道。

Discord 中未显示消息

  • 检查 Bot 是否具有在该频道发送消息的权限。
  • 确认配置中的频道 ID 正确。
  • 确保频道已配置正确的输出类型(chatalljoin_leaveserver_stateinternal_log)。
  • 检查是否至少有一个频道配置了你尝试发送的消息类型。
  • 检查服务器日志中是否有错误。
  • 尝试使用 /discordbridge reload 刷新配置。

游戏内未显示消息

  • 确认 Discord Bot 具有在已配置频道发送消息的权限。
  • 确保配置中的频道 ID 正确。
  • 确保 Discord 频道已配置 chatall 输出类型,以接收 Discord 消息并将其转发到游戏内。

配置问题

  • 确保 discord_bridge.json 文件是有效的 JSON(如有必要,可使用 JSON 验证器)。
  • 确认所有必需字段都存在:botTokenchannelsbotActivityMessagediscordIngamePrefix
  • 检查每个频道中的 type 数组是否包含有效的输出类型。
  • 进行配置更改后,尝试使用 /discordbridge reload

Bot 离线

  • 确认 Bot Token 有效。
  • 检查你的服务器是否具有互联网连接。
  • 查看服务器控制台中是否有错误消息。

作者

Average (Hytale 上的 js3)