星界机器人

星界机器人

作为Discord机器人兼用的Minecraft模组,最初为Create: Astral制作

管理

AstralBot

build workflow License Environment

这是一个集 Minecraft 模组与 Discord 机器人于一体的软件包。它专为 Create: Astral 整合包的官方服务器打造,但采用了跨平台实现,因此其他用户也可使用。 其目标是易于使用,对非技术类服务器管理员友好, 同时为高级用户保留充分的复杂性。

功能

以下功能是此机器人的核心功能。请参阅 状态部分 了解已实现的功能。

  • Discord 与 Minecraft 账号绑定,可选要求绑定后才能加入白名单
  • Discord 与 Minecraft 聊天同步,可选通过 webhook 以提高可读性
  • 使用 Markdown 文件的 FAQ 命令,无需重启服务器

依赖项

此模组有一些依赖项,其中部分因技术上是可选的,并未直接注明:

实现

  • 使用 JDA 库与 Discord API 通信。
  • 使用 Kotlin,相较于 Java 提供更佳的开发体验
  • 使用 JetBrains Exposed 与数据库通信

配置

以下内容将可配置:

  • 要求绑定后才能加入白名单(默认:off)

  • 模仿 Discord 用户的聊天同步:

    1. 不模仿用户(机器人以自己的名义发送消息)
    2. (如可能)模仿 Minecraft 用户(消息将使用 Minecraft 用户名和头像)
    3. (仅在要求绑定后才能加入白名单时可用)模仿 Discord 用户(消息将以绑定的 Discord 用户名发送)

    默认:模仿 Minecraft 用户(若设置了可用的 webhook,否则不模仿)

  • 通过命令界面管理 FAQ(默认:off)

  • 数据库连接。默认使用 SQLite 数据库

状态

  • 白名单
  • FAQ 命令
    • 读取 Markdown 文件
    • 无需重启更新建议
    • 通过命令管理/创建
  • 聊天同步
    • Minecraft 到 Discord
    • Discord 到 Minecraft
    • Discord 上的用户模仿。可使用 Minecraft 头像或 Discord 头像

运行

此机器人/模组目前没有公开实例。要使用它,请在 Discord 开发者门户 创建一个新应用程序,并将其 配置为拥有三项特权网关意图:PRESENCE、SERVER MEMBERS 和 MESSAGE CONTENT。

复制机器人令牌并将其存储在安全的地方(如密码管理器),切勿向 其他人展示。为确保机器人能读取令牌,它必须位于正在运行的 Minecraft 服务器可访问的 环境变量 DISCORD_TOKEN 中,或位于配置文件的 token 键下。 例如,你可以在类 Unix 系统上修改 start.sh 脚本以 export 它,或直接设置后启动 shell 脚本:

startmc.sh:

export DISCORD_TOKEN=<place token here>

java ... # java command that starts the server

或

DISCORD_TOKEN=<place token here> startmc.sh # Start the script with the env variable set

启动服务器后,你可以进入 Discord 开发者门户的 OAuth2 URL 构建器, 生成一个带有 bot 和 applications.command 权限的 URL。 使用生成的 URL 让机器人加入你的服务器。

为了能够使用用户模仿(这会使聊天同步更易读),机器人将尝试在配置的聊天同步频道中 创建一个 webhook。这意味着它需要拥有管理 webhook 的权限。如果你 不想这样,可以手动在希望同步消息的频道中创建 webhook,并在模组配置的 webhook.url 选项中设置它。