# Bangumi 搜索插件使用指南 [![repo](https://img.shields.io/badge/repo-v1.1.1-blue.svg)](https://github.com/united-pooh/astrbot_plugin_bangumi) [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE-2.0) [![AstrBot](https://img.shields.io/badge/AstrBot-%3E%3D4.0.0-orange.svg)](https://github.com/Soulter/AstrBot) [![Python](https://img.shields.io/badge/python-3.12%2B-blue.svg)](https://www.python.org/) **和群友一起追番**
> **astrbot-plugin-bangumi** 是一个基于 AstrBot 框架的 Bangumi (番组计划) 信息查询与追番插件。它通过对接 Bangumi API,为机器人用户提供精美的图文条目详情、实时放送时刻表,并具备自动化的订阅更新监控系统。无论是想快速查询评分,还是在群内实时接收番剧更新通知,它都能为您提供优雅的交互体验。 > [!NOTE] > 本项目在 [astrbot_plugin_bangumi](https://github.com/Amatsutsumi/astrbot_plugin_bangumi) 的基础上进行二次开发 ## 📌 核心命令 ### 1. 基础搜索(图文卡片) | 命令 | 功能 | 参数 | 示例 | |:-----|:-----|:-----|:-----| | `/bgm` | 全类别搜索 | `<关键词\|ID> [top_k]` | `/bgm 进击的巨人 3` | | `/bgm番剧` | 仅搜索 TV 动画 | `<关键词\|ID> [top_k]` | `/bgm番剧 命运石之门` | | `/bgm剧场版` | 仅搜索剧场版动画 | `<关键词\|ID> [top_k]` | `/bgm剧场版 凉宫春日的消失` | | `/bgm漫画` | 仅搜索漫画条目 | `<关键词\|ID> [top_k]` | `/bgm漫画 迷宫饭` | > `top_k`(可选):返回结果数量,默认为 `1`。 ### 2. 放送与订阅 | 命令 | 功能 | 参数 | 示例 | |:-----|:-----|:-----|:-----| | `/today` | 获取今日番剧放送表 | 无 | `/today` | | `/追番` | 订阅番剧,更新时自动通知 | `<关键词\|ID>` | `/追番 进击的巨人` | | `/弃坑` | 取消订阅番剧 | `<关键词\|ID>` | `/弃坑 进击的巨人` | **功能亮点**: - **精美卡片**:自动生成包含封面、评分、排名、简介及剧集进度的图文卡片。 - **每日放送**:渲染精美的每日放送时刻表。 - **自动追番**:订阅后自动监控集数更新并实时推送通知。 ## 🛠️ 配置参数 在 AstrBot 的管理面板或配置文件中设置: | 参数名 | 类型 | 默认值 | 说明 | |:-------|:----:|:------:|:-----| | `access_token` | string | 无 | Bangumi API 访问令牌(部分接口需授权)[¹](#access-token-获取) | | `user_agent` | string | 无 | 请求头 User-Agent 标识,为空时使用插件默认值 | | `max_fuzzy_results` | int | `5` | 模糊搜索最大返回数量(范围:1–200) | | `proxy_http` | string | 无 | HTTP 代理地址(仅 IP,例如 `192.168.0.1`) | | `port` | string | 无 | HTTP 代理端口(例如 `7890`) | | `max_retries` | int | `3` | 网络错误最大重试次数(范围:1–10) | | `render_server_url` | string | `https://api.unitedpooh.top/rpc` | 远程渲染图片的 RPC 服务器地址 | ### Access Token 获取 虽然不强制,但建议配置 Access Token 以避免 API 限流。 1. 注册/登录 [Bangumi](https://bgm.tv/) 2. 访问 [个人令牌页面](https://next.bgm.tv/demo/access-token/create) 创建新令牌 3. 将生成的 Token 填入插件配置的 `access_token` 字段 ## 📦 环境依赖 插件首次运行时会自动检查并安装以下依赖: - **Playwright 浏览器内核**:用于渲染卡片图片。 如果遇到环境问题,可尝试手动安装: ```bash pip install -r requirements.txt playwright install chromium ``` ## ✅ 强类型与本地检查 本项目已切换为 Python 3.12 风格类型写法,并在 CI 中启用阻断式质量门禁(`ruff + mypy + pytest`)。 ### 本地执行命令 ```bash ruff check . ruff format --check . mypy src main.py PYTHONPATH=. pytest tests/test_search_service.py tests/test_subscription_service.py ``` ### 强类型编码规则 1. 禁止 `Optional[T]`,统一使用 `T | None`。 2. 禁止 `typing.List/Dict/Tuple/Set`,统一使用 `list/dict/tuple/set`。 3. 禁止新增 `Any`;优先使用 `TypedDict`、Pydantic 模型或明确类型别名。 4. 公共方法必须显式标注参数和返回类型。 5. 业务接口层禁止使用 `dict[str, Any]` 作为输入/输出类型。 6. 需要可空时必须在类型中明确体现,禁止隐式可空。