Files
NewWPSBot/.tasks/2025-11-17_1_red-envelope-system.md

2.7 KiB
Raw Blame History

背景

文件名2025-11-17_1 创建于2025-11-17_19:43:26 创建者ASUS 主分支main 任务分支:未创建 Yolo模式Off

任务描述

新增一个红包系统,可以赠送积分,并发起一些小游戏,包括猜谜红包、手气红包、专属红包、口令红包。

项目概览

WPS Bot 插件化系统,已存在战斗、炼金、花园等插件,需要在既有积分/背包体系下扩展红包玩法。

分析

已查阅 Plugins/WPSAPI.pyPWF/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
  • 更改:实现红包核心服务、三类发包插件与抢红包入口,完成数据库表定义、指令注册与积分结算逻辑。
  • 原因:支持手气/口令/专属红包以及统一的领取流程。
  • 阻碍因素:无
  • 状态:未确认

最终审查