# trss-akasha-terminal-plugin **Repository Path**: dmqaq/trss-akasha-terminal-plugin ## Basic Information - **Project Name**: trss-akasha-terminal-plugin - **Description**: 虚空插件trss&miao双版本 - **Primary Language**: JavaScript - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 0 - **Created**: 2025-06-19 - **Last Updated**: 2025-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, Trss-Yunzai ## README ![trss-akasha-terminal-plugin](https://socialify.git.ci/wbndm1234/trss-akasha-terminal-plugin/image?description=1&font=Raleway&forks=1&issues=1&language=1&name=1&owner=1&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Auto) # TRSS Akasha Terminal Plugin ![:动态访问量](https://count.kjchmc.cn/get/@:trss-akasha-terminal-plugin) 一个功能丰富的Yunzai-Bot插件,提供完整的游戏系统、sqlite数据库&JSON双存储支持和Web管理界面。(本来是trss版本单独开发版,想了想兼容下喵崽) ## 凑哈基煤处决通告 - 说明:本通告针对“凑哈基煤” - 罪名: 1. 经典“云开发”:在群里远程指导代码自我实现,本人不落地。 2. 评审会变“复读机大会”:全程“这不就很合理吗”循环播放。 3. 版本号“玄学打榜”:喊“赢麻了就发版”,严重扰乱节奏。 4. 懒得更新代码:以“代码会自己进化”为由,连续三版本不合并分支。 5. 生产“开摆式手动灰度”:当天上线当天摆,负载玄学波动。 6. 架构图进化为“电音ASCII”,自称燃起来,监控直接报警。 7. 把 TODO 当成民俗文化遗产,倡导“不可动摇的注释留白”。 8. 懒得更新代码:把临时补丁永久挂在“临时”目录,且拒绝重构。 9. 面对报错只说“寄”,并建议“等会儿就逆天改命”,延误修复。 10. 热修复“众筹热心”:喊话“兄弟们上啊”,流程彻底社交化。 11. 文档“小作文体”:结尾“懂的都懂”,实际不可执行。 12. 懒得更新代码:用“下一轮优化”拖延修复,将问题封存至下个纪元。 13. 回滚包装为“历史体验服”:大家贴贴旧版本,沉浸式穿越。 14. 频喊“赢麻了”提士气,CPU这边“寄麻了”,引发争议。 15. 制定“随缘打补丁”:谁看见谁修是缘分,引发追星式维护。 - 判决:即刻处决“凑哈基煤”史刑,并且永久踢出该仓库,本判决自发布之日起生效 - 温馨提示:纯属喜剧化说明,目的在于恶搞凑哈基煤,与代码无关 ## 🌟 主要功能 ### 游戏系统 - **战斗系统**: 经验获取、等级提升、特权系统 - **情侣系统**: 表白、结婚、情侣任务、约会、决斗 - **商店系统**: 物品购买、背包管理 - **任务系统**: 每日任务、冒险任务 - **合成系统**: 物品合成、分解、工坊升级 - **家园系统**: 房屋建设、装饰 ### 数据存储 - **JSON存储**: 传统文件存储方式 - **MySQL存储**: 高性能数据库存储 - **数据同步**: JSON与MySQL双向同步 ## 存储 重构与迁移 为提升并发下的数据一致性与性能,插件新增基于 `SQLite` 的本地持久化方案,并对读写路径与校验进行了统一设计。SQLite 现作为默认存储层(仍保留 JSON 用于静态模板与缓存;MySQL 功能可选)。 ### 新特性 - 统一数据层:`components/data_manager_sqlite.js` 提供用户、签到、背包、工坊、合成记录、关系、增益、任务等读写接口 - 原子写与并发锁:所有写入通过队列化写锁,避免并发覆盖与部分写入 - JSON Schema 校验:`data/schemas/*.json` + `Ajv` 在入库前进行数据结构校验 - 路径/键集中管理:`components/common-lib/paths.js` 与 `components/common-lib/keys.js` 统一数据路径与缓存键 - 双层缓存策略:`components/cache.js` 提供本地内存 + Redis 缓存,热门数据支持 TTL 与失效 - 同步 I/O 替换:`components/text.js` 等逻辑全部替换为异步 I/O 并接入 SQLite,移除阻塞读写 - SQLite 表结构:初始化时自动创建 表 ### 迁移步骤 - 安装依赖:在插件目录执行 `pnpm i` - 也可执行 `npm run install-sqlite` - 还有别忘了 `pnpm approve-builds` - 首次初始化:插件启动后自动在 `data` 目录创建数据库文件并建表(无需手动操作) - 数据切换:代码已默认优先读写 SQLite;JSON 文件仅用于静态模板(如商店与关系文案)与缓存回退 - MySQL 共存:如需继续使用 MySQL,同步与管理界面仍可用,但游戏数据默认走 SQLite ### 并发与一致性策略 - 写锁队列:所有写操作串行化,保证无交叉写入 - 原子写入:文件写采用临时文件 + 覆盖策略(由 `FileLockIntegration` 统一封装) - 校验失败拦截:写入前通过 Ajv 校验;失败直接抛错并拒绝提交 - 缓存 TTL:热门数据(如商店)在 Redis/内存缓存中设置 TTL,读写后自动刷新或失效 ### 目录与关键文件 - `components/sqlite_manager.js`:SQLite 初始化与建表 - `components/data_manager_sqlite.js`:数据访问层(含写锁与 Ajv 校验) - `components/common-lib/paths.js`:统一数据文件路径 - `components/common-lib/keys.js`:统一缓存键规则 - `components/text.js`:业务文案与游戏数据读取已接入 SQLite 与异步 I/O - `data/schemas/*.json`:各类数据的 JSON Schema 定义 ### 常见问题 - 依赖安装失败:请确保本机 Node.js 版本支持 `better-sqlite3`,Windows 环境建议使用较新的 Node 版本(还有试试pnpm approve-builds的操作) - 旧 JSON 数据如何使用:系统会尽量读取旧 JSON 文件进行回退,但推荐运行一段时间自动沉淀到 SQLite; - Redis 非必需:若未配置 Redis,缓存将仅使用内存层;不影响功能 ## 🚀 快速开始 ### 安装插件 使用 git 进行安装
① (国外更新较慢) 使用 Github ```bash git clone --depth=1 https://github.com/wbndm1234/trss-akasha-terminal-plugin.git ./plugins/trss-akasha-terminal-plugin/ ```
② (国内推荐最快) 使用 Gitee ```bash git clone --depth=1 https://gitee.com/dmqaq/trss-akasha-terminal-plugin.git ./plugins/trss-akasha-terminal-plugin/ ```
③ (国内备用最慢) 使用 Gitcode ```bash git clone --depth=1 https://gitcode.com/dmqaq/trss-akasha-terminal-plugin.git ./plugins/trss-akasha-terminal-plugin/ ```
或者直接下载并解压到 plugins 目录 ### 初始化依赖 ```bash cd ./plugins/trss-akasha-terminal-plugin/ pnpm i pnpm approve-builds ``` ### 启动服务 ```bash # 启动Web管理界面 #启动webui ``` ```bash # 启动MySQL数据库连接 #启动mysql ``` ```bash # 查看服务状态 #webui状态 #mysql状态 ``` ## 📋 命令列表 ### 管理命令 | 命令 | 说明 | |------|------| | `#启动webui` | 启动Web管理界面 | | `#停止webui` | 停止Web管理界面 | | `#webui状态` | 查看WebUI运行状态 | | `#启动mysql` | 连接MySQL数据库 | | `#停止mysql` | 断开MySQL连接 | | `#mysql状态` | 查看MySQL连接状态 | | `#同步json到mysql` | 将JSON数据同步到MySQL | | `#同步mysql到json` | 将MySQL数据同步到JSON | ### 游戏命令 | 命令 | 说明 | |------|------| | `#战斗` | 进行战斗获取经验 | | `#我的信息` | 查看个人信息 | | `#表白 @用户` | 向其他用户表白 | | `#结婚 @用户` | 与其他用户结婚 | | `#离婚` | 解除婚姻关系 | | `#商店` | 查看商店物品 | | `#购买 物品名` | 购买物品 | | `#背包` | 查看背包物品 | | `#任务` | 查看可用任务 | | `#冒险` | 进行冒险任务 | | `#合成 物品名` | 合成物品 | | `#分解 物品名` | 分解物品 | ## 🗄️ MySQL说明(可选) SQLite 为默认存储层,MySQL 支持保留用于数据同步与扩展需求;如需启用,请参考管理界面自行配置。 ## 🌐 Web管理界面 访问地址: http://localhost:3000 说明:WebUI详细模块列表已省略,保留基本启动与命令说明。 ## 🔧 配置说明 ### 主配置 (config/cfg.js) ```javascript export const cfg = { // WebUI配置 webui: { enabled: true, port: 3000, host: 'localhost' }, // MySQL配置 mysql: { enabled: false, autoConnect: false }, // 游戏配置 game: { maxLevel: 100, expMultiplier: 1.0, cooldownEnabled: true } } ``` ## 🚨 注意事项 1. **安全性** - WebUI默认只监听localhost,生产环境请配置防火墙 - MySQL密码请使用强密码 - 定期备份数据库数据 2. **性能优化** - 大量用户时建议使用MySQL存储 - 定期清理过期的统计数据 3. **数据备份** - 定期备份JSON文件和MySQL数据 - 重要操作前建议先备份 ## 📞 支持与反馈 如果遇到问题或有功能建议,请: 1. 检查日志文件获取详细错误信息 2. 确认MySQL连接配置正确 3. 验证依赖包是否正确安装 4. 查看WebUI控制台错误信息 ### 游戏说明 详细玩法说明滚去用命令 `#trss虚空帮助` 查看,本文档 不再说明。 ## ❤️ 贡献 - 这个是原[虚空插件](https://gitee.com/go-farther-and-farther/akasha-terminal-plugin) 仓库,我与原插件作者二创以适配trss崽(喵崽的ICQQ还是太牢了),[越追越远](https://gitee.com/go-farther-and-farther)+[上一刻](https://gitee.com/tyg211375)+[nahida](https://gitee.com/nahida22)+[我](https://gitee.com/dmqaq)来改的代码 - [爱发电の赞助](https://afdian.com/a/wbndm) **提交 Bug 或建议**: - 通过 [GitHub Issues](https://github.com/wbndm1234/trss-akasha-terminal-plugin/issues) 提交问题啦 - 通过 [GitHub pull requests](https://github.com/wbndm1234/trss-akasha-terminal-plugin/pulls) 提交PR啦 - 可以来[QQ群](https://qm.qq.com/q/EqqXeZ06MU)玩玩来提点建议捏 ![Star History Chart](https://api.star-history.com/svg?repos=wbndmqaq/trss-akasha-terminal-plugin&type)