astrbot_plugin_strinova 是一个面向 AstrBot 的《卡拉彼丘 / Strinova》公开资料查询插件。MVP 提供 Wiki 搜索、词条/角色/武器/地图查询、随机角色、数据源状态和管理员手动刷新。
本插件是非官方社区项目,与《卡拉彼丘》及 Strinova 官方无隶属或合作关系。
- 从卡拉彼丘 BWIKI 搜索和读取公开词条;
- 提取页面简介、少量信息框字段、修订 ID、更新时间和原文链接;
- 从 Wiki 实际嵌入
模板:超弦体的页面构建随机角色索引; - 可选试验性英文 Strinova Wiki,默认关闭且不保证当前网络可用;
- 使用 AstrBot 插件数据目录中的原子 JSON 缓存,并在主源临时失败时回退到未严重过期的缓存;
- 默认使用 AstrBot
html_render()生成分类专用资料卡:角色卡展示立绘、档案、技能、觉醒和时装,武器卡展示参数与距离伤害,地图卡展示地形、模式和实景,机制词条按规则分节;渲染失败时自动回退完整文字; - 可选在资料卡或文字之后追加页面主图,默认关闭,避免重复发送头像或地图图片。
本版不提供玩家战绩、排位、账号绑定、登录、赛事、公告聚合、客户端抓包或资源解包,也不使用大语言模型生成游戏事实。
- 插件版本
0.1.2; - AstrBot
>=4.16,<5;开发时已按 AstrBot4.26.7、源码提交1a038533125ad24a37fb1c1e5c7deae782af5c87核对 API; - Python
>=3.12; - 网络可访问已启用 Wiki 的 HTTPS API。
在 AstrBot WebUI 的插件管理页从插件市场安装,或上传包含本仓库文件的 ZIP。手动部署时,将目录以 astrbot_plugin_strinova 为名放入 AstrBot 插件目录,再在 WebUI 重载插件。
项目仓库:https://github.com/starhui-dev/astrbot_plugin_strinova
运行时依赖由 requirements.txt 声明:
beautifulsoup4>=4.12,<5
httpx>=0.28,<1
Pillow>=10,<13
| 命令 | 作用 |
|---|---|
/卡丘 |
显示 AstrBot 生成的指令组帮助树 |
/卡丘 帮助 |
显示完整命令说明和示例 |
/卡丘 搜索 <关键词> |
返回最多 3~5 个相关词条 |
/卡丘 词条 <名称> |
查询任意公开词条 |
/卡丘 角色 <名称> |
优先匹配角色词条 |
/卡丘 武器 <名称> |
优先匹配武器词条 |
/卡丘 地图 <名称> |
优先匹配地图词条 |
/卡丘 随机角色 |
从已确认的 Wiki 角色索引随机查询一名角色 |
/卡丘 状态 |
显示启用数据源状态、缓存条目和最近同步时间 |
/卡丘 更新 |
管理员刷新角色索引并清理过期缓存 |
主指令别名为 /strinova。管理员权限由 AstrBot 官方 PermissionType.ADMIN 过滤器判断,插件不维护管理员名单。
示例:
/卡丘 搜索 香奈美
/卡丘 角色 Kanami
/卡丘 武器 谢幕曲
/卡丘 词条 弦化
/卡丘 地图 88区
角色、武器和地图查询会优先使用已核验的 Wiki 页面分类。若精确词条明确属于其他类型,插件会提示正确的分类命令;分类缺失时仍保留通用词条降级行为。
AstrBot 会根据 _conf_schema.json 在 WebUI 提供中文配置界面。配置更新后按 AstrBot 的插件配置机制重载生效。
| 配置项 | 默认值 | 说明 |
|---|---|---|
primary_source |
bwiki |
首选源;只能选择内置源 |
enable_bwiki_source |
true |
是否访问卡拉彼丘 BWIKI |
enable_backup_source |
false |
是否试验性访问英文 Strinova Wiki |
request_timeout |
12.0 |
总超时,代码限制为 3~30 秒 |
request_retries |
2 |
可重试失败的重试次数,限制为 0~3 |
search_cache_ttl |
1800 |
搜索缓存秒数 |
page_cache_ttl |
43200 |
页面缓存秒数 |
index_cache_ttl |
86400 |
角色、武器和地图分类索引缓存秒数 |
max_search_results |
5 |
搜索结果数量,限制为 3~5 |
max_summary_length |
650 |
摘要长度,限制为 200~1200 |
send_page_image |
false |
在资料卡或文字结果后额外发送远程主图 URL |
render_card |
true |
优先生成卡拉彼丘风格资料卡;失败时回退完整文字 |
非法数值会被限制到安全范围并记录警告。配置不能指定任意域名,也不需要 API Key。
默认主源是卡拉彼丘 BWIKI,使用其公开 MediaWiki API。插件结果始终保留来源名、来源 URL、页面标题、抓取时间,并在可获得时保留修订 ID 和页面更新时间。角色、主武器、副武器和地图候选分别使用已验证的 Wiki 分类成员索引辅助排序。
BWIKI 当前未提供 pageimages 查询模块;插件从页面信息框和对应资料章节选择主图、立绘、时装、地形图及实景。图片仅从内置 HTTPS 白名单下载,单图限制 3 MiB、2000 万像素,校验 MIME 后压缩为临时 WebP 数据交给渲染器,不把第三方图片写入磁盘。图片失败时使用无图布局;卡片整体渲染失败或超过 40 秒时回退完整文字。
Strinova Wiki 此前可访问时确认 MediaWiki API 位于 https://strinova.org/w/api.php,页面曾声明采用 CC BY-SA 4.0。2026-07-21 从当前部署环境访问正确 API、旧根路径和 robots.txt 均被 Cloudflare 以 HTTP 403(error 1005)拒绝,因此当前无法重新核验授权、robots 或内容维护状态。该源只保留为实验性备用接口,默认不构造、不访问,也不保证启用后可用。
BWIKI 页面授权和再分发范围未发现足够清晰的统一说明。本插件只按需查询、展示短摘要与远程链接,不批量镜像 Wiki,也不将第三方文字、图片或音频纳入仓库或插件许可证。数据准确性、可用性和授权政策均可能变化。
官网仅检查到网页应用请求和签名相关客户端代码,未确认无需鉴权、稳定且适合插件使用的公开公告 JSON API,因此 MVP 不实现公告查询。
缓存文件位于 AstrBot 官方数据目录:
data/plugin_data/astrbot_plugin_strinova/cache.json
搜索默认缓存 30 分钟、页面 12 小时、角色及资料分类索引 24 小时、失败结果 2 分钟、健康检查 5 分钟。页面过期后先查询修订 ID;修订未变化时刷新缓存有效期并复用已解析内容,变化后才重新获取正文。页面缓存键包含显式解析版本、摘要长度和图片模式;解析行为变更时维护者会递增版本,相关配置变化也会使用新缓存。
写入采用同目录临时文件、fsync 和原子替换,磁盘成功后才提交内存状态;损坏时记录警告并自动重建。普通查询遇到缓存写入失败时仍返回实时结果,管理员更新则明确提示失败。页面和分类索引最长允许回退到过期 7 天内的缓存,搜索最长 1 天。手动更新有异步锁,查询也有锁避免缓存击穿。
插件不持久下载 Wiki 图片。为避免重复请求,同一进程内最多临时保留 32 张、合计 16 MiB 的已校验图片,30 分钟后过期,插件卸载时清空;运行时缓存和发布包均不含第三方图片。仓库内的 assets/card_texture_strinova.webp 是不含角色、Logo 或官方素材的原创背景,以纸片平面向三维竞技场折叠的场景表现“弦化”主题,只用于卡片背景。
为什么查不到某个名称? 先使用 /卡丘 搜索 查看 Wiki 的真实标题。角色中英文别名来自 BWIKI 分类:超弦体 页面及各角色信息框的 英文名 字段,每条记录都保留来源和核验日期;不会凭记忆补全。
为什么只返回候选列表? 插件会用角色、武器和地图分类索引辅助排序;多个同类结果仍然接近时不会擅自猜测,请使用候选项的完整标题再次查询。
为什么提示词条类型不匹配? BWIKI 已确认使用“超弦体”“主武器/副武器”和“地图”分类。精确词条明确属于其他类型时,请改用提示中的分类命令或 /卡丘 词条。
为什么只显示文字,没有资料卡? 资料卡默认开启,但依赖 AstrBot 的 html_render() 服务。渲染服务不可用、超过 40 秒或返回异常时,插件会自动发送完整文字;查询本身不受影响。send_page_image 只是额外发送独立主图,默认关闭。
为什么英文备用源默认关闭? 当前部署环境会收到 Cloudflare 403,且无法重新核验授权和 robots。只有在部署者自行确认可访问性与最新政策后才应启用;/卡丘 状态 会显示实际错误摘要。
测试完全使用最小化、脱敏 fixture 和 httpx.MockTransport,不长期依赖真实站点:
uv run --with pytest --with pytest-asyncio --with pyyaml --with ruff \
--with-requirements requirements.txt pytest -q
uv run --with ruff ruff check .
uv run --with ruff ruff format --check .
python -m compileall -q .真实数据源只用于发布前低频人工验收。建议在 AstrBot WebUI 热重载后测试 /卡丘 帮助、/卡丘 搜索 香奈美、/卡丘 角色 香奈美、/卡丘 状态 和管理员权限。
- MediaWiki 页面模板可能变化,解析器会降级到正文或 Wiki 源码,但字段完整度不保证;
- 角色索引依赖 BWIKI 当前使用的
模板:超弦体;模板更名后需调整; - 已验证 OneBot 私聊的文字、引用回复和原文链接;资料卡仍需在更多平台和不同客户端上检查显示效果;
- 数据源可能限流;插件只做有限重试并依赖缓存,不绕过风控;
- 英文备用源当前受 Cloudflare 访问限制,仅保留实验性接口,不作为可用性承诺;
- 当前未提供 Logo,避免使用受版权保护的角色图片。发布维护者可后续添加原创、权利清晰的
logo.png。
武器和地图页面当前没有稳定的英文名或别名字段,因此不会从标题或常识推断别名。后续优先事项是继续验证不同平台上的资料卡显示,并按真实 Wiki 数据扩充可靠别名。
本插件按“现状”提供,不保证第三方数据完整、及时或准确。使用者和发布者应遵守数据源服务条款、robots 政策、署名要求及适用法律。
LICENSE 中的 MIT License 只覆盖本仓库自行编写的插件代码、模板和原创界面素材,不覆盖查询得到的 Wiki 文字、图片、音频、商标、游戏名称或其他第三方内容。第三方内容的权利归各自权利人所有。