Skip to content

thekingcom666/file

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

文件发送插件 (FilePlugin)

文件发送 版本 作者 状态

📝 插件介绍

文件发送插件是一个功能强大的文件管理和传输工具,支持多种常见文件格式,包括文档、图片、音频、视频等。用户只需发送简单的命令,即可快速发送文件,支持从本地路径或远程URL发送文件。具有简洁统一的命令格式,支持多种文件传输方式,并提供文件快捷方式管理功能。

✨ 主要特点

  • 📁 支持多种文件格式(文档、图片、音频、视频等)
  • 🔍 支持从指定目录查找文件
  • 🌐 支持直接发送网络URL文件
  • 📊 自动显示文件信息和发送状态
  • 🛠️ 配置简单,易于扩展
  • ⌨️ 支持简洁统一的命令格式
  • 📑 支持快捷方式管理
  • 🔄 支持多种文件传输方式(自动选择最佳方式)
  • 🌐 内置文件服务器,支持通过URL访问本地文件

🚀 安装方法

  1. file_plugin 目录复制到 plugins 目录下
  2. 重启程序,插件将自动加载

目录结构

插件安装后会自动创建以下目录结构:

plugins/
└── file_plugin/
    ├── __init__.py
    ├── file_plugin.py
    ├── config.json
    ├── files/          # 默认文件存储目录
    └── cache/          # 文件缓存目录

默认配置会在插件目录下创建 filescache 目录:

  • 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"]
        }
    }
}

API 配置

  • token: GeWeChat API 的访问令牌
  • base_url: GeWeChat API 的基础 URL
  • app_id: GeWeChat 应用 ID

设置配置

  • default_dir: 默认查找文件的目录,默认为 ./plugins/file_plugin/files
  • max_file_size: 允许发送的最大文件大小,单位为MB,默认100MB
  • allowed_extensions: 允许发送的文件扩展名列表,支持常见的文档、图片、音视频和压缩文件格式
  • use_cache: 是否使用缓存(对于网络文件),默认启用
  • 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天

快捷方式配置

可以配置常用文件的快捷方式,方便快速访问:

  • 简单格式: "快捷名称": "文件路径"
  • 详细格式:
    "快捷名称": {
        "path": "文件路径",
        "description": "文件描述",
        "tags": ["标签1", "标签2"]
    }

文件保留机制

插件支持文件保留和自动清理功能:

  • 默认保留期限:文件默认保留30天
  • 缓存文件:网络文件缓存3天后自动清理
  • 自动清理:每天自动执行清理任务

配置示例:

"file_retention": {
    "default_days": 30,      // 文件默认保留天数
    "cache_expire_days": 3,  // 缓存文件过期天数
    "clean_interval_days": 1 // 清理任务执行间隔(天)
}

清理规则:

  1. 超过保留期限的文件将被自动删除
  2. 缓存目录中超过过期时间的文件将被清理
  3. 清理任务每隔指定天数自动执行一次
  4. 被快捷方式引用的文件不会被自动清理

🎮 使用方法

本插件采用统一简洁的命令格式,所有命令均以 文件 开头:

文件 <命令参数>

发送本地文件

直接发送文件路径即可:

文件 example.pdf

发送网络文件

直接发送网络URL:

文件 https://example.com/file.pdf

查询文件

文件 查询 关键词

管理快捷方式

添加快捷方式:

文件 添加 快捷名称 文件路径 [描述]

使用快捷方式:

文件 快捷 快捷名称

查看所有快捷方式:

文件 列表

删除快捷方式:

文件 删除 快捷名称

获取帮助

查看帮助信息:

文件 帮助

或简单使用:

文件

示例

QQ_1742543301022

命令概览

功能 命令格式 说明
发送本地文件 文件 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": "外网访问的主机名,用于跨网络访问"
    }

多种传输方式

插件实现了智能的文件传输机制:

  1. 自动选择最佳传输方式

    • 文件转发(优先):使用 /message/forwardFile 接口
    • 直接发送:使用 /message/postFile 接口
    • 内联发送:适用于小型文本文件
    • 附件发送:使用专用的附件API
    • 上传后发送:先上传文件获取URL,再发送
  2. 智能重试机制

    • 当某种传输方式失败时自动尝试其他方式
    • 支持多种备选API接口
    • 自动处理网络超时和错误
  3. 性能优化

    • 大文件分块上传
    • 支持断点续传
    • 自动压缩优化
  4. 进度显示

    • 显示文件上传/下载进度
    • 提供详细的状态反馈

文件缓存

对于网络文件,插件支持缓存功能:

  • 启用缓存可以减少重复下载
  • 缓存目录可在 settings.cache_dir 中配置
  • 缓存文件使用原文件名保存

🛠️ 故障排除

文件发送失败

如果遇到文件发送失败的情况,请按以下步骤排查:

  1. 检查API配置

    • 确认 api.tokenapi.base_urlapi.app_id 配置正确
    • 检查API服务是否可访问
    • 查看日志中的详细错误信息
  2. 检查文件权限和状态

    • 确保程序有权限读取文件
    • 验证文件是否完整且未被占用
    • 检查文件路径是否包含特殊字符
  3. 检查文件大小和类型

    • 确认文件大小未超过 settings.max_file_size 限制
    • 验证文件扩展名在 settings.allowed_extensions 列表中
    • 对于大文件,考虑使用分块上传
  4. 网络和服务器问题

    • 检查网络连接状态
    • 验证文件服务器是否正常运行
    • 确认端口是否被防火墙阻止
  5. 调试模式

    • 查看详细的日志输出
    • 使用内置的测试命令:
      文件 测试
      
    • 检查文件服务器访问日志

命令无法识别

如果命令无法被正确识别:

  1. 确保命令格式正确,注意空格和参数顺序
  2. 检查日志输出,查看详细错误信息
  3. 尝试使用基本命令 文件 帮助 获取帮助

网络文件下载失败

对于网络文件下载失败的情况:

  1. 确保URL格式正确且包含协议(如http://或https://)
  2. 确认URL文件可公开访问
  3. 检查网络连接是否稳定
  4. 检查服务器是否支持大文件下载

快捷方式问题

如果快捷方式不起作用:

  1. 使用 文件 列表 确认快捷方式已正确添加
  2. 检查文件路径是否存在且有效
  3. 尝试重新添加快捷方式

📄 更新日志

v1.0.1 (2025-03-20)

  • 添加文件帮助命令
  • 优化文件服务器功能
  • 改进错误处理和提示信息
  • 增强网络文件处理能力
  • 优化文件传输机制

v1.0 (2025-03-19)

  • 初始版本发布
  • 支持多种文件格式
  • 优化统一的命令格式
  • 支持本地文件发送
  • 支持网络文件发送
  • 实现文件查询功能
  • 添加快捷方式管理

📝 许可证

本插件基于 MIT 许可证开源。

👨‍💻 作者

  • biubiu

🧪 测试功能

插件提供了内置的测试功能,帮助验证配置和功能是否正常:

基本测试

使用以下命令进行基本功能测试:

文件 测试

此命令会:

  1. 创建测试文件
  2. 尝试使用不同方式发送
  3. 验证文件服务器访问
  4. 检查配置有效性

指定测试方法

可以测试特定的发送方式:

文件 测试 转发    # 测试文件转发
文件 测试 直接    # 测试直接发送
文件 测试 上传    # 测试上传后发送

测试结果

测试完成后会显示详细报告:

  • 成功/失败状态
  • 耗时统计
  • 错误原因(如果有)
  • 建议的优化方案

About

dify-on-wechat/chatgpt-on-wechat插件

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages