Skip to content

feat(mod): 添加消息转发过滤及命令权限控制 - #19

Merged
zkhssb merged 1 commit into
easybot-team:developfrom
BaizhouziYou:feat/chat-filter-permissions
Oct 2, 2026
Merged

zkhssb merged 1 commit into
easybot-team:developfrom
BaizhouziYou:feat/chat-filter-permissions

Conversation

@BaizhouziYou

@BaizhouziYou BaizhouziYou commented Oct 2, 2026 •

Copy link
Copy Markdown

变更内容

  • 添加双向关键词、长度过滤,以及游戏到群的玩家名、UUID 黑名单
  • 自动聊天和 /easybot say 使用同一套过滤规则
  • 群到游戏同时检查纯文本和富文本段,避免拆分关键词绕过过滤
  • 添加命令开关、原版权限等级配置和可选 LuckPerms 权限节点
  • 帮助及补全遵守命令开关与权限,权限或配置变更后刷新命令树
  • 禁用绑定时同时阻止确认,绑定状态查询可独立使用
  • 保留 /easybot status 查询服务状态,将绑定状态查询移至 /easybot bind status
  • 校验配置后再应用重载,失败时保留上一份有效配置
  • 补充 README 配置示例及权限说明

问题原因

现有消息同步缺少插件侧过滤,无法按玩家、消息长度或关键词限制转发。
命令权限与开关不完整,禁用绑定后仍可执行确认入口。
服务状态和绑定状态重复注册 /easybot status,导致命令冲突。

影响

  • 默认不开启过滤,旧配置省略新增字段时使用默认值
  • 命中规则后整条消息不转发,不取消游戏内聊天
  • 关键词按普通文本包含匹配,忽略大小写;长度按去除颜色代码后的 Unicode 码点计算
  • LuckPerms 为可选依赖,不随 Mod 打包;未安装或节点未设置时使用配置的原版权限等级
  • LuckPerms 显式拒绝对 OP 同样生效,命令禁用优先于权限授予
  • 绑定状态查询命令调整为 /easybot bind status

验证

  • :1.21-fabric:remapJar
  • :1.21-neoforge:shadowJar
  • :1.20.1-legacyforge:compileJava
  • :26.3-fabric:compileJava
  • Fabric、NeoForge 1.21.1 实服验证双向过滤、玩家黑名单及手动转发
  • 验证 Unicode 长度边界、大小写及富文本跨段关键词
  • 验证命令开关、绑定禁用及两种状态查询
  • 验证 LuckPerms 显式拒绝对 OP 生效,普通玩家授权后可执行命令
  • 验证未安装 LuckPerms 时的原生权限路径
  • 无效配置重载后保留原有过滤规则
  • Fabric 连接真实主程序认证成功,命中规则的手动消息被拦截
  • 与 PR fix(mod): 修复 FabricProxy-Lite 兼容模式下聊天消息丢失 #18 组合后,Velocity + FabricProxy-Lite 下正常消息转发一次,关键词过滤正常
  • git diff --check

测试说明

实服测试使用 Minecraft 1.21.1:

  • Fabric Loader 0.19.5、Fabric API 0.116.17+1.21.1、LuckPerms 5.4.140
  • NeoForge 21.1.252、LuckPerms NeoForge 5.4.150
  • 代理组合使用 Velocity 3.4.0-SNAPSHOT build 563、FabricProxy-Lite 2.10.1

关联 issue

本 PR 覆盖了上述 issue 的部分需求

- 添加双向关键词、长度过滤及游戏侧玩家名、UUID 黑名单
- 为自动聊天和手动转发统一应用过滤规则
- 添加命令开关、权限等级配置及可选 LuckPerms 支持
- 完善绑定禁用检查,分离服务状态与绑定状态命令
- 校验重载配置,失败时保留上一份有效配置
- 补充过滤规则、命令开关及权限节点说明
Comment thread src/main/resources/config.json
@zkhssb
zkhssb merged commit 38db256 into easybot-team:develop Oct 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants