Metadata-Version: 2.4
Name: nonebot-plugin-miao-genshin
Version: 0.1.16
Summary: 原神/星铁抽卡分析与面板、原神/星铁/绝区零模拟抽卡与角色攻略图、原神图鉴（移植自 miao-plugin）
License: MIT
License-File: LICENSE
Keywords: nonebot,nonebot2,genshin,starrail,gacha,encyclopedia,plugin
Author: TonyLiangP2010405
Requires-Python: >=3.9,<4.0
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Communications :: Chat
Provides-Extra: quickjs
Requires-Dist: httpx (>=0.27.0)
Requires-Dist: nonebot-adapter-onebot (>=2.4.0)
Requires-Dist: nonebot-plugin-apscheduler (>=0.5.0,<0.6.0)
Requires-Dist: nonebot-plugin-localstore (>=0.7.0)
Requires-Dist: nonebot2 (>=2.2.0)
Requires-Dist: numpy (>=2.0.2) ; python_version >= "3.9" and python_version < "3.13"
Requires-Dist: numpy (>=2.1) ; python_version >= "3.13"
Requires-Dist: pillow (>=10.0.0)
Requires-Dist: pydantic (>=2.0.0)
Requires-Dist: pythonmonkey (>=1.3.2)
Requires-Dist: pyyaml (>=6.0)
Requires-Dist: quickjs (>=1.19) ; extra == "quickjs"
Requires-Dist: skia-python (>=87.5)
Project-URL: Homepage, https://github.com/TonyLiangP2010405/nonebot-plugin-miao
Project-URL: Repository, https://github.com/TonyLiangP2010405/nonebot-plugin-miao
Description-Content-Type: text/markdown

# nonebot-plugin-miao

原神 / 崩坏：星穹铁道的 NoneBot2 抽卡记录与角色面板插件，并提供原神、星铁、绝区零的模拟抽卡与角色攻略图。移植自 [miao-plugin](https://github.com/yoimiya-kokomi/miao-plugin)（MIT），支持 OneBot V11。

## 功能

- Authkey 抽卡记录更新、分析、按版本统计、UIGF / SRGF 导入导出
- 原神、星铁、绝区零模拟单抽/十连、多角色池与装备池选择、保底、原神武器定轨和每日次数限制
- 三游戏国服卡池从官方公开接口自动同步，按开放时间切换，无需绑定 UID 或 Cookie
- Enka（原神）、Mihomo（星铁）、米游社 Cookie 面板更新
- 属性计算、圣遗物 / 遗器评分、面板列表 / 详情 / 伤害图片
- 原神角色与武器图鉴、名称索引（无需绑定 UID）
- 原神、星铁与绝区零角色攻略图（分游戏来源、本地缓存、强制刷新与默认来源设置）

## 安装

```bash
nb plugin install nonebot-plugin-miao-genshin
pip install nonebot-plugin-miao-genshin
poetry add nonebot-plugin-miao-genshin
```

> 注意：PyPI 上的 `nonebot-plugin-miao` 是他人发布的无关项目，请勿安装；本插件的 PyPI 包名为 `nonebot-plugin-miao-genshin`（导入模块名仍为 `nonebot_plugin_miao`）。

## 配置

均有默认值；在 NoneBot `.env` 中按需覆盖。

| 配置项 | 默认值 | 说明 |
| --- | --- | --- |
| `MIAO_RES_MIRROR` | jsDelivr miao-plugin resources | 角色图片与静态资源镜像 |
| `MIAO_PROFILE_INTERVAL` | `3` | 面板更新冷却（分钟） |
| `MIAO_MYS_COOKIE` | 空 | 全局米游社 Cookie（可选） |
| `MIAO_GACHA_DAILY_LIMIT` | `1` | 每款游戏每日模拟额度，1 代表 10 抽；同游戏所有卡池合计，SUPERUSER 不限 |
| `MIAO_GACHA_POOL_INTERVAL` | `60` | 官方模拟卡池同步间隔（分钟，至少 1）；查看/抽取时按需检查，后台每 5 分钟检查是否到期 |
| `MIAO_RES_AUTO_UPDATE` | `True` | 每日自动更新面板资源（凌晨 4:20，需 nonebot-plugin-apscheduler） |
| `MIAO_STRATEGY_DEFAULT_SOURCE` | `1` | 原神角色攻略图默认来源（1-7，可被设置指令覆盖） |
| `MIAO_SR_STRATEGY_DEFAULT_SOURCE` | `1` | 星铁角色攻略图默认来源（1-3，可被设置指令覆盖） |
| `MIAO_ZZZ_STRATEGY_DEFAULT_SOURCE` | `1` | 绝区零角色攻略图默认来源（1-4，可被设置指令覆盖） |

## 指令

| 指令 | 范围 | 说明 |
| --- | --- | --- |
| `/绑定uid <UID>` / `/星铁绑定uid <UID>` | 群聊、私聊 | 绑定游戏 UID |
| `/绑定cookie <cookie>` | 仅私聊 | 绑定米游社 Cookie |
| `/更新抽卡记录` / `/抽卡分析` / `/全部池统计` | 群聊、私聊 | 抽卡记录与统计；星铁命令前加“星铁” |
| `十连` / `十连2` / `武器十连` / `单抽` | 群聊、私聊 | 原神模拟抽卡，可选当期两个角色池和武器池 |
| `星铁十连[编号]` / `星铁光锥十连[编号]` | 群聊、私聊 | 星铁角色池/光锥池，编号省略时为第 1 池 |
| `绝区零十连[编号]` / `绝区零音擎十连[编号]` | 群聊、私聊 | 绝区零角色池/音擎池，包含并行复刻池 |
| `/卡池列表` / `/星铁卡池列表` / `/绝区零卡池列表` | 群聊、私聊 | 显示当前 UP、截止时间和每个卡池的抽取指令 |
| `/更新卡池` / `/更新星铁卡池` / `/更新绝区零卡池` | 群聊、私聊 | 立即重新同步对应游戏官方卡池 |
| `/定轨` / `/定轨1` / `/定轨2` / `/定轨0` | 群聊、私聊 | 原神武器池定轨：循环选择 / 选第 1 把 / 选第 2 把 / 取消 |
| `/导入记录` / `/导出记录` | 群聊、私聊 | UIGF / SRGF 记录交换 |
| `/更新面板` / `/米游社更新面板` | 群聊、私聊 | 更新角色面板 |
| `/面板列表` / `/角色名面板` / `/角色名伤害2` | 群聊、私聊 | 查看面板与指定伤害条目 |
| `/角色图鉴` / `/武器图鉴` | 群聊、私聊 | 查看原神角色或武器名称索引 |
| `/芙宁娜图鉴` / `/雾切图鉴` | 群聊、私聊 | 查看角色或武器的详细图鉴；也支持 `#` 前缀 |
| `/心海攻略[1-7]` | 群聊、私聊 | 查看原神角色攻略图；末尾数字选择攻略来源 |
| `/更新心海攻略[1-7]` | 群聊、私聊 | 忽略本地缓存并重新获取攻略图 |
| `/星铁流萤攻略[1-3]` | 群聊、私聊 | 查看星铁角色攻略图，支持现有星铁角色别名 |
| `/绝区零星见雅攻略[1-4]` | 群聊、私聊 | 查看绝区零角色攻略图，请使用角色正式名称 |
| `/攻略帮助` / `/星铁攻略帮助` / `/绝区零攻略帮助` | 群聊、私聊 | 查看全部或指定游戏的攻略来源 |
| `/设置默认攻略2` / `/设置星铁默认攻略2` / `/设置绝区零默认攻略2` | 群聊、私聊 | 分游戏持久化设置默认来源 |
| `/圣遗物列表` / `/面板帮助` / `/抽卡帮助` | 群聊、私聊 | 列表与帮助 |

除模拟抽卡外，所有功能均要求以 `/` 开头；图鉴和攻略指令额外兼容 Yunzai 常用的 `#` 前缀。发送 Authkey 抽卡链接时，也需要在完整链接前添加 `/`。

### 三游戏模拟抽卡

- 默认不带游戏名为原神。`十连`、`十抽`、`10连`、`10抽` 均可；换成 `单抽` 就只扣除 1 抽并推进 1 次保底。模拟指令兼容 `/`、`#` 前缀。
- 角色池与装备池分别编号。例如 `星铁十连2` 抽第二个角色池，`星铁光锥十连2` 抽第二个光锥池；`绝区零音擎十连2` 抽第二个音擎池。以当前卡池列表为准，不存在的编号会提示，不会消耗次数。
- 常驻池：`常驻十连`、`星铁常驻十连`、`绝区零常驻十连`。星铁联动角色/光锥池也会列出，并与普通活动池分别保存保底。
- 三款游戏分别保存保底和每日额度。同游戏普通角色活动池之间共享保底，装备池之间共享另一份保底，常驻池独立；群聊和私聊沿用各自的用户存档。每日北京时间 04:00 重置额度，保底不清零。
- 原神旧存档保留累计抽数和大小保底。武器命定值上限为 1；换期清空定轨及命定值，保留武器大小保底。旧存档无法确认定轨所属期次时，也会清空定轨及命定值。

卡池使用官方国服公开数据：[原神](https://operation-webstatic.mihoyo.com/gacha_info/hk4e/cn_gf01/gacha/list.json)、[星铁](https://operation-webstatic.mihoyo.com/gacha_info/hkrpg/prod_gf_cn/gacha/list.json)、[绝区零](https://operation-webstatic.mihoyo.com/gacha_info/nap/prod_gf_cn/gacha/list.json)。每次同步读取全部受支持卡池的中文详情，更新 UP、陪跑四星、常驻物品和基础概率；新角色不依赖插件内置角色表。结果优先使用官方提供的图片，缺图时显示名字占位卡。

首次使用联网获取并持久化缓存，此后按配置自动同步。后台每 5 分钟检查；查看或抽取时也检查同步期限及开池/结束时间，所以机器人重启后仍可自动恢复。自动同步独立于 `MIAO_RES_AUTO_UPDATE`。接口故障只使用仍有效的旧缓存并提示，过期或尚未开放的池不会参与抽取，失败后至少间隔 1 分钟重试。

模拟器实现基础概率、90 抽角色/常驻保底、80 抽装备保底、四星保底、大小保底及原神武器定轨；软保底使用模拟递增曲线。目前不模拟原神捕获明光、常驻新手优惠/自选奖励、星铁「星缘相邀」或绝区零「定制调频」自选名单，也不包含集录、新手专池和邦布池。上述自选名单按未自定义时的官方默认物品表处理。

攻略来源编号按游戏分别计算：

- 原神：1 西风驿站、2 原神观测枢、3 派蒙喵喵屋、4 OH是姜姜呀、5 曉K、6 坤易、7 婧枫赛赛。
- 星铁：1 列车广播、2 牧牧Muu、3 丶ATRI丶。
- 绝区零：1 绳么东西BROADCAST、2 烟雨如诗、3 丶ATRI丶、4 小橙子阿。

攻略数据来自米游社公开合集，新域名不可用时会自动尝试旧域名。星铁和绝区零会继续进入合集链接的具体攻略帖，排除文章封面后返回正文攻略图；接口不可用或对应来源未收录角色时，插件会返回中文提示。绝区零目前没有随包角色元数据，指令直接按正式角色名匹配，因此新角色无需等待插件更新，但不保证识别简称。

## 移植对照

| miao-plugin 功能 | 本插件位置 | 状态 |
| --- | --- | --- |
| 抽卡记录、分析、模拟 | `gacha/`、`datasource/gacha_log.py` | 已实现 |
| Enka / Mihomo / 米游社面板 | `datasource/` | 已实现 |
| 属性、评分与伤害规则 | `core/`、`dmg/` | 已实现 |
| 面板和抽卡卡片 | `render/` | 已实现 |
| 原神角色与武器图鉴 | `commands/encyclopedia.py`、`render/encyclopedia.py` | 已实现 |
| 原神、星铁、绝区零角色攻略图 | `commands/strategy.py`、`datasource/strategy.py` | 已实现（分游戏来源、缓存、刷新、默认来源） |

未移植：群内排名、练度统计、面板图上传、私有 API、备选面板源与 Yunzai 按钮交互。

## 开发

```bash
poetry install
poetry run python -m compileall nonebot_plugin_miao
poetry run pytest -v
poetry run ruff check .
```

## 致谢与许可

- [miao-plugin](https://github.com/yoimiya-kokomi/miao-plugin)（MIT）
- [Yunzai-genshin](https://github.com/TimeRainStarSky/Yunzai-genshin)

本项目使用 [MIT License](LICENSE)。

