📖 介绍
nonebot-plugin-asmr100 是一个基于 NoneBot2 的插件,用于在QQ群中搜索、下载和分享ASMR音声文件。该插件支持多种功能,包括关键词搜索、文件列表显示、单曲下载、整个文件夹下载以及批量下载并打包等。
功能特点
- 🔍 通过关键词或标签搜索音声
- 📂 查看音声的详细信息和轨道列表
- 🎵 下载并分享单个音频文件
- 📦 将多个音频文件打包成加密ZIP文件分享
- 🔄 支持格式转换,优化文件大小
- 🛡️ 文件反和谐处理,避免内容审查
💿 安装
使用 nb-cli 安装
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装nb plugin install nonebot-plugin-asmr100
使用包管理器安装
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令pip
pip install nonebot-plugin-asmr100
pdm
pdm add nonebot-plugin-asmr100
poetry
poetry add nonebot-plugin-asmr100
conda
conda install nonebot-plugin-asmr100
打开 nonebot2 项目根目录下的 pyproject.toml 文件, 在 [tool.nonebot] 部分追加写入
plugins = ["nonebot_plugin_asmr100"]
⚙️ 配置
基础配置
在 nonebot2 项目的 .env 文件中添加下表中的配置项:
| 配置项 | 必填 | 默认值 | 说明 |
|---|---|---|---|
ASMR_ZIP_PASSWORD |
否 | afu3355 |
ZIP文件加密密码 |
ASMR_MAX_ERROR_COUNT |
否 | 3 |
用户最大错误尝试次数 |
ASMR_API_TIMEOUT |
否 | 15 |
API请求超时时间(秒) |
ASMR_API_BASE_URL |
否 | https://api.asmr-200.com/api |
API基础URL |
高级配置
如需自定义更多配置,可在 .env 文件中添加:
# 基础配置
ASMR_ZIP_PASSWORD=your_password_here
ASMR_MAX_ERROR_COUNT=5
ASMR_API_TIMEOUT=30
# HTTP请求配置
ASMR_HTTP_HEADERS={"User-Agent": "Your Custom User Agent"}
# 支持的音频格式
ASMR_AUDIO_EXTENSIONS=[".mp3", ".wav", ".ogg", ".flac", ".m4a", ".aac"]
配置示例
完整的 .env 配置示例:
# NoneBot基础配置
HOST=127.0.0.1
PORT=8080
SUPERUSERS=["123456789"]
NICKNAME=["小助手", "bot"]
COMMAND_START=["/", ""]
# ASMR100插件配置
ASMR_ZIP_PASSWORD=my_secure_password_123
ASMR_MAX_ERROR_COUNT=5
ASMR_API_TIMEOUT=20
🔧 前置要求
必需依赖
- Python 3.8+:插件运行环境
- NoneBot2:聊天机器人框架
- nonebot-plugin-htmlrender:图片渲染支持
pip install nonebot-plugin-htmlrender
- nonebot-plugin-localstore:本地存储支持
pip install nonebot-plugin-localstore
可选依赖
为了获得最佳体验,建议安装以下可选依赖:
1. FFmpeg(音频转换)
- 用途:音频格式转换,优化文件大小
- 安装方法:
- Windows: 下载 FFmpeg 并添加到PATH
- Linux:
sudo apt install ffmpeg或sudo yum install ffmpeg - macOS:
brew install ffmpeg
2. 7-Zip(高强度加密)
- 用途:创建高强度加密的ZIP文件
- 安装方法:
- Windows: 下载 7-Zip 并安装
- Linux:
sudo apt install p7zip-full或sudo yum install p7zip - macOS:
brew install p7zip
3. ZIP命令行工具(备用加密)
- 用途:当7-Zip不可用时的备用加密方案
- 安装方法:
- Windows: 通常已内置
- Linux:
sudo apt install zip或sudo yum install zip - macOS: 通常已内置
依赖检查
插件启动时会自动检查依赖状态:
[INFO] ASMR100 插件数据目录: /path/to/data
[INFO] ffmpeg已安装,支持音频格式转换
[INFO] [ASMR100] 7z 已安装,支持高强度加密
[INFO] [ASMR100] 插件初始化完成,所有核心功能可用
如果某些依赖缺失,插件仍可正常运行,但部分功能可能受限:
- 无FFmpeg:无法进行音频格式转换
- 无7z/zip:将使用Python内置的ZIP加密(安全性较低)
🎉 使用
指令表
| 指令 | 权限 | 需要@ | 范围 | 说明 |
|---|---|---|---|---|
搜音声 [关键词] [页数] |
所有人 | 否 | 群聊/私聊 | 搜索音声,关键词可用空格或"/"分割不同tag |
搜索下一页 |
所有人 | 否 | 群聊/私聊 | 显示搜索结果的下一页 |
听音声 [RJ号] [选项] |
所有人 | 否 | 群聊/私聊 | 下载并分享音声文件 |
详细使用说明
1. 搜索音声
基础搜索:
搜音声 纯爱
搜音声 催眠
搜音声 双声道
多标签搜索:
搜音声 纯爱 治愈 # 空格分割
搜音声 催眠/双声道 # 斜杠分割
搜音声 JK 学生 治愈 1 # 指定页数
翻页:
搜音声 纯爱 2 # 直接搜索第2页
搜索下一页 # 查看下一页结果
2. 下载音声
查看文件列表:
听音声 RJ123456 # 显示该音声的文件结构
下载单个文件:
听音声 RJ123456 1 # 下载第1个音频文件
听音声 RJ123456 5 # 下载第5个音频文件
下载文件夹:
听音声 RJ123456 A # 下载A文件夹(打包为ZIP)
听音声 RJ123456 B # 下载B文件夹(打包为ZIP)
批量下载:
听音声 RJ123456 all # 下载所有文件(打包为ZIP)
听音声 RJ123456 全部 # 同上,中文命令
强制ZIP格式:
听音声 RJ123456 1 zip # 将单个文件也打包为ZIP
听音声 RJ123456 2 zip # 适用于大文件或需要密码保护
选项说明
| 选项类型 | 格式 | 说明 | 示例 |
|---|---|---|---|
| 数字序号 | 1, 2, 3... |
下载对应序号的单个音频文件 | 听音声 RJ123456 1 |
| 字母序号 | A, B, C... |
下载对应字母的文件夹(ZIP) | 听音声 RJ123456 A |
| 全部下载 | all, 全部 |
下载所有文件(ZIP) | 听音声 RJ123456 all |
| 强制ZIP | 数字 zip |
单个文件也打包为ZIP | 听音声 RJ123456 1 zip |
使用技巧
-
搜索技巧:
- 使用具体的标签词汇,如"治愈"、"催眠"、"双声道"等
- 多个关键词可以缩小搜索范围
- 支持中文和日文关键词
-
下载技巧:
- 大文件建议使用ZIP格式,压缩后更容易传输
- ZIP文件有密码保护,默认密码为配置中的
ASMR_ZIP_PASSWORD - 单个小文件可以直接下载,无需打包
-
文件结构:
- 数字序号对应音频文件(按顺序排列)
- 字母序号对应文件夹(如果存在多级目录)
- 插件会自动识别音频格式:MP3、WAV、OGG、FLAC、M4A等
示例对话
用户: 搜音声 纯爱 治愈
Bot: [显示搜索结果图片,包含多个音声作品]
用户: 听音声 RJ123456
Bot: [显示该音声的文件列表和结构]
用户: 听音声 RJ123456 1
Bot: [发送第1个音频文件]
用户: 听音声 RJ123456 A
Bot: [发送A文件夹的ZIP压缩包]
密码: afu3355
用户: 听音声 RJ123456 all
Bot: [发送包含所有文件的ZIP压缩包]
密码: afu3355
效果图
📝 注意事项
使用限制
- 文件大小:受QQ群文件上传限制,过大的文件可能无法上传
- 网络环境:需要稳定的网络连接,建议在网络良好时使用
- 频率限制:避免频繁请求,以免触发API限制
安全提醒
- 密码保护:ZIP文件使用密码加密,默认密码为
afu3355 - 文件安全:下载的文件会临时存储在本地,使用后会自动清理
- 隐私保护:插件不会收集用户个人信息
法律声明
- 仅供学习:本插件仅供学习交流使用,请勿用于商业用途
- 版权尊重:请遵守相关法律法规,尊重原作者版权
- 免责声明:使用本插件产生的任何问题,开发者不承担责任
技术说明
- 格式支持:支持 MP3、WAV、OGG、FLAC、M4A 等主流音频格式
- 压缩算法:优先使用7z高强度加密,备用zip加密
- 反和谐:内置文件反和谐处理,提高传输成功率
致谢
- 感谢 asmr-100.com 提供数据源
- 感谢所有为开源社区贡献的开发者
🔄 更新日志
v0.3.1 - Bug修复版本
🐛 Bug修复
- 修复多级文件夹最后嵌套的图片显示不对的问题
- 修复文件位置不对应的问题
- 修复输入单个数字下载某个文件夹而不是对应序号文件的问题
🔧 代码优化
- 重构函数名和功能,提高代码可读性
- 优化错误处理机制
- 改进文件路径处理逻辑
v0.3.0 - 稳定性提升
🐛 Bug修复
- 修复线程阻塞问题,提升响应速度
- 修复错误判断和抛出机制
- 优化异步处理流程
⚡ 性能优化
- 改进下载队列管理
- 优化内存使用
v0.2.3 - 依赖检查优化
🐛 Bug修复
- 修复ffmpeg和7z依赖检查问题
- 改进系统命令检测逻辑
- 优化错误提示信息
v0.2.0 - 功能增强
✨ 新功能
- 添加状态管理系统
- 支持用户搜索历史
- 增加错误重试机制
v0.1.0 - 初始版本
🎉 核心功能
- 实现基本的搜索和下载功能
- 支持文件夹结构和文件列表显示
- 支持文件转换和压缩
- 基础的用户交互界面
🔧 技术特性
- 基于NoneBot2框架
- 支持多种音频格式
- 集成HTML渲染功能
- 本地存储支持
🔧 故障排除
常见问题
1. 插件无法启动
问题:插件加载失败或启动报错 解决方案:
# 检查依赖是否安装
pip install nonebot-plugin-htmlrender nonebot-plugin-localstore
# 检查NoneBot2版本
pip install --upgrade nonebot2
# 查看详细错误日志
2. 搜索无结果
问题:搜索音声时返回空结果 解决方案:
- 检查网络连接是否正常
- 尝试更换关键词
- 检查API配置是否正确
- 查看控制台是否有错误信息
3. 下载失败
问题:音声下载失败或文件损坏 解决方案:
- 检查网络稳定性
- 尝试重新下载
- 检查磁盘空间是否充足
- 查看是否触发了频率限制
4. ZIP文件无法解压
问题:下载的ZIP文件提示密码错误 解决方案:
- 确认使用正确的密码(默认:
afu3355) - 检查配置文件中的
ASMR_ZIP_PASSWORD设置 - 确保ZIP文件下载完整
5. 依赖检查失败
问题:FFmpeg或7z检查失败 解决方案:
# Windows安装FFmpeg
# 下载并添加到PATH环境变量
# Linux安装FFmpeg
sudo apt install ffmpeg
# 安装7z
sudo apt install p7zip-full
调试模式
启用详细日志以便调试:
# 在bot.py中添加
import logging
logging.basicConfig(level=logging.DEBUG)
获取帮助
如果遇到问题,可以:
- 查看日志:检查NoneBot2的运行日志
- 提交Issue:在GitHub上提交详细的问题报告
- 社区求助:在NoneBot2社区寻求帮助
🧑💻 贡献
欢迎各种形式的贡献,包括但不限于:
- 🐛 Bug报告:发现问题请及时反馈
- 💡 功能建议:提出新功能想法
- 📝 文档改进:完善使用说明和注释
- 🔧 代码贡献:提交Pull Request
- 🌐 翻译工作:支持多语言版本
贡献流程
- Fork本项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
📄 开源协议
本项目采用 MIT 许可证。
🙏 致谢
- NoneBot2:优秀的聊天机器人框架
- nonebot-plugin-htmlrender:提供HTML渲染支持
- nonebot-plugin-asmr:提供灵感
👨💻 作者
- 阿福 (主要开发者)
本项目仅供技术研究使用,请勿用于任何违法违规用途
Metadata
Release files for nonebot-plugin-asmr100 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nonebot_plugin_asmr100-0.3.1.tar.gz | 62.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nonebot_plugin_asmr100-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 127.7 kB
Release files / nonebot_plugin_asmr100-0.3.1.tar.gz
| Download URL | nonebot_plugin_asmr100-0.3.1.tar.gz |
|---|---|
| Size | 62.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fad16e76d65e0c8c0d6376c57b6f17e44dc4cfb78dfff6b9bda07b249ba32b76
|
|
BLAKE2b-256 checksum How to use checksums |
287bb4fefa6ce2e8976bbee26f5140fa45de80c4695bf072375ed2cf974d2701
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / nonebot_plugin_asmr100-0.3.1-py3-none-any.whl
| Download URL | nonebot_plugin_asmr100-0.3.1-py3-none-any.whl |
|---|---|
| Size | 65.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a53200309e7be79d0e59647eed1e79f8f67e3edab4eed9658175f11becedfaa6
|
|
BLAKE2b-256 checksum How to use checksums |
3bf79a18da61ff5c6ef4c9eb5e62287dc4d21504094b9fe251616afd2fce3fcd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|