2.7 KiB
2.7 KiB
背景
文件名: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.pyPlugins/WPSRedPacketBase.pyPlugins/WPSRandomRedPacket.pyPlugins/WPSPasswordRedPacket.pyPlugins/WPSExclusiveRedPacket.pyPlugins/WPSRedPacketClaim.py - 更改:实现红包核心服务、三类发包插件与抢红包入口,完成数据库表定义、指令注册与积分结算逻辑。
- 原因:支持手气/口令/专属红包以及统一的领取流程。
- 阻碍因素:无
- 状态:未确认