2.7 KiB
2.7 KiB
背景
文件名: 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 表。
分析
旧项目依赖梳理
- 底层依赖: 数据库结构 (users, game_states, game_stats 等) 与消息发送封装 (主 webhook + 个人 webhook), 这些为所有游戏与积分系统提供状态与通信能力。
- 通用支撑: 用户注册/更新、私聊 webhook 注册、积分增减、统计记录、命令解析器、游戏基类、冒险-炼金互斥逻辑。多数复杂游戏 (狼人杀、冒险、赌场等) 直接使用这些功能。
- 业务层: 各类游戏模块 (成语接龙、五子棋、狼人杀、冒险、炼金、赌场等)。其中狼人杀和赌场高度依赖个人 webhook 与积分系统, 冒险和炼金存在互锁关系。
新架构观察
- PluginInterface 提供 register_db_model 钩子以声明数据表结构, 插件成功加载后自动创建所需列, 适合将旧项目的各类状态表拆分到对应插件内。
- 当前数据库仅含 users 表 (user_id, username, created_at, last_active), 尚无积分、个人 URL 或游戏状态字段, 需首先扩展基础个人信息结构。
- 由于回调路由直接依赖指令注册, 任何基础功能 (例如注册用户名或 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及积分的统一管理入口
- 阻碍因素:无
- 状态:未确认