Commit Graph

20 Commits

Author SHA1 Message Date
e445878ed8 fix: 修正测试中模拟赛马奖励次数检查逻辑
原检查条件错误地减去了1,导致在赛马数量为0时出现负值。
现在直接比较奖励调用次数与赛马数量是否相等。
2026-04-07 20:26:02 +08:00
d1871d3919 test: 为内存积分服务添加获取余额的模拟方法
添加 get_balance 方法到 _InMemoryPointsService 模拟类中,以便在测试中能够模拟查询用户余额的操作。
2026-04-07 20:22:48 +08:00
9895256064 feat(horse_racing): 实现赛马消息更新替换与自动撤回
重构消息发送逻辑,引入消息类型区分和自动撤回机制。赛马进度更新现在会替换前一条更新消息,避免消息刷屏;比赛结果发送前自动撤回最后一条进度更新,提升聊天体验。同时支持配置不同消息类型的自动撤回时间。

- 新增 MessageService.send_with_recall 方法统一处理消息发送和撤回
- 添加 recall_previous_of_type 方法用于撤回特定类型的上一条消息
- 修改 _send_to_scope 函数支持消息类型参数
- 更新测试代码以适配新的消息发送接口
2026-04-07 20:17:00 +08:00
64020cb0e6 feat(赛马): 为马匹添加序号并优化积分结算展示
- 为 Horse 模型添加 index 字段,用于唯一标识马匹序号
- 在报名时自动分配递增序号,并在所有展示中使用固定序号排序
- 新增积分变化计算功能,在比赛结果中展示每位用户的积分变化和总结描述
- 支持通过序号或马匹名下注,优化用户交互体验
- 添加用户上次马名记忆功能,允许重复使用马名报名
- 更新测试用例以验证序号展示和积分变化功能
2026-04-04 22:43:46 +08:00
ab1329042a feat(group_horse_racing): 增加赛马消息图片渲染功能
- 在配置中新增图片渲染相关参数:RACE_RENDER_AS_IMAGE、RACE_IMAGE_WIDTH 等
- 复用 danding_qqpush 的 ImageRenderer,使其支持自定义标题
- 在比赛开始、结束和进度播报时,将文本消息转换为带标题的图片发送
- 修复测试用例中的消息发送函数调用
2026-04-04 22:09:53 +08:00
8adc17d311 test: 在模拟赛马测试中添加假机器人实例
为模拟赛马命令的测试环境添加一个 `_FakeBot` 实例,以更真实地模拟机器人交互场景。
2026-04-04 21:57:53 +08:00
79d1f69ec5 feat(测试): 为赛马模拟测试添加实时进度展示选项
添加对测试命令的参数解析,支持通过关键词触发实时展示赛马进度。
调整模拟配置以支持可控的回合间隔,并增加超时时间以适应展示模式。
2026-04-04 21:55:12 +08:00
488c6fa6f6 test(赛马插件): 修复模拟测试中的竞态条件
在测试模拟赛马时,添加对 CancelledError 的异常处理,防止任务取消导致测试挂起。同时修复 stop_race 方法的模拟,确保测试清理时能正确移除活动任务。
2026-04-04 21:50:53 +08:00
dc5ee6755b fix(test): 移除测试赛马模拟中的锁机制以避免死锁
重构测试模拟赛马流程,移除房间锁获取逻辑,改为直接清理现有房间状态。
引入沙盒环境构建提示信息,提升测试过程的可观测性。
2026-04-04 21:41:42 +08:00
e5d0db268b fix(test): 修复完全模拟赛马测试的并发与超时问题
- 将锁获取改为带超时的等待,避免因锁占用导致测试卡死
- 增加模拟任务的超时控制,防止无限等待
- 添加异常捕获与详细错误信息输出,便于问题定位
- 确保在测试异常或超时后正确清理资源
2026-04-04 21:36:58 +08:00
e22b44ff07 fix(群赛马): 降低测试命令优先级并添加确认消息
将测试模拟赛马命令的优先级从5调整为1,以避免与正式命令冲突。
在执行测试模拟前发送确认消息,明确告知用户此为无副作用的完全模拟。
2026-04-04 21:30:55 +08:00
699b57d1ea feat(赛马插件): 为测试模拟赛马命令添加别名
添加"测试模拟"作为"测试模拟赛马"命令的别名,并设置block=True防止命令冲突
2026-04-04 21:25:45 +08:00
1c9d964747 test(group_horse_racing): 重构模拟赛马测试以使用依赖注入
重构测试命令 `测试模拟赛马`,使用模拟依赖(内存存储、积分服务)替换真实组件,避免测试产生数据库副作用。
新增模拟类 `_FakeBot`、`_InMemoryRoomStore`、`_InMemoryPointsService` 和 `_NoopMessageService`,并临时替换模块中的全局依赖以执行完整比赛流程。
验证开赛消息、回合进度、结束结算、赛史保存及积分奖励调用的正确性,确保核心逻辑在隔离环境中正常工作。
2026-04-04 21:21:36 +08:00
c0798d127b test(赛马插件): 添加模拟赛马测试命令
新增测试命令“测试模拟赛马”,用于验证赛马引擎的核心逻辑。该命令会:
- 自动创建包含8匹随机命名赛马的房间
- 运行赛马引擎直至比赛结束
- 验证进度渲染格式的正确性
- 输出比赛结果和进度片段

这有助于在开发过程中快速验证赛马功能的完整性和正确性。
2026-04-04 17:08:45 +08:00
3372242d78 testenv1 2026-04-04 00:42:51 +08:00
fb3cc67b68 修改env读取手段 2026-04-04 00:05:56 +08:00
387dd3a0bb 修复:group_horse_racing 环境变量加载问题
- 修改 __init__.py 在插件初始化时加载 Config
- 修改 commands.py 和 test_commands.py 从 __init__.py 导入 plugin_config
- 确保配置通过 NoneBot 的 driver 正确加载环境变量
- 这样可以正确解析 .env 中的 JSON 格式环境变量

这解决了权限检查中 TESTERS 集合为空的问题。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 22:50:20 +08:00
756019b9ef 功能:完整实现测试设置积分命令
- 实现 handle_test_set_points 函数的完整逻辑
- 支持解析命令参数中的金额值
- 添加参数验证(非负数、整数类型)
- 返回设置结果反馈给用户

用法: /测试设置积分 <金额>

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 22:41:54 +08:00
21a936fee6 修复:group_horse_racing 测试命令权限检查
- 修复 check_tester() 函数未检查 TEST_MODE 状态的问题
- 现在测试命令会正确验证 TEST_MODE 是否启用
- 确保只有在测试模式下且用户在 TESTERS 列表中才能执行测试命令

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 22:37:33 +08:00
ab1b25e239 功能:实现 Group_Horse_Racing 群赛马插件
- 新增群赛马游戏插件,支持多人参与赛马竞猜

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 00:24:25 +08:00