# 背景 文件名: 2025-11-06_1_migrate-game-bot.md 创建于: 2025-11-06_12-04-52 创建者: desktop-l305h65\admin 主分支: main 任务分支: 未创建 Yolo模式: Off # 任务描述 当前项目是另一个游戏bot项目重构后的新版本, 阅读并理解@.past_tasks 中过去做的一些内容, 将这些游戏功能移植到当前项目中, 采用目前的插件实现方法 # 项目概览 现有代码库采用插件机制, 插件通过 PluginInterface 注册指令与数据库表, 核心路由通过 PluginInterface.plugin_instances 进行分发。当前仅存在基础的 WPSAPI 插件, 还未落地任何游戏相关逻辑, 数据库初始化阶段只建立了 users 表。 # 分析 ## 旧项目依赖梳理 1. 底层依赖: 数据库结构 (users, game_states, game_stats 等) 与消息发送封装 (主 webhook + 个人 webhook), 这些为所有游戏与积分系统提供状态与通信能力。 2. 通用支撑: 用户注册/更新、私聊 webhook 注册、积分增减、统计记录、命令解析器、游戏基类、冒险-炼金互斥逻辑。多数复杂游戏 (狼人杀、冒险、赌场等) 直接使用这些功能。 3. 业务层: 各类游戏模块 (成语接龙、五子棋、狼人杀、冒险、炼金、赌场等)。其中狼人杀和赌场高度依赖个人 webhook 与积分系统, 冒险和炼金存在互锁关系。 ## 新架构观察 1. PluginInterface 提供 register_db_model 钩子以声明数据表结构, 插件成功加载后自动创建所需列, 适合将旧项目的各类状态表拆分到对应插件内。 2. 当前数据库仅含 users 表 (user_id, username, created_at, last_active), 尚无积分、个人 URL 或游戏状态字段, 需首先扩展基础个人信息结构。 3. 由于回调路由直接依赖指令注册, 任何基础功能 (例如注册用户名或 URL) 也需要以插件形式提供命令入口或 API。 # 提议的解决方案## 配置插件阶段方案 - 新增 ConfigPlugin, 利用 EasySave 将用户配置持久化到 Assets/user_configs.easysave, 支持最多百人规模。 - 以 chat_id + user_id 为键缓存配置, 提供 user.name / user.url / user.point 字段并维护积分历史。 - 指令入口不再使用句点, 解析 `config set/get/adjust` 递归子命令, 支持别名 cfg。 - 暴露 get_user_name/url/points 与 adjust_user_points 接口供其他插件调用。 - 通过 asyncio.Lock 确保写入串行, 保存失败会记录错误日志。 # 当前执行步骤:"3. 实施配置插件" # 任务进度 # 最终审查 [2025-11-06_15:04:03] - 已修改:Plugins/ConfigPlugin.py - 更改:创建配置插件,落地 config 指令并通过 EasySave 持久化用户资料与积分 - 原因:提供用户名、个人URL及积分的统一管理入口 - 阻碍因素:无 - 状态:未确认 [2025-11-07_手动更新] - 已修改: Plugins/ConfigPlugin.py->Plugins/WPSDailyAPI - 更改: 放弃ES, 重新转向数据库持久化 - 原因: 统一接口并实时读写 - 阻碍因素: 无 - 状态: 成功 [2025-11-07_22:11:00] - 已修改: Plugins/WPSDailyAPI - 更改: 完成签到功能与对应的提示功能 - 阻碍因素: 无 - 状态: 成功 [2025-11-07_22:33:00] - 已修改: Plugins/WPSDailyAPI->Plugins/WPSPointSystem - 更改: 更改Daily类名为Checkin - 原因: 原Daily类提供的功能不足以使用Daily的名称 - 阻碍因素: 无 - 状态: 成功