文件发送插件是一个功能强大的文件管理和传输工具,支持多种常见文件格式,包括文档、图片、音频、视频等。用户只需发送简单的命令,即可快速发送文件,支持从本地路径或远程URL发送文件。具有简洁统一的命令格式,支持多种文件传输方式,并提供文件快捷方式管理功能。
- 📁 支持多种文件格式(文档、图片、音频、视频等)
- 🔍 支持从指定目录查找文件
- 🌐 支持直接发送网络URL文件
- 📊 自动显示文件信息和发送状态
- 🛠️ 配置简单,易于扩展
- ⌨️ 支持简洁统一的命令格式
- 📑 支持快捷方式管理
- 🔄 支持多种文件传输方式(自动选择最佳方式)
- 🌐 内置文件服务器,支持通过URL访问本地文件
- 将
file_plugin目录复制到plugins目录下 - 重启程序,插件将自动加载
插件安装后会自动创建以下目录结构:
plugins/
└── file_plugin/
├── __init__.py
├── file_plugin.py
├── config.json
├── files/ # 默认文件存储目录
└── cache/ # 文件缓存目录
默认配置会在插件目录下创建 files 和 cache 目录:
files: 用于存储上传的文件cache: 用于存储下载的网络文件缓存
插件配置文件为 plugins/file_plugin/config.json。首次启动时,如果配置文件不存在,插件会自动生成包含默认配置的文件。您可以根据需要修改这些配置。
配置文件包含以下内容:
{
"api": {
"token": "你的API令牌",
"base_url": "API基础URL",
"app_id": "你的应用ID"
},
"settings": {
"default_dir": "./plugins/file_plugin/files",
"max_file_size": 100,
"allowed_extensions": [
"pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx",
"txt", "csv", "json", "xml", "html", "md",
"jpg", "jpeg", "png", "gif", "bmp", "svg",
"mp3", "wav", "ogg", "mp4", "avi", "mov",
"zip", "rar", "7z", "tar", "gz"
],
"use_cache": true,
"cache_dir": "./plugins/file_plugin/cache",
"file_server": {
"host": "0.0.0.0",
"port": 0,
"public_host": "127.0.0.1",
"external_host": "外网访问主机名"
},
"file_retention": {
"default_days": 30,
"cache_expire_days": 3,
"clean_interval_days": 1
}
},
"shortcuts": {
"快捷名称1": "文件路径1",
"快捷名称2": {
"path": "文件路径2",
"description": "文件描述",
"tags": ["标签1", "标签2"]
}
}
}token: GeWeChat API 的访问令牌base_url: GeWeChat API 的基础 URLapp_id: GeWeChat 应用 ID
default_dir: 默认查找文件的目录,默认为./plugins/file_plugin/filesmax_file_size: 允许发送的最大文件大小,单位为MB,默认100MBallowed_extensions: 允许发送的文件扩展名列表,支持常见的文档、图片、音视频和压缩文件格式use_cache: 是否使用缓存(对于网络文件),默认启用cache_dir: 网络文件的缓存目录,默认为./plugins/file_plugin/cachefile_server: 内置文件服务器配置host: 服务器监听地址,默认 "0.0.0.0"(监听所有网卡)port: 服务器端口,0表示自动分配可用端口public_host: 内网访问的主机名,默认 "127.0.0.1"external_host: 外网访问的主机名,用于跨网络访问
file_retention: 文件保留策略配置default_days: 文件默认保留天数,默认30天cache_expire_days: 缓存文件过期天数,默认3天clean_interval_days: 清理任务执行间隔,默认1天
可以配置常用文件的快捷方式,方便快速访问:
- 简单格式:
"快捷名称": "文件路径" - 详细格式:
"快捷名称": { "path": "文件路径", "description": "文件描述", "tags": ["标签1", "标签2"] }
插件支持文件保留和自动清理功能:
- 默认保留期限:文件默认保留30天
- 缓存文件:网络文件缓存3天后自动清理
- 自动清理:每天自动执行清理任务
配置示例:
"file_retention": {
"default_days": 30, // 文件默认保留天数
"cache_expire_days": 3, // 缓存文件过期天数
"clean_interval_days": 1 // 清理任务执行间隔(天)
}清理规则:
- 超过保留期限的文件将被自动删除
- 缓存目录中超过过期时间的文件将被清理
- 清理任务每隔指定天数自动执行一次
- 被快捷方式引用的文件不会被自动清理
本插件采用统一简洁的命令格式,所有命令均以 文件 开头:
文件 <命令参数>
直接发送文件路径即可:
文件 example.pdf
直接发送网络URL:
文件 https://example.com/file.pdf
文件 查询 关键词
添加快捷方式:
文件 添加 快捷名称 文件路径 [描述]
使用快捷方式:
文件 快捷 快捷名称
查看所有快捷方式:
文件 列表
删除快捷方式:
文件 删除 快捷名称
查看帮助信息:
文件 帮助
或简单使用:
文件
示例
| 功能 | 命令格式 | 说明 |
|---|---|---|
| 发送本地文件 | 文件 example.pdf |
发送指定的本地文件 |
| 发送网络文件 | 文件 https://example.com/file.pdf |
发送指定URL的文件 |
| 查询文件 | 文件 查询 关键词 |
在默认目录中搜索文件 |
| 添加快捷方式 | 文件 添加 快捷名 文件路径 [描述] |
添加文件快捷方式 |
| 使用快捷方式 | 文件 快捷 快捷名 |
使用快捷方式发送文件 |
| 查看快捷方式列表 | 文件 列表 |
显示所有可用的快捷方式 |
| 删除快捷方式 | 文件 删除 快捷名 |
删除指定的快捷方式 |
| 获取帮助 | 文件 帮助 或 文件 |
显示帮助信息 |
| 运行测试 | 文件 测试 [方法] |
执行功能测试,可选指定测试方法 |
文件 report.docx- 发送当前目录下的Word文档文件 /path/to/document.pdf- 发送指定路径的PDF文件文件 快捷 周报- 使用快捷方式发送名为"周报"的文件文件 https://example.org/image.jpg- 发送网络图片文件 列表- 列出所有可用的快捷方式文件 查询 report- 在默认目录中搜索包含"report"的文件文件 添加 周报 ./files/weekly.docx 每周工作总结文档- 添加名为"周报"的快捷方式
插件内置了一个智能的文件服务器,具有以下特性:
- 自动端口分配:当指定端口被占用时自动切换到其他可用端口
- 智能主机名识别:
- 支持从环境变量获取公共主机名(PUBLIC_HOST)
- 自动从API配置中提取可访问的主机名
- 支持从系统环境和DNS获取主机名
- 通过UDP连接探测本机IP
- 安全访问控制:
- 限制文件访问范围在配置的根目录内
- 自动记录访问日志
- 配置示例:
"file_server": { "host": "0.0.0.0", "port": 0, // 0表示自动分配端口 "public_host": "127.0.0.1", // 外部访问的主机名 "external_host": "外网访问的主机名,用于跨网络访问" }
插件实现了智能的文件传输机制:
-
自动选择最佳传输方式:
- 文件转发(优先):使用
/message/forwardFile接口 - 直接发送:使用
/message/postFile接口 - 内联发送:适用于小型文本文件
- 附件发送:使用专用的附件API
- 上传后发送:先上传文件获取URL,再发送
- 文件转发(优先):使用
-
智能重试机制:
- 当某种传输方式失败时自动尝试其他方式
- 支持多种备选API接口
- 自动处理网络超时和错误
-
性能优化:
- 大文件分块上传
- 支持断点续传
- 自动压缩优化
-
进度显示:
- 显示文件上传/下载进度
- 提供详细的状态反馈
对于网络文件,插件支持缓存功能:
- 启用缓存可以减少重复下载
- 缓存目录可在
settings.cache_dir中配置 - 缓存文件使用原文件名保存
如果遇到文件发送失败的情况,请按以下步骤排查:
-
检查API配置
- 确认
api.token、api.base_url和api.app_id配置正确 - 检查API服务是否可访问
- 查看日志中的详细错误信息
- 确认
-
检查文件权限和状态
- 确保程序有权限读取文件
- 验证文件是否完整且未被占用
- 检查文件路径是否包含特殊字符
-
检查文件大小和类型
- 确认文件大小未超过
settings.max_file_size限制 - 验证文件扩展名在
settings.allowed_extensions列表中 - 对于大文件,考虑使用分块上传
- 确认文件大小未超过
-
网络和服务器问题
- 检查网络连接状态
- 验证文件服务器是否正常运行
- 确认端口是否被防火墙阻止
-
调试模式
- 查看详细的日志输出
- 使用内置的测试命令:
文件 测试 - 检查文件服务器访问日志
如果命令无法被正确识别:
- 确保命令格式正确,注意空格和参数顺序
- 检查日志输出,查看详细错误信息
- 尝试使用基本命令
文件 帮助获取帮助
对于网络文件下载失败的情况:
- 确保URL格式正确且包含协议(如http://或https://)
- 确认URL文件可公开访问
- 检查网络连接是否稳定
- 检查服务器是否支持大文件下载
如果快捷方式不起作用:
- 使用
文件 列表确认快捷方式已正确添加 - 检查文件路径是否存在且有效
- 尝试重新添加快捷方式
- 添加文件帮助命令
- 优化文件服务器功能
- 改进错误处理和提示信息
- 增强网络文件处理能力
- 优化文件传输机制
- 初始版本发布
- 支持多种文件格式
- 优化统一的命令格式
- 支持本地文件发送
- 支持网络文件发送
- 实现文件查询功能
- 添加快捷方式管理
本插件基于 MIT 许可证开源。
- biubiu
插件提供了内置的测试功能,帮助验证配置和功能是否正常:
使用以下命令进行基本功能测试:
文件 测试
此命令会:
- 创建测试文件
- 尝试使用不同方式发送
- 验证文件服务器访问
- 检查配置有效性
可以测试特定的发送方式:
文件 测试 转发 # 测试文件转发
文件 测试 直接 # 测试直接发送
文件 测试 上传 # 测试上传后发送
测试完成后会显示详细报告:
- 成功/失败状态
- 耗时统计
- 错误原因(如果有)
- 建议的优化方案
