koishi-plugin-asmrone
v1.7.4
Published
利用 asmr.one API,在聊天平台中搜索、获取详情并收听音声作品。
Maintainers
Readme
koishi-plugin-asmrone
利用 asmr.one 的 API,提供在聊天平台中搜索、查看并收听音声作品的功能。
注意:部分内容可能不适合在所有场合使用 (NSFW),请在合适的范围内使用本插件。
功能
- 搜索功能: 支持关键词、标签、声优、社团等多种筛选条件,并可按发售日、评分、销量等多种方式排序。
- 结果展示: 支持两种模式展示搜索结果和作品详情:
- 图片菜单: (需
puppeteer服务) 将内容渲染为图片菜单发送,直观且能有效规避平台风控。 - 文本消息: 以纯文本或合并转发的形式发送。
- 图片菜单: (需
- 收听方式: 支持多种方式发送音轨:
card: 音乐卡片 (仅部分平台支持,如 OneBot)。file: 逐个发送原始音频文件。zip: 将多个音轨打包为 ZIP 压缩包发送,支持加密和自定义压缩级别。player: 发送一个在线播放器链接,支持播放列表。link: 发送音轨的直接下载链接。voice: 以语音形式发送 (仅部分平台支持,需配置 FFmpeg)。
- 交互操作:
- 列表指令后可回复序号选择,[F]下一页,[P]上一页。
- 详情页可回复[B]返回列表。
- 所有交互均可回复[N/取消]随时中断。
- 权限管理: 支持白名单和黑名单模式,可精细控制插件可用性。
- 可自定义: 支持自定义图片菜单外观、文件命名规则、缓存策略等。
安装
可从 Koishi 插件市场搜索 asmrone 安装。
指令说明
搜音声 <关键词> [筛选条件] [排序方式] [页码]
根据关键词搜索并获取音声列表。查询语句可包含关键词、筛选条件、排序方式和页码的组合。
- 示例:
搜音声 山田 tag:舔耳 order:发售日 2
高级筛选与排序
通过在查询语句中添加 key:value 格式的参数来进行高级筛选和排序。
| 筛选器 | 说明 | 示例 |
| :------- | :-------------------- | :------------------ |
| tag | 标签 | tag:舔耳 |
| va | 声优 | va:藤田茜 |
| circle | 社团 | circle:C-Lab. |
| rate | 评分 (大于等于) | rate:4.5 |
| sell | 销量 (大于等于) | sell:1000 |
| price | 价格 (日元, 大于等于) | price:1000 |
| age | 年龄分级 | age:general age:r15 age:adult |
| lang | 语言 | lang:JPN lang:CHI_HANS |
| order | 排序方式 | order:评分 |
| -key | 排除条件 | -tag:男性向け |
可用排序值 (用于 order:值,默认按销量排序)
发售日, 最新收录, 发售日-正序, 销量, 价格-正序, 价格, 评分, 评价数, RJ号, RJ号-正序, 随机
热门音声 [页码]
获取当前热门作品列表 (排序方式固定,不支持自定义)。
页码(可选): 用于翻页。- 示例:
热门音声 3
听音声 <RJ号> [音轨序号] [发送方式]
获取作品信息并发送音轨。
RJ号: 必需。支持RJ00123456或123456等格式,支持自动补全。音轨序号(可选): 一个或多个数字序号或范围,用空格分隔 (如1 3 5-8)。- 若提供,则直接获取指定音轨。
- 若省略,则返回作品详情并等待交互选择。
发送方式(可选):card|file|zip|link|player|voice。- 指定本次发送的格式,若省略则使用配置中的默认方式。
使用示例
获取详情并等待交互:
听音声 RJ00123456机器人将回复作品详情,等待输入音轨序号。
直接获取指定音轨 (含范围,指定zip模式):
听音声 RJ00123456 1 3 5-8 zip在交互中指定发送方式:
使用
听音声 RJ00123456后,可通过回复2 4-6 card来获取第 2、4、5、6 轨,并以音乐卡片收听。
配置项
基础设置
| 配置项 | 类型 | 默认值 | 说明 |
| :------------------- | :-------- | :------------------------------ | :--------------------------------------------- |
| apiBaseUrl | string | https://api.asmr-200.com/api | 音声数据 API 地址。 |
| defaultSendMode | string | player | 默认音轨发送方式。 |
| useImageMenu | boolean | true | 启用图片菜单 (需 puppeteer)。 |
| useForward | boolean | true | (文本模式) 启用合并转发发送长消息,减少刷屏。 |
| showSearchImage | boolean | false | (文本模式) 在搜索结果的文本消息中也显示封面图。|
| showLinks | boolean | false | 在详情中显示 asmr.one/DLsite 链接。 |
| pageSize | number | 10 | 每页结果数量 (1-40)。 |
| interactionTimeout | number | 60 | 交互操作超时时间 (秒)。 |
权限设置
| 配置项 | 类型 | 默认值 | 说明 |
| :---------- | :--------- | :------ | :----------------------------------------------------------- |
| accessMode| string | all | 访问权限模式: all (所有), whitelist (白名单), blacklist (黑名单)。 |
| whitelist | string[] | [] | 白名单列表 (群号/频道 ID),仅白名单模式生效。 |
| blacklist | string[] | [] | 黑名单列表 (群号/频道 ID),仅黑名单模式生效。 |
下载与发送设置
| 配置项 | 类型 | 默认值 | 说明 |
| :------------------------ | :------- | :------- | :----------------------------------------------------------- |
| downloadConcurrency | number | 3 | 同时下载文件的最大数量。 |
| downloadTimeout | number | 300 | 单个文件下载的超时时间 (秒)。 |
| maxRetries | number | 3 | API请求及文件下载失败时的最大重试次数。 |
| cardModeNonAudioAction | string | skip | Card模式下对非音频文件的操作: skip (跳过) 或 fallbackToFile (转为file模式发送)。 |
| voiceModeNonAudioAction | string | skip | Voice模式下对非音频文件的操作: skip (跳过) 或 fallbackToFile (转为file模式发送)。 |
| zipMode | string | single | 多文件压缩方式: single (合并为一包) 或 multiple (每轨一包)。 |
| zipCompressionLevel | number | 1 | ZIP 压缩级别 (0不压缩, 1最快, 9最高)。 |
| usePassword | boolean| false | 是否为生成的 ZIP 压缩包设置密码。 |
| password | string | - | 压缩包密码 (需先启用 usePassword)。 |
命名规则设置
| 配置项 | 类型 | 默认值 | 说明 |
| :----------------- | :-------- | :------ | :-------------------------- |
| prependRjCodeCard| boolean | false | Card 标题添加 RJ 号。 |
| prependRjCodeFile| boolean | true | File 文件名添加 RJ 号。 |
| prependRjCodeZip | boolean | true | Zip 包名/文件夹添加 RJ 号。 |
| prependRjCodeLink| boolean | true | Link 模式标题添加 RJ 号。 |
在线播放器设置
| 配置项 | 类型 | 默认值 | 说明 |
| :-------------- | :------- | :----------------------------------------------------- | :------------------------- |
| playerBaseUrl | string | https://yuzuharayuka.github.io/amsrone-audio-player/ | 在线播放器页面的基础 URL。 |
缓存设置
| 配置项 | 类型 | 默认值 | 说明 |
| :-------------------- | :-------- | :----- | :----------------------------------------------------------- |
| cache.enableCache | boolean | true | 启用音频文件缓存,避免重复下载。 |
| cache.cacheMaxAge | number | 1 | 音频缓存文件保留时间 (小时),0 表示永久。 |
| cache.enableRenderCache | boolean | true | 启用图片菜单的渲染缓存。 |
| cache.renderCacheMaxAge | number | 1 | 图片缓存保留时间 (小时),0 表示永久。 |
图片菜单与渲染
| 配置项 | 类型 | 默认值 | 说明 |
| :---------------------- | :-------- | :-------- | :----------------------------------------------------------- |
| imageRenderScale | number | 1 | 图片渲染质量 (缩放比例)。越高越清晰,但生成越慢,图片越大。 |
| enableAntiCensorship | boolean | true | 图片抗风控处理,会略微增加生成耗时。 |
| imageMenu | object | - | (折叠项) 用于自定义图片菜单的各种颜色,如背景、文本、标题等。 |
调试设置
| 配置项 | 类型 | 默认值 | 说明 |
| :------ | :-------- | :------ | :------------------------------------- |
| debug | boolean | false | 开启Debug模式 (在控制台输出详细API日志)。 |
