Skip to content

Repository files navigation

HuHoBotPenguin — NeoForge

将 QQ 群机器人接入 Minecraft 1.21.1 NeoForge 服务器:游戏聊天与 QQ 群双向转发、白名单管理、在线查询、命令执行、敏感词审核、AI Agent 智能管理WebUI 图形化配置

基于 HuHoBotPenguin 的 NeoForge 平台移植版。

License: AGPL v3


支持的平台

平台 状态 JDK 要求 产物
NeoForge 1.21.1 本分支 JDK 21+ HuHoBot-Penguin_NeoForge-<版本>.jar
Spigot / Paper(api-version 1.18+) 上游 JDK 8+ HuHoBot-Penguin_Spigot-<版本>.jar
Nukkit / PMMP 待适配
Velocity / BungeeCord 待适配

功能概览

功能 说明
双向聊天转发 游戏 ↔ QQ 群消息实时互通,支持格式模板与前缀过滤
QQ 群指令系统 30+ 条内置命令,支持权限分级、命令开关与动态帮助
白名单管理 映射到服务器原生命令,支持自定义模板
敏感词审核 本地正则词库 + 可选 OpenAI 兼容接口 AI 二审
MOTD 服务器状态 /motd 查询服务器状态,返回图片 + Markdown 卡片
自定义命令 占位符替换,支持权限分级(普通/管理员)
多群支持 每群独立的管理员名单与配置
AI Agent @机器人 /agent 任务描述 —— AI 自动执行服务器管理任务
WebUI 图形化配置 浏览器访问 http://127.0.0.1:5678 管理所有配置项
群服互通 @提及 游戏内 /at 命令发送 QQ @消息,QQ→游戏蓝色高亮+叮音效
QQ 群管理 AI Agent 集成禁言、入群审批、自动审批策略等群管理工具
指令面板自动同步 启动时自动同步命令面板到 QQ 群(上限 20 条)

快速开始

1. 准备

  1. q.qq.com 申请机器人,获得 AppIDSecret
  2. 准备运行环境:JDK 21+
  3. 准备 Minecraft 服务器:NeoForge 1.21.1(推荐 21.1.217)

2. 安装

HuHoBot-Penguin_NeoForge-1.4.0-beta.1.jar 放入服务器 mods/ 目录,重启服务器。

3. 配置

首次启动后会在服务器根目录生成 config.yml,也可通过 WebUI 进行图形化配置。

核心配置项

# QQ 机器人凭据
bot:
  app-id: "你的AppID"
  secret: "你的Secret"
  name: "机器人昵称"
  groups: []                    # 群 OpenID 列表,留空则不限制

# 聊天格式
chat-format:
  from-game: "[游戏] {message}"       # 游戏→群 格式
  from-group: "[QQ] {name}: {message}" # 群→游戏 格式
  post-chat: true                       # 是否转发游戏聊天
  start-with: ""                        # 触发前缀(留空转发全部)

# AI Agent
agent:
  enabled: false
  base-url: ""        # OpenAI 兼容接口地址
  api-key: ""         # AI 接口密钥
  model: "gpt-4o-mini"
  command-mode: "manual"  # manual=手动审批 / auto=自动执行

完整配置说明请参考 WebUI 或 config.yml 中的注释。


AI Agent

使用方式

在 QQ 群中 @机器人 /agent <任务描述>,AI 会自动执行服务器管理任务。

示例:

@HuHoBot /agent 查看服务器插件列表
@HuHoBot /agent 给玩家 Steve 添加白名单
@HuHoBot /agent 禁言玩家 BadBoy 10分钟

命令执行模式

模式 说明
手动审批(manual) AI 执行危险操作时发送审批卡片,管理员/群主点击同意/拒绝
自动执行(auto) AI 直接执行所有操作,无需审批

⚠️ 不建议开 auto! 有用户反馈使用 auto 后 AI 幻觉导致误刷神装给玩家。数据无价,谨慎操作。

相关命令

QQ 群命令 说明
agent <任务描述> 触发 AI Agent 执行任务
newsession 清除当前用户的 AI 会话上下文
stop 紧急停止所有 AI 任务

WebUI 图形化配置

启动后在服务器控制台查看密码,浏览器访问 http://127.0.0.1:5678

控制台命令

命令 说明
/hb reload 重载配置文件
/hb info 查看适配器信息
/hb webui 查看 WebUI 地址
/hb password <新密码> 修改 WebUI 登录密码

群服互通 @提及

游戏 → QQ

在 Minecraft 聊天中输入 @玩家名 消息,消息会以 QQ @消息格式发送到群。

QQ → 游戏

QQ 群中的 @消息会自动解析为 §9@玩家名§r(蓝色高亮),被 @ 的在线玩家会收到音效提醒。

/at 命令

/at <群成员昵称> <消息内容>

向 QQ 群发送 @消息,支持 Tab 补全昵称。


QQ 群指令系统

公开命令

命令 说明
查信息 [OpenId] 查询自己的或指定用户的 OpenId 和认证状态
发信息 <内容> 将消息转发到游戏内聊天
查在线 查询在线玩家列表
帮助 查看所有可用命令

管理员命令

命令 说明
添加白名单 <玩家名> 添加玩家白名单
删除白名单 <玩家名> 删除玩家白名单
查白名单 查看白名单列表
执行命令 <命令> 执行服务器原生命令
全量 切换全量聊天转发开关

完整命令列表请查看 /帮助 或上游文档。


NeoForge 构建

环境要求

  • JDK 21+
  • Gradle 9.6.1+

构建命令

git clone https://github.com/Shabby-666/PenguinAgent-NeoForged.git
cd PenguinAgent-NeoForged

# 构建 NeoForge 模块
gradle :server-NeoForge:build --no-configuration-cache

# 产物位于
ls build/gather-jar/

注意:由于 Shadow 插件与 Gradle Configuration Cache 不兼容,构建时需加 --no-configuration-cache

项目结构

PenguinAgent-NeoForged/
├── build.gradle.kts              # 根构建文件
├── settings.gradle.kts           # 模块配置
├── deps/qqpd-bot-java/           # QQ Bot SDK(git submodule)
├── common/Bot/                   # 平台无关核心模块
├── server/Spigot/                # Spigot/Paper 平台适配
├── server/NeoForge/              # NeoForge 1.21.1 平台适配 ← 本分支
│   └── src/main/kotlin/cn/huohuas001/huhobotpenguin/neoforge/
│       ├── HuHoBotNeoForge.kt   # @Mod 入口,HuHoBot 实现
│       ├── events/               # 游戏事件监听
│       ├── commands/             # Brigadier 命令注册
│       ├── compat/               # QQ SDK 兼容层
│       └── manager/              # 配置管理
└── server/AdapterCommon/         # 适配器公共层

NeoForge 技术说明

项目 说明
NeoForge 版本 21.1.217
ModDevGradle 2.0.107
Kotlin 2.2.20
Shadow 8.3.11
产物大小 ~14 MB(已剔除 Minecraft 运行时)

NeoForge 适配要点:

  • 使用 ServerLifecycleHooks.getCurrentServer() 替代 Spigot 的 Bukkit.getServer()
  • CommandSource.sendMessage() 改为 sendSystemMessage()(1.21.1 mojmap)
  • 命令注册使用 Brigadier(LiteralArgumentBuilder
  • QQ SDK 的 PackageScannerImpl 不支持 NeoForge 的 union: 协议,通过预填充类加载器缓存解决
  • SDK HTTP 反序列化依赖线程上下文类加载器,需要在调度任务中切换到 Mod 类加载器

许可证

本项目采用 GNU Affero General Public License v3.0 许可证。

About

PenguinAgent的NeoForge 1.21.1版本,但是不是主做,更新可能会比Paper/Spigot慢

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages