法加的Discord桥接

法加的Discord桥接

MC Discord Bridge是一个服务端NeoForge模组,用于将Minecraft 1.21.x与Discord连接,提供事件日志、/mc聊天转发、账户绑定和排行榜功能。

管理

功能特性

  • Minecraft -> Discord 桥接,用于服务器生命周期、玩家加入/离开、死亡、进度和天数里程碑公告
  • Discord -> Minecraft 聊天转发,通过配置频道中的 /mc 斜杠命令实现(含提及净化处理)
  • /mc 转发至 Minecraft,并将纯文本回显至 Discord(**名字:** 消息)
  • /mc 在 Discord 用户已关联时使用关联的 Minecraft 昵称
  • 丰富的 Discord 嵌入消息,包含各事件专属颜色、时间戳、可选的玩家头像缩略图,以及纯文本回退方案
  • 机器人活动状态轮换,可配置活动列表、间隔和类型(PLAYING、WATCHING、LISTENING、COMPETING)
  • 管理员日志频道,支持命令脱敏和结构化管理员嵌入消息
  • Discord 管理员配置斜杠命令:/config 用于更新聊天/管理员频道和白名单公会
  • Discord/Minecraft 账号关联,通过 /link(临时一次性验证码)和游戏内 /bridge link <代码> 实现
  • /leaderboard 斜杠命令,支持分类、分页和可见性(默认 private,可选 public)
  • 排行榜包含在线和离线玩家及其已保存的统计数据
  • 已关联玩家在排行榜和嵌入消息中显示为 Discord 提及(<@discordUserId>)
  • 机器人活动状态轮换包含内置的在线/最大玩家数状态条目
  • 健壮的启动/运行时行为:Discord 故障会被记录,启动消息会排队等待 JDA 就绪

Discord 机器人权限

机器人权限:

  • 读取消息 / 查看频道
  • 发送消息
  • 读取消息历史

配置

首次运行会创建 config/mcdiscordbridge-common.toml。

# Discord 机器人令牌或 env:DISCORD_BOT_TOKEN
discordApiKey = "env:DISCORD_BOT_TOKEN"

# 仅接受来自此公会的消息
whitelistGuildId = "123456789012345678"

# 聊天桥接的 Discord 频道
chatChannelId = "123456789012345678"

# 管理员日志的 Discord 频道
adminLogChannelId = "123456789012345678"

# 文本消息转发模式的旧版开关(斜杠命令 `/mc` 不需要此选项)
enableMessageContentIntent = false

# 发送 Discord 嵌入消息以获得更丰富的事件日志
enableEmbeds = true

# 嵌入消息的十六进制颜色,例如 #57A5FF
embedColorHex = "#57A5FF"

# 在 UUID 可用时在嵌入消息中包含玩家头像缩略图
includePlayerHeadInEmbeds = true

# 包含 %uuid% 占位符的 URL 模板
playerHeadUrlTemplate = "https://crafatar.com/avatars/%uuid%?size=128&overlay"

# 从 botActivities 轮换机器人活动状态文本
enableBotActivityRotation = true
botActivities = ["Watching the server", "Bridging chat", "Tracking events"]
botActivityRotateSeconds = 20

# PLAYING、WATCHING、LISTENING、COMPETING
botActivityType = "WATCHING"

# 每隔 N 个 Minecraft 天发送一次天数里程碑消息(0 表示禁用)
dayMilestoneGap = 10

# 启用 Discord 账号与 Minecraft 玩家的关联
enableAccountLinking = true

# 关联验证码的有效时长
linkCodeExpirySeconds = 600

# 一次性账号关联验证码的长度
linkCodeLength = 6

通过环境变量设置令牌

设置:

export DISCORD_BOT_TOKEN="your_token"

然后在配置中设置:

discordApiKey = "env:DISCORD_BOT_TOKEN"

设置

在受信任的 Discord 服务器中,使用以下一个或多个参数运行 /config:

  • chat_channel_id
  • admin_channel_id
  • whitelist_guild_id

只有 Discord 管理员才能运行 /config。

账号关联

  • 在 Discord 中,运行斜杠命令:/link
  • 机器人会通过临时消息回复一次性验证码
  • 在 Minecraft 中,运行:/bridge link <代码>
  • linkCodeExpirySeconds 控制验证码的有效时长

Discord 到 Minecraft 转发

  • 在 Discord 配置的聊天频道中,运行:/mc <消息>
  • 消息会以 [Discord] <名字> 消息 的形式转发到 Minecraft 聊天
  • 同一消息会以纯文本形式回显到 Discord:**名字:** 消息
  • 如果 Discord 账号已关联,名字 将使用关联的 Minecraft 昵称

排行榜

  • 在 Discord 中,运行:/leaderboard <分类>
  • 可选页码:/leaderboard <分类> <页码>
  • 可选可见性:/leaderboard <分类> <页码> <可见性>,其中 可见性 为 private(默认)或 public
  • 已关联玩家显示 Discord 提及标签(<@discordUserId>)
  • 分类:playtime、deaths、player_kills、mob_kills、mined_blocks、distance_walked
  • 排行榜响应默认是临时消息

备注

  • 此模组仅限服务器端。请勿安装在客户端。
  • Discord 故障会被记录,不会故意导致服务器启动崩溃。
  • 避免在命令使用中记录敏感信息;默认启用脱敏功能。