这是一个基于微信桌面客户端的自动化消息发送工具,支持图形界面操作、定时任务和API接口调用。该工具通过模拟人工操作微信界面,实现消息的自动发送,无需额外的微信API和扫码登录。适用于个人助手、定时提醒、批量通知等多种场景。
- 通过模拟操作系统API调用微信桌面客户端
- 使用PyAutoGUI模拟键盘鼠标操作,定位和操作微信界面元素
- 通过Windows API对微信窗口进行查找和激活
- 通过剪贴板传输文本消息内容,提高消息输入效率
- 利用多线程处理消息队列,提高发送效率和稳定性
- 🖥️ 现代化界面: 基于PyQt5构建的美观、易用的图形界面
- 📧 消息发送: 支持单个或批量发送消息给微信好友
- ⏰ 定时任务: 支持标准Cron表达式的定时消息发送任务
- 🌐 API接口: 内置Flask API服务器,支持通过HTTP请求发送消息
- 📊 实时日志: 应用内实时显示日志,方便监控和调试
- 🔄 动态内容: 支持通过API获取动态消息内容
- 💾 配置持久化: 自动保存和加载配置和任务列表
- 📦 易于分发: 支持打包为单文件可执行程序
- 🔄 秒级定时: 支持精确到秒的定时任务执行
- 🔄 消息队列: 内置消息队列,避免消息堆积和阻塞
- Windows 10/11 操作系统
- 已安装并登录的微信桌面客户端
- Python 3.8+(开发环境)或直接运行打包后的程序
- 显示器分辨率最低1280x720
- 推荐以管理员权限运行(以便访问系统API)
wechat-bot/
├── main.py # 主程序入口
├── build.py # 打包脚本
├── requirements.txt # 项目依赖
├── config/ # 配置文件目录
│ └── settings.json # 配置文件
├── core/ # 核心功能目录
│ ├── __init__.py # 包初始化文件
│ ├── wechat.py # 微信操作控制模块
│ ├── scheduler.py # 定时任务管理模块
│ └── api_server.py # API服务模块
├── ui/ # 界面目录
│ ├── __init__.py # 包初始化文件
│ ├── main_window.py # 主窗口界面
│ ├── send_tab.py # 发送消息选项卡
│ ├── schedule_tab.py# 定时任务选项卡
│ ├── settings_dialog.py # 设置对话框
│ ├── api_docs_dialog.py # API文档对话框
│ ├── resource_utils.py # 资源工具
│ └── styles.py # 界面样式
├── utils/ # 工具目录
│ ├── __init__.py # 包初始化文件
│ ├── config.py # 配置工具
│ └── logger.py # 日志工具
├── logs/ # 日志目录
└── resources/ # 资源文件目录
├── icon.png # 应用图标
├── icon.ico # Windows图标
└── check.svg # UI资源
- 确保已安装并登录微信桌面客户端
- 确保微信窗口可以正常显示和操作
- 管理员权限运行(推荐,以便访问系统API)
- 下载最新的发布版本
- 解压文件到合适的目录
- 直接运行
微信机器人.exe文件
# 克隆仓库
git clone https://github.com/yourusername/wechat-bot.git
# 进入项目目录
cd wechat-bot
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 直接运行主程序
python main.py# 安装打包依赖
pip install pyinstaller pillow
# 使用打包脚本
python build.py打包完成后,可在dist目录找到可执行文件。
- 切换到"发送消息"选项卡
- 从接收输入框中输入接收者,点击"添加"
- 在消息框中输入要发送的内容
- 点击"发送消息"按钮
- 观察日志区域了解发送状态
- 切换到"定时任务"选项卡
- 点击"添加任务"按钮
- 填写任务名称和消息内容
- 添加接收者列表
- 选择执行时间方式:
- 每日时间: 选择特定的时间点
- Cron表达式: 设置复杂的定时规则
- 秒级精度: 勾选后可设置秒级定时
- 可选择API URL以动态获取消息内容
- 点击"确定"保存任务
- 在任务列表中可以管理、编辑或立即执行任务
程序启动后会自动开启API服务,默认端口为5000。您可以通过设置菜单修改端口。
POST /api/send_message
Content-Type: application/json
{
"chat_name": "接收者名称",
"message": "要发送的消息内容"
}
GET /api/send_message?chat_name=接收者名称&message=要发送的消息内容
GET /api/send?to=接收者名称&msg=要发送的消息内容
POST /api/send_to_multiple
Content-Type: application/json
{
"chat_names": ["接收者1", "接收者2"],
"message": "要发送的消息内容"
}
GET /api/send_to_multiple?chat_names=["接收者1","接收者2"]&message=要发送的消息内容
或者使用逗号分隔接收者:
GET /api/send_to_multiple?chat_names=接收者1,接收者2&message=要发送的消息内容
POST /api/send_with_api
Content-Type: application/json
{
"chat_name": "接收者名称",
"api_url": "https://example.com/api/message"
}
GET /api/send_with_api?chat_name=接收者名称&api_url=https://example.com/api/message
{
"success": true|false,
"message": "状态消息",
"task_id": "api_12345678", // 任务ID
"recipients_count": 2 // 总接收者数(仅多接收者API)
}GET /api/status
Cron表达式用于设置复杂的定时规则,格式为:
秒 分 时 日 月 星期 [年]
几个常用的例子:
0 0 8 * * *- 每天早上8点执行0 30 9 * * 1-5- 工作日(周一至周五)上午9:30执行0 0/15 * * * *- 每15分钟执行一次0 0 12 1 * *- 每月1日中午12点执行
- 创建一个返回JSON或文本内容的API服务
- 在定时任务设置中,填写该API的URL
- 定时任务执行时,将先从API获取内容,然后发送
程序支持以下命令行参数:
--port 8080 # 设置API服务端口
--debug # 启用调试模式
--minimize # 启动时最小化到系统托盘
--no-api # 不启动API服务
- 确保已安装微信并已登录
- 检查程序是否具有管理员权限
- 在设置中手动指定微信安装路径
- 可能需要关闭微信的某些安全设置
- 检查是否有多个微信实例同时运行
- 检查微信是否正常运行并显示在前台
- 确认接收者名称完全正确,区分大小写
- 检查日志中是否有具体错误信息
- 尝试减慢发送频率避免触发微信的风控机制
- 确保没有其他应用干扰微信窗口的激活
- 检查系统时间是否准确
- 确认应用保持运行状态
- 验证Cron表达式格式是否正确
- 查看日志确认调度器状态
- 检查任务是否被禁用
- 确认当前端口(默认5000)未被其他应用占用
- 检查防火墙设置是否允许该端口的访问
- 尝试使用127.0.0.1替代localhost进行测试
- 检查API服务是否已启动(状态栏有显示)
- 如需外网访问,确保已正确配置网络设置
- 尝试调整系统DPI设置
- 确保显示器分辨率至少为1280x720
- 重新启动应用
- 检查是否安装了所需的依赖库
- 使用任务管理器检查是否有残留进程
- 使用程序内的"退出"按钮而不是直接关闭窗口
- 检查日志中是否有线程未正常关闭的警告
- 发送频率控制:每次发送间隔建议不少于1-2秒
- 批量发送:单次群发不建议超过20个接收者
- 定时任务并发:避免设置多个同时执行的定时任务
- 内存占用:长时间运行时,可定期重启应用
- 日志清理:定期清理日志文件夹,避免占用过多磁盘空间
- 初始版本发布
- 实现基本的消息发送功能
- 支持定时任务和API服务
- 完整的图形界面实现
- 支持图片和文件发送
- 添加消息模板功能
- 实现群聊消息发送
- 添加消息发送统计报表
- 支持导入/导出定时任务
- 添加系统托盘功能
- 支持多语言界面
- 增强错误处理和重试机制
- 提供消息定时发送的进度显示
- 添加文件日志轮转功能
- 定时任务支持cron表达式,可实现复杂的定时策略
- 使用前请确保微信已经登录且保持活跃状态
- 过高频率的消息发送可能触发微信的安全机制
- 本项目仅供学习交流使用,请勿用于非法用途
- 请遵守微信平台的使用规则和条款
- E001: 微信客户端未找到
- E002: 无法激活微信窗口
- E003: 接收者未找到
- E004: 消息发送超时
- E005: API服务启动失败
- E006: 定时任务格式错误
- E007: 配置文件损坏
如果遇到问题,请尝试以下步骤:
- 查看应用内日志窗口的错误信息
- 检查logs目录下的日志文件
- 尝试重启应用和微信客户端
- 确保系统环境符合要求
- 以管理员权限运行应用
欢迎提交问题和功能需求,也欢迎提交代码贡献。
- Fork本仓库
- 创建您的功能分支
git checkout -b feature/amazing-feature - 提交您的更改
git commit -m 'Add some amazing feature' - 推送到分支
git push origin feature/amazing-feature - 开启Pull Request
MIT License