漫展查询助手
漫展查询助手:Koishi 插件 anime-convention-lizard 使用指南
对接B站会员购数据,在聊天框中轻松查询全国漫展,支持订阅管理。
作者: 蜥蜴
背景
作为一个二次元爱好者,追漫展是每个季度必不可少的活动。以前要查漫展信息,流程通常是:
- 打开B站,进入会员购页面
- 手动输入城市名搜索
- 在搜索结果中一个个翻看活动详情
- 截图、转发到群里分享给朋友
操作繁琐不说,如果有多个常去的城市,每次都要重复搜索,体验非常糟糕。
特别是我在使用 Koishi 机器人框架 搭建自己的群聊机器人后,就想着能不能让机器人在群里直接查询漫展信息——于是就有了这款插件。
工具定位
anime-convention-lizard 是一款基于 Koishi 框架的漫展查询与订阅插件,核心功能是:
- 聊天框内直接查询:无需打开网页,在群里输入指令即可
- 地区订阅:订阅常去的城市,一键查看所有订阅地区的漫展
- 多级行政区支持:省、市、区三级行政单位均可识别
快速开始
1. 查询漫展
最简单的用法,输入城市名即可:
1 | 漫展 查询 北京 |
插件会自动识别地区编码,并返回当前正在举办的漫展列表。
支持省、市、区三级,你可以这样输入:
1 | 漫展 查询 朝阳区 |
查询到结果后,会显示一个带序号的列表:
1 | 找到以下漫展: |
输入序号就能查看详细活动信息,包括活动名称、时间、地点、售票链接、参与嘉宾等。
2. 订阅地区
如果你有常去的城市,可以把它加入订阅列表:
1 | 漫展 订阅 北京 |
3. 一键查询
订阅了多个地区后,只需一条指令就能查看所有订阅地区的漫展:
1 | 漫展 一键查询 |
插件会自动查询所有已订阅地区的漫展信息,合并展示。
4. 管理订阅
查看已订阅的地区:
1 | 漫展 订阅列表 |
输出示例:
1 | 你订阅的地区: |
取消订阅(取消特定地区):
1 | 漫展 取消订阅 北京 |
取消所有订阅(交互式确认):
1 | 漫展 取消订阅 |
安装与配置
安装
在 Koishi 项目中安装:
1 | npm install koishi-plugin-anime-convention-lizard |
或者通过 Koishi 控制台的插件市场搜索 “anime-convention-lizard” 安装。
配置参数
在 koishi.yml 或控制台配置插件时,支持以下参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeout |
number | 15000 | 查询超时时长(单位毫秒) |
示例配置:
1 | plugins: |
timeout 参数控制每次查询后缓存的有效期。超时后用户未选择序号,缓存自动清除。
使用场景
场景一:群聊分享
社团群里聊到了周末去哪儿玩,你可以:
你:漫展 查询 北京
机器人:找到以下漫展:
- 北京动漫嘉年华 - 本周六
- 二次元音乐节 - 下周末
…你:1
机器人:[活动详情图片+文字信息]
场景二:多城市漫展追踪
你同时关注北京、上海、广州三地的漫展,可以先订阅三个城市:
1
2
3 漫展 订阅 北京
漫展 订阅 上海
漫展 订阅 广州然后每天早上用一条指令查看:
1 漫展 一键查询
场景三:私聊使用
不想在群里刷屏?可以在私聊中使用同样的指令。订阅数据会与群聊隔离,互不影响。
技术实现
技术栈
| 技术 | 用途 |
|---|---|
| Koishi | 机器人框架 |
| B站会员购 API | 漫展数据来源 |
| TypeScript | 开发语言 |
核心设计
地区编码系统
插件内置了中国所有行政区划(省市区三级)的名称到编码的映射表,覆盖全国 3000+ 个行政区。无论你输入”北京”还是”北京市”,插件都能正确匹配。
1 | const suffixes = ['', '省', '市', '区', '县'] |
会话缓存
每次查询的结果会缓存 15 秒(可配置),方便用户选择查看详情。超时后自动清除,防止内存泄漏。
多频道隔离
订阅数据按 用户ID + 频道ID 组合存储,不同群组的订阅互不影响。私聊时使用 private:${userId} 作为频道标识。
注意事项
1. API 限制
B站会员购 API 并非官方开放接口,可能遇到:
- 请求频率过高时被限流
- API 接口变动导致数据获取失败
建议不要过于频繁地查询同一地区。
2. 地区匹配
虽然插件内置了完整的行政区划数据,但仍有少数特殊情况:
- 部分地区名称与标准名称不一致(如”萧山区”不会匹配”萧山”)
- 特别行政区(香港、澳门)的区级单位处理略有不同
如果遇到”未识别的地区”提示,尝试加上省/市/区后缀重新输入。
3. 缓存超时
每次查询后,缓存的有效期由 timeout 配置决定。如果超时前用户没有选择序号,需要重新查询。建议默认为 15 秒,足够用户浏览并做出选择。
4. 订阅数量
目前没有限制订阅数量,但订阅过多地区会导致”一键查询”时请求变慢。建议按需订阅,不要超过 10 个城市。
常见问题
Q: 查询时提示”未识别的地区”?
A: 尝试加上”省””市””区”后缀。例如输入”朝阳区”而不是”朝阳”。如果仍然识别不了,可能是该地名在标准行政区划中没有收录。
Q: 为什么有时候查询不到漫展?
A: 有几个可能的原因:
- 该地区确实没有正在举办的漫展
- B站 API 暂时限流
- 漫展数据还未同步到会员购平台
Q: 支持查询”演出”或”本地生活”类活动吗?
A: 目前仅支持”展览”类别。API 实际上也支持获取演出和本地生活数据,后续可能会扩展支持。
获取工具
- npm 包:
koishi-plugin-anime-convention-lizard - GitHub 仓库:lizard0126/anime-convention-lizard
- 反馈建议:GitHub Issues
- 支持作者:请我喝可乐
🎉 关于如何搭建自己的 Koishi 机器人,后续我可能会写教程,敬请期待!