漫展查询助手

漫展查询助手:Koishi 插件 anime-convention-lizard 使用指南

对接B站会员购数据,在聊天框中轻松查询全国漫展,支持订阅管理。
作者: 蜥蜴


背景

作为一个二次元爱好者,追漫展是每个季度必不可少的活动。以前要查漫展信息,流程通常是:

  1. 打开B站,进入会员购页面
  2. 手动输入城市名搜索
  3. 在搜索结果中一个个翻看活动详情
  4. 截图、转发到群里分享给朋友

操作繁琐不说,如果有多个常去的城市,每次都要重复搜索,体验非常糟糕。

特别是我在使用 Koishi 机器人框架 搭建自己的群聊机器人后,就想着能不能让机器人在群里直接查询漫展信息——于是就有了这款插件。


工具定位

anime-convention-lizard 是一款基于 Koishi 框架的漫展查询与订阅插件,核心功能是:

  • 聊天框内直接查询:无需打开网页,在群里输入指令即可
  • 地区订阅:订阅常去的城市,一键查看所有订阅地区的漫展
  • 多级行政区支持:省、市、区三级行政单位均可识别

快速开始

1. 查询漫展

最简单的用法,输入城市名即可:

1
漫展 查询 北京

插件会自动识别地区编码,并返回当前正在举办的漫展列表。

支持省、市、区三级,你可以这样输入:

1
2
3
漫展 查询 朝阳区
漫展 查询 南京
漫展 查询 广东省

查询到结果后,会显示一个带序号的列表:

1
2
3
4
5
找到以下漫展:
1. 北京动漫嘉年华
2. 2025北京国际动漫展
3. 北京二次元文化节
请输入序号查看详情,输入"0"取消。

输入序号就能查看详细活动信息,包括活动名称、时间、地点、售票链接、参与嘉宾等。

2. 订阅地区

如果你有常去的城市,可以把它加入订阅列表:

1
2
3
漫展 订阅 北京
漫展 订阅 上海
漫展 订阅 广州

3. 一键查询

订阅了多个地区后,只需一条指令就能查看所有订阅地区的漫展:

1
漫展 一键查询

插件会自动查询所有已订阅地区的漫展信息,合并展示。

4. 管理订阅

查看已订阅的地区:

1
漫展 订阅列表

输出示例:

1
2
3
4
你订阅的地区:
- 北京市
- 上海市
- 广州市

取消订阅(取消特定地区):

1
漫展 取消订阅 北京

取消所有订阅(交互式确认):

1
2
漫展 取消订阅
# 机器人会询问是否确认,输入"是"即可

安装与配置

安装

在 Koishi 项目中安装:

1
npm install koishi-plugin-anime-convention-lizard

或者通过 Koishi 控制台的插件市场搜索 “anime-convention-lizard” 安装。

配置参数

koishi.yml 或控制台配置插件时,支持以下参数:

参数 类型 默认值 说明
timeout number 15000 查询超时时长(单位毫秒)

示例配置:

1
2
3
plugins:
anime-convention-lizard:
timeout: 15000

timeout 参数控制每次查询后缓存的有效期。超时后用户未选择序号,缓存自动清除。


使用场景

场景一:群聊分享

社团群里聊到了周末去哪儿玩,你可以:

:漫展 查询 北京

机器人:找到以下漫展:

  1. 北京动漫嘉年华 - 本周六
  2. 二次元音乐节 - 下周末

:1

机器人:[活动详情图片+文字信息]

场景二:多城市漫展追踪

你同时关注北京、上海、广州三地的漫展,可以先订阅三个城市:

1
2
3
漫展 订阅 北京
漫展 订阅 上海
漫展 订阅 广州

然后每天早上用一条指令查看:

1
漫展 一键查询

场景三:私聊使用

不想在群里刷屏?可以在私聊中使用同样的指令。订阅数据会与群聊隔离,互不影响。


技术实现

技术栈

技术 用途
Koishi 机器人框架
B站会员购 API 漫展数据来源
TypeScript 开发语言

核心设计

地区编码系统

插件内置了中国所有行政区划(省市区三级)的名称到编码的映射表,覆盖全国 3000+ 个行政区。无论你输入”北京”还是”北京市”,插件都能正确匹配。

1
2
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 实际上也支持获取演出和本地生活数据,后续可能会扩展支持。


获取工具


🎉 关于如何搭建自己的 Koishi 机器人,后续我可能会写教程,敬请期待!