fixed # 适配AstrBot

This commit is contained in:
2026-10-23 19:12:16 +08:00
parent d0c1741940
commit 685cff9293
49 changed files with 1557 additions and 165 deletions
+13
View File
@@ -0,0 +1,13 @@
# 各平台发布说明
各平台发布包的 README 统一在此维护:
- `nonebot.md`:NoneBot。
- `zhenxun.md`:真寻。
- `astrbot.md`:AstrBot。
对应工作流通过 `scripts/build_<平台>.py` 读取上述文件,
在生成的发布仓库和安装包中写为根目录 `README.md`。
文中的相对资源路径以生成的发布仓库根目录为准。
后续发布文案请修改本目录;原位置的文档保留供历史参考。
+90
View File
@@ -0,0 +1,90 @@
<p align="center">
<img src="https://raw.githubusercontent.com/Shu-Ying/astrbot_plugin_farm/main/logo-readme.png" width="400" alt="真寻农场 Logo">
</p>
# 农场 · AstrBot
开通自己的农场,购买种子、播种、收获、管理仓库,与群友一起偷菜、开垦土地。
农场图片、商店、仓库和帮助菜单均可在聊天中查看,存档保存在本地。
![农场预览](https://raw.githubusercontent.com/Shu-Ying/astrbot_plugin_farm/main/images/farm-preview.png)
## 安装与快速开始
在 AstrBot 插件市场搜索 `astrbot_plugin_farm`,或在插件管理中选择
「从文件安装」,上传作者提供的完整插件 ZIP。不要只上传 `main.py`。
安装依赖后重载插件。按你配置的唤醒前缀发送指令,下面以 `/` 为例:
1. `/开通农场`:创建农场,获得初始6块土地。
2. `/种子商店`:查看种子名称、编号与价格。
3. `/购买种子 白萝卜 1`,然后 `/播种 白萝卜 1`。
4. `/我的农场` 查看状态,生长期间用 `/农场除虫` 清除虫害。
5. 成熟后 `/收获`,用 `/我的作物` 查看库存,或 `/出售作物` 出售。
发送 `/农场帮助` 查看当前版本自动生成的图片菜单;
发送 `/农场帮助 文字` 查看文字版。仅 `/我的农场 高清` 支持高清。
## 指令
`[参数]` 表示可选。作物支持名称或 `#编号`;同名作物请使用编号。
仓库默认图片,例如 `/我的种子 2 文字`。偷菜目标必须通过消息中的 @ 指定。
<!-- FARM_COMMANDS -->
## 配置
| 配置项 | 默认值 | 说明 |
| --- | --- | --- |
| `font_path` | 空 | 中文字体路径;留空尝试系统字体,无可用字体时退回文字 |
| `data_dir` | 空 | 留空使用 `data/plugin_data/astrbot_plugin_farm`;更改不会自动搬迁存档 |
| `image_format` | `AUTO` | `AUTO` 为 JPEG;也可选 `JPEG` 或 `PNG` |
| `image_quality` | `75` | 整数1~95,下一次图片请求生效;PNG不受影响 |
除图片质量外,配置变更后请重载插件。高清农场的图片质量不低于85。
依赖 Pillow 和 aiohttp,由插件依赖声明安装;插件不捆绑中文字体。
当前重点适配 QQ/OneBot(`aiocqhttp`),其他平台尚未完成真实环境验证。
## 玩法与旧账号兼容
- 新账号初始6块土地。`/开垦 条件` 查询下一块地的等级和费用,
`/开垦` 每次购买1块普通空地;未配置的地块不会扣款或放行。
- 可靠识别为初始3块地的旧账号,一次性追加3块普通空地,保留已有开垦成果、
作物、加成与资产。来源不明、编号异常或补后超过当前30个显示位置时,
保留原状并提示管理员处理,不截断、不折现。
- 新播种及下一季每半个基础生长周期生虫一次,间隔至少2小时。
已排定的旧生虫事件仍按原计划执行一次。
- 每只虫降低生长速度5%;成熟时每只虫使本季减产5%。成熟后除虫无法恢复
本季减产,请在生长期间及时除虫。
- 每日最多5次成功偷菜,北京时间零点重置;无可偷作物不消耗成功次数。
- 出售时自动跳过已锁定作物。仓库可使用作物编号操作。
## 升级与数据备份
升级前备份 `data/plugin_data/astrbot_plugin_farm`;若自定义 `data_dir`,
请备份实际目录。数据库为 `farm.sqlite3`,日志为 `farm-preview.log`。
旧库迁移前建议先在副本中验证。更换机器人、平台实例或部署不会自动合并账号。
新版当前没有签到、改名、土地升级、点券商店、外部金币兑换及旧远程服务功能。
请以当前帮助菜单为准,不要套用旧1.x版本指令。缺少稳定消息ID时,
插件会拒绝写操作以避免重复扣款。离线包校验及模拟宿主测试不代表线上验证。
QQ/OneBot 图片查询会请求发送者的腾讯头像用于农场及详情图片;
请求失败使用默认头像,成功缓存5分钟、失败缓存30秒,最多缓存16项。
其他平台使用默认头像。存档按部署、平台实例、机器人及用户隔离。
## 更新日志与反馈
- [更新日志](https://github.com/Shu-Ying/astrbot_plugin_farm/blob/main/CHANGELOG.md)
- [反馈问题](https://github.com/Shu-Ying/astrbot_plugin_farm/issues)
- [插件商店](https://cloud.astrbot.app/plugin/Shu-Ying/astrbot_plugin_farm)
代码许可见插件所附 LICENSE。角色图标为非官方二次创作,不表示获得官方授权;
角色与原作相关权利不因代码许可证而转移。
## 开发者本地构建
开发源为 Farm 主仓库。Windows 双击 `build_astrbot.cmd`,或运行
`python scripts/build_plugin.py astrbot`,构建后生成完整 ZIP 和校验文件。
每次使用独立输出目录,不安装或启动机器人、不自动推送远端。
版本来自 `version.txt`;命令表、元数据与展示文件由构建生成。
+67
View File
@@ -0,0 +1,67 @@
# NoneBot 农场
<p align="center"><img src="./logo.png" width="400" alt="真寻农场 Logo"></p>
从 `main_plugin_farm` 自动生成的普通 NoneBot 插件,与真寻版使用相同的
业务核心、命令和渲染资源,不依赖真寻或 zhenxun-utils。
![农场预览](images/farm-preview.png)
## 安装与配置
需要 Python 3.10 及以上。生成仓库中执行 `pip install .`,或安装经过
标签发布的 `nonebot_plugin_farm` 包,然后在 NoneBot 启动脚本中加入:
```python
nonebot.load_plugin("nonebot_plugin_farm")
```
可在 `.env` 中设置:
```dotenv
FARM_FONT=C:/Windows/Fonts/msyh.ttc
FARM_IMAGE_FORMAT=AUTO
FARM_IMAGE_QUALITY=75
FARM_DEPLOYMENT=nonebot
```
`FARM_DATA_DIR` 可显式指定数据目录,默认沿用旧版插件 localstore 下的
`nonebot_plugin_farm/farm_db` 子目录。旧 `farm.db` 保留,首次使用按当前
机器人和平台迁入 `farm.sqlite3`;遇到账号或平台冲突会拒绝覆盖。
日志写入该目录的 `farm-preview.log`。字体不可用时提供文字响应。
`FARM_IMAGE_QUALITY` 为整数1~95,默认75,统一控制全部农场图片
的编码质量;越高通常越清晰、文件越大,PNG无损格式不受此值影响。
启动时校验配置。只有“我的农场 高清”允许高清,使用1536宽,质量
取配置值与85的较大值;其他命令不接受高清。种子/作物仓库保留
分页和“文字”选项,例如“我的种子 2 文字”。
部署标识一旦使用,不应随意变更,否则会切换到不同的存档身份。
## 当前命令
开通农场、我的农场、农场详述、地块编号、我的农场币、我的点券、
我的种子、我的作物、种子商店、购买种子、播种、收获、铲除、
作物加锁、作物解锁、出售作物、农场除虫、除虫、偷菜、农场帮助。
发送「农场帮助」查看参数。图片与提及由 Alconna 统一消息适配。
开垦每次增加1块普通空地;开垦 条件查询下一块地的等级与费用。
初始3块的旧账号按可靠注册或旧库迁移记录一次性补3块,保留已开垦成果;
来源不明、编号异常或补后超出30位置则保留原状并明确提示。
范围与当前真寻生成版一致;旧版签到、改名、土地升级等命令
尚未在共享核心中实现,此版本不提供这些命令。
## 生成与发布
主仓库 `version.txt` 是版本的唯一来源,生成 ZIP、包版本和清单。
`nonebot-preview.yml` 在 PR 中测试和构建,在主仓库 `main` 推送后
使用 `FARM_RELEASE_TOKEN` 同步到 `Shu-Ying/nonebot_plugin_farm/main`。
同步任务沿用真寻的 `zhenxun-preview` environment,兼容其中已有密钥。
目标仓库保留 `v*` 标签发布 PyPI 的方式和 `PYPI_TOKEN` 密钥。
普通同步只校验、构建,不发布 PyPI。手动推送标签前应确认版本未在
PyPI 使用,且标签去掉 `v` 后与 `version.txt` 完全一致。
接入时远端旧版为 1.5.7,主仓库为 1.5.4;用户计划后续统一改为
2.0.0,本次未提前修改。统一后发布标签应为 `v2.0.0`。
生成仓库的 `verify_package.py --directory .` 校验文件完整性;
`python -m build` 生成 wheel/sdist。远端 CI 和实际机器人消息行为
需要在部署环境进一步验证。
+142
View File
@@ -0,0 +1,142 @@
<div align="center">
# 真寻农场(zhenxun_plugin_farm)
<img src="./logo.png" width="400" alt="真寻农场 Logo">
<p align="center">
<a href="./LICENSE">
<img src="https://img.shields.io/badge/license-GPL3.0-FE7D37" alt="license">
</a>
<a href="https://www.python.org">
<img src="https://img.shields.io/badge/Python-3.10%2B-blue" alt="Python">
</a>
<a href="https://github.com/astral-sh/ruff">
<img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json" alt="ruff">
</a>
<a href="https://nonebot.dev/">
<img src="https://img.shields.io/badge/Nonebot-2.0.0%2B-black" alt="Nonebot">
</a>
<a href="https://github.com/zhenxun-org/zhenxun_bot">
<img src="https://img.shields.io/badge/zhenxun-0.2.4%2B-%23ECD9D3" alt="Python">
</a>
</p>
<p align="center">
[![tencent-qq](https://img.shields.io/badge/%E7%BE%A4-%E7%9C%9F%E5%AF%BB%E5%86%9C%E5%9C%BA%E6%B5%8B%E8%AF%95-%23FF99CC
)](https://qm.qq.com/q/7hsOD4rOw2)
</p>
你是说可以种地对吧🤔?
</div>
---
## 目录
- [真寻农场(zhenxun\_plugin\_farm)](#真寻农场zhenxun_plugin_farm)
- [目录](#目录)
- [农场界面](#农场界面)
- [如何安装](#如何安装)
- [使用指令](#使用指令)
- [更新日志(详细):](#更新日志详细)
- [用户方面](#用户方面)
- [代码方面](#代码方面)
- [待办事宜 `Todo` 列表](#待办事宜-todo-列表)
- [关于](#关于)
- [致谢](#致谢)
- [许可证](#许可证)
- [上游仓库](#上游仓库)
---
## 农场界面
![农场界面](./images/farm-preview.png)
---
## 如何安装
方法一(推荐):在小真寻后台的插件商店下载即可<br>
方法二:下载源码放在小真寻`plugin`目录下
---
## 使用指令
| 指令 | 描述 | Tip |
| --- | --- | --- |
| @小真寻 开通农场 | 首次开通农场 | |
| 我的农场 | 你的农场 | |
| 农场详述 | 农场详细信息 | |
| 我的农场币 | 查询农场币 | |
| 种子商店 [筛选关键字] [页数] or [页数] | 查看种子商店 | 当第一个参数为非整数时,会默认进入筛选状态。页数不填默认为1 |
| 购买种子 [种子名称] [数量] | 购买种子 | 数量不填默认为1 |
| 我的种子 | 查询仓库种子 | |
| 播种 [种子名称] [数量] | 播种种子 | 数量不填默认将最大可能播种 |
| 收获 | 收获成熟作物 | |
| 铲除 | 铲除荒废作物 | |
| 我的作物 | 你的作物 | |
| 出售作物 [作物名称] [数量] | 从仓库里向系统售卖作物 | 不填写作物名将售卖仓库种全部作物 填作物名不填数量将指定作物全部出售 |
| 偷菜 @美波理 | 偷别人的菜 | 每人每天只能偷5次 |
| 购买农场币 | 将真寻金币兑换成农场币 | 兑换比例默认为1:2 手续费默认20% |
| 更改农场名 [新的农场名] | 改名 | 农场名称无法存储特殊字符 |
| 农场签到 | 签到 | 需要注意,该项会从服务器拉取签到数据 |
| 土地升级 [地块ID] | 将土地升级,带来收益提升 | 如果土地升级时,土地有播种作物,那么将直接成熟 |
---
## 更新日志[(详细)](./log/log.md):
用户方面
---
- 新增土地升级指令,快来将土地升级至红土地、黑土地、金土地吧
- 新增查漏补缺作物资源功能,自动更新最新作物和作物资源文件
- 定时更新签到文件、作物资源从00:30调整至04:30
- 修正了部分土地资源错误的情况
- 修正了部分文本信息错误的情况
代码方面
---
- 修正部分事件连接机制
- 修正网络请求端口
## 待办事宜 `Todo` 列表
- [x] 完善我的农场图片,例如左上角显示用户数据
- [ ] 完善升级数据、作物数据、作物图片
- [x] 签到功能
- [x] 在线更新作物信息
- [ ] 添加渔场功能
- [ ] 增加活动、交易行功能
- [ ] 增加交易行总行功能
- [ ] 添加其他游戏种子素材
- [ ] 想不到了,想到再说
---
## 关于
本人毫无任何Python经验,也从未正式的、系统的、完整的去学习Python。如有看到写的不对的地方,欢迎指出,也欢迎任何人一起来开发、完善农场。
素材来均源于互联网,侵权请联系我删除
---
## 致谢
最后感谢以下框架/作者的提供的技术支持(排名不分先后):
- [QQ农场](https://qqnc.qq.com/) * 绝大多数的素材来源 *
- [Nonebot2](https://github.com/nonebot/nonebot2) *✨ 跨平台 Python 异步机器人框架 ✨*
- [zhenxun_bot](https://github.com/zhenxun-org/zhenxun_bot) *最爱真寻的一集*
- [HibiKier](https://github.com/HibiKier) *阿咪为什么是神*
- [ATTomato](https://github.com/ATTomatoo) *流泪偷码头.jpg*
## 许可证
`真寻农场(zhenxun_plugin_farm)`将采用的是`GPLv3`许可证进行开源
## 上游仓库
- [Client](https://github.com/Shu-Ying/main_plugin_farm)