feat(handler): 实现可配置的 PrefixNameHandler#34
Open
LBY123165 wants to merge 7 commits into
Open
Conversation
feat(handler): 实现可配置的 PrefixNameHandler 重构 prefix_handler.py 为工厂模式,解决 ForgeHandler 硬编码继承问题: - 新增 create_handler(handler_name) 工厂函数,支持按名称选择 base handler - 新增 _handler_map 字典维护 forge/fabric/spigot/paper/vanilla 映射 - config.json 新增 server_handler 配置项,默认值 "forge" - config.py 新增 server_handler 字段的默认值保障 - main.py 改用 create_handler() 替代硬编码 PrefixNameHandler() - 修复 main.py 第341行嵌套 f-string 语法错误 (Python 3.8 兼容) - 修复 papi.py list[str] 类型注解 (Python 3.8 兼容) feat(ci): 新增 GitHub Actions 自动化测试与发布流程 重写 .github/workflows/build-and-release.yml: - 触发条件改为 v* tag 推送或手动触发 - 新增 test job: 执行 36 项功能测试后才允许构建 - build job 依赖 test job 通过,打包并发布 Release - Release body 包含版本信息、环境信息、测试报告摘要 - 全部中文注释和中文报告输出 test: 新增 36 项插件功能测试 新增 tests/test_plugin.py 测试套件: - 模块导入验证 (9项): config/meta/message/rpc/event_bus/prefix_handler/ws/player_api/impl - 配置加载测试 (4项): JSON解析、必填字段、bot_filter、server_handler - 消息模型测试 (6项): Text/Image/File/At/Reply Segment 序列化往返 - 玩家API测试 (5项): PlayerInfo、离线UUID生成(Mojang规范)、确定性、唯一性 - 假人过滤测试 (2项): 前缀匹配、禁用状态 - Prefix Handler测试 (5项): forge/fabric/vanilla创建、回退、聊天解析 - RPC注册表测试 (2项): 装饰器注册、exec_op完整性 - EventBus测试 (2项): 事件触发、优先级排序 - WebSocket连接测试 (1项): 连接测试服务器、鉴权握手验证
自动从 MCDR 当前使用的服务端处理器(ForgeHandler / FabricHandler / SpigotHandler / PaperHandler / VanillaHandler)推断服务端类型,无需用户手动配置: - 新增 detect_handler_from_mcdr() 函数,从 MCDR 内部 handler 类名提取类型 - 默认配置 "server_handler": "" 触发自动检测,仅显式设置时覆盖 - 回退逻辑: 检测失败或类型不匹配时默认 forge
auto-detect 功能将默认配置改为 "",测试用例同步放宽校验范围。
on_info 同时检测 "left the game" 和 "lost connection" 两条日志行, 且与 on_player_left 对同一退出事件重复处理,导致一条退出产生 5-6 条重复日志。 - 移除 on_info 中的退出检测,统一由 mcdr.player_left 事件驱动 - on_player_left 委托给 _report_player_exit 避免逻辑重复
将去重逻辑提前到函数入口,统一对 bot 和正常玩家生效。 mcdr.player_left 可能因服务端输出 "lost connection" 和 "left the game" 两条日志而触发两次,无去重时 bot 走 return 前打印 "过滤假人" 造成重复。
Member
|
等作者看看 |
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
重构 prefix_handler.py 为工厂模式,解决 ForgeHandler 硬编码继承问题:
feat(ci): 新增 GitHub Actions 自动化测试与发布流程
重写 .github/workflows/build-and-release.yml:
test: 新增 36 项插件功能测试
新增 tests/test_plugin.py 测试套件: