1.新增一些配方2.新增红包系统3.WPSConfigSystem中新增用户名替换空白字符机制

This commit is contained in:
2025-11-17 21:19:14 +08:00
parent 0342d83916
commit 803fb9d49f
9 changed files with 855 additions and 17 deletions

View File

@@ -0,0 +1,40 @@
# 背景
文件名2025-11-17_1
创建于2025-11-17_19:43:26
创建者ASUS
主分支main
任务分支:未创建
Yolo模式Off
# 任务描述
新增一个红包系统,可以赠送积分,并发起一些小游戏,包括猜谜红包、手气红包、专属红包、口令红包。
# 项目概览
WPS Bot 插件化系统,已存在战斗、炼金、花园等插件,需要在既有积分/背包体系下扩展红包玩法。
# 分析
已查阅 `Plugins/WPSAPI.py``PWF/CoreModules/plugin_interface.py`:所有插件继承 `WPSAPI`,通过 `register_plugin` 绑定命令,消息发送统一走 `send_markdown_message`,依赖通过 `Architecture.Get` 获取,数据库操作直接使用 `get_db().conn`
积分记录位于 `user_info` 表,由 `WPSConfigAPI` 暴露的 `adjust_user_points/adjust_user_points_sync` 读写;签到、商店、战斗、菜园等模块都以此接口为唯一积分入口,理由是保证同一逻辑下的数据一致性。
背包、商店、战斗、菜园等复杂插件都采用“service+plugin”拆分与独立 `DatabaseModel` 定义;红包系统若要支持多种玩法,需要类似的 service 层管理红包生命周期、并通过 API 输出图鉴信息和命令帮助。
需求补充:
- 指令入口拆分:`红包|手气红包 <金额> <人数>`(缺省金额/人数分别由 `ProjectConfig` 读取,默认 100 / 4`口令红包 <金额> <人数> <口令>``专属红包 <金额> <user_id|用户名>`,统一通过 `抢红包 <红包ID> [tokens]` 领取,口令红包要求 tokens 与口令一致。猜谜红包暂缓实现。
- 金额不足直接拒绝发出;红包不限时间,可并行存在且发送者也能参与抢夺;人数不设上限但需合理处理默认值与输入校验。
- 红包发出后必须在返回消息中附带红包ID供玩家在 `抢红包` 指令中引用;需要记录红包状态、剩余份额/金额、领取日志,以及区分不同玩法的附加约束(专属白名单、口令验证等)。
# 提议的解决方案
(待补充:完成调研后填写多个可选实现思路及其优缺点。)
# 当前执行步骤:"1. 研究需求与代码结构"
# 任务进度
2025-11-17_20:29:15
- 已修改:`Plugins/WPSRedPacketService.py` `Plugins/WPSRedPacketBase.py` `Plugins/WPSRandomRedPacket.py` `Plugins/WPSPasswordRedPacket.py` `Plugins/WPSExclusiveRedPacket.py` `Plugins/WPSRedPacketClaim.py`
- 更改:实现红包核心服务、三类发包插件与抢红包入口,完成数据库表定义、指令注册与积分结算逻辑。
- 原因:支持手气/口令/专属红包以及统一的领取流程。
- 阻碍因素:无
- 状态:未确认
# 最终审查