Skip to content

china-LY/wechat-bot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信机器人

项目简介

这是一个基于微信桌面客户端的自动化消息发送工具,支持图形界面操作、定时任务和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)

方法1: 运行打包版

  1. 下载最新的发布版本
  2. 解压文件到合适的目录
  3. 直接运行微信机器人.exe文件

方法2: 从源码运行

# 克隆仓库
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

打包成exe文件

# 安装打包依赖
pip install pyinstaller pillow

# 使用打包脚本
python build.py

打包完成后,可在dist目录找到可执行文件。

详细使用方法

发送消息

  1. 切换到"发送消息"选项卡
  2. 从接收输入框中输入接收者,点击"添加"
  3. 在消息框中输入要发送的内容
  4. 点击"发送消息"按钮
  5. 观察日志区域了解发送状态

设置定时任务

  1. 切换到"定时任务"选项卡
  2. 点击"添加任务"按钮
  3. 填写任务名称和消息内容
  4. 添加接收者列表
  5. 选择执行时间方式:
    • 每日时间: 选择特定的时间点
    • Cron表达式: 设置复杂的定时规则
    • 秒级精度: 勾选后可设置秒级定时
  6. 可选择API URL以动态获取消息内容
  7. 点击"确定"保存任务
  8. 在任务列表中可以管理、编辑或立即执行任务

API使用方法

程序启动后会自动开启API服务,默认端口为5000。您可以通过设置菜单修改端口。

发送单条消息 (POST)

POST /api/send_message
Content-Type: application/json

{
  "chat_name": "接收者名称",
  "message": "要发送的消息内容"
}

发送单条消息 (GET)

GET /api/send_message?chat_name=接收者名称&message=要发送的消息内容

简化版发送消息 (GET)

GET /api/send?to=接收者名称&msg=要发送的消息内容

发送给多个接收者 (POST)

POST /api/send_to_multiple
Content-Type: application/json

{
  "chat_names": ["接收者1", "接收者2"],
  "message": "要发送的消息内容"
}

发送给多个接收者 (GET)

GET /api/send_to_multiple?chat_names=["接收者1","接收者2"]&message=要发送的消息内容

或者使用逗号分隔接收者:

GET /api/send_to_multiple?chat_names=接收者1,接收者2&message=要发送的消息内容

通过外部API获取消息内容 (POST)

POST /api/send_with_api
Content-Type: application/json

{
  "chat_name": "接收者名称",
  "api_url": "https://example.com/api/message"
}

通过外部API获取消息内容 (GET)

GET /api/send_with_api?chat_name=接收者名称&api_url=https://example.com/api/message

API响应格式

{
  "success": true|false,
  "message": "状态消息",
  "task_id": "api_12345678",  // 任务ID
  "recipients_count": 2       // 总接收者数(仅多接收者API)
}

状态检查API

GET /api/status

高级使用技巧

Cron表达式说明

Cron表达式用于设置复杂的定时规则,格式为:

秒 分 时 日 月 星期 [年]

几个常用的例子:

  • 0 0 8 * * * - 每天早上8点执行
  • 0 30 9 * * 1-5 - 工作日(周一至周五)上午9:30执行
  • 0 0/15 * * * * - 每15分钟执行一次
  • 0 0 12 1 * * - 每月1日中午12点执行

使用API动态获取消息内容

  1. 创建一个返回JSON或文本内容的API服务
  2. 在定时任务设置中,填写该API的URL
  3. 定时任务执行时,将先从API获取内容,然后发送

命令行参数

程序支持以下命令行参数:

--port 8080           # 设置API服务端口
--debug               # 启用调试模式
--minimize            # 启动时最小化到系统托盘
--no-api              # 不启动API服务

常见问题解决

微信无法自动启动或激活

  • 确保已安装微信并已登录
  • 检查程序是否具有管理员权限
  • 在设置中手动指定微信安装路径
  • 可能需要关闭微信的某些安全设置
  • 检查是否有多个微信实例同时运行

无法发送消息

  • 检查微信是否正常运行并显示在前台
  • 确认接收者名称完全正确,区分大小写
  • 检查日志中是否有具体错误信息
  • 尝试减慢发送频率避免触发微信的风控机制
  • 确保没有其他应用干扰微信窗口的激活

定时任务未执行

  • 检查系统时间是否准确
  • 确认应用保持运行状态
  • 验证Cron表达式格式是否正确
  • 查看日志确认调度器状态
  • 检查任务是否被禁用

API服务无法访问

  • 确认当前端口(默认5000)未被其他应用占用
  • 检查防火墙设置是否允许该端口的访问
  • 尝试使用127.0.0.1替代localhost进行测试
  • 检查API服务是否已启动(状态栏有显示)
  • 如需外网访问,确保已正确配置网络设置

应用界面显示异常

  • 尝试调整系统DPI设置
  • 确保显示器分辨率至少为1280x720
  • 重新启动应用
  • 检查是否安装了所需的依赖库

关闭时程序未完全退出

  • 使用任务管理器检查是否有残留进程
  • 使用程序内的"退出"按钮而不是直接关闭窗口
  • 检查日志中是否有线程未正常关闭的警告

性能优化建议

  • 发送频率控制:每次发送间隔建议不少于1-2秒
  • 批量发送:单次群发不建议超过20个接收者
  • 定时任务并发:避免设置多个同时执行的定时任务
  • 内存占用:长时间运行时,可定期重启应用
  • 日志清理:定期清理日志文件夹,避免占用过多磁盘空间

更新日志

v1.0.0 (2024-06-24)

  • 初始版本发布
  • 实现基本的消息发送功能
  • 支持定时任务和API服务
  • 完整的图形界面实现

开发计划

  • 支持图片和文件发送
  • 添加消息模板功能
  • 实现群聊消息发送
  • 添加消息发送统计报表
  • 支持导入/导出定时任务
  • 添加系统托盘功能
  • 支持多语言界面
  • 增强错误处理和重试机制
  • 提供消息定时发送的进度显示
  • 添加文件日志轮转功能

注意事项

  • 定时任务支持cron表达式,可实现复杂的定时策略
  • 使用前请确保微信已经登录且保持活跃状态
  • 过高频率的消息发送可能触发微信的安全机制
  • 本项目仅供学习交流使用,请勿用于非法用途
  • 请遵守微信平台的使用规则和条款

常见错误代码

  • E001: 微信客户端未找到
  • E002: 无法激活微信窗口
  • E003: 接收者未找到
  • E004: 消息发送超时
  • E005: API服务启动失败
  • E006: 定时任务格式错误
  • E007: 配置文件损坏

疑难解答

如果遇到问题,请尝试以下步骤:

  1. 查看应用内日志窗口的错误信息
  2. 检查logs目录下的日志文件
  3. 尝试重启应用和微信客户端
  4. 确保系统环境符合要求
  5. 以管理员权限运行应用

贡献指南

欢迎提交问题和功能需求,也欢迎提交代码贡献。

  1. Fork本仓库
  2. 创建您的功能分支 git checkout -b feature/amazing-feature
  3. 提交您的更改 git commit -m 'Add some amazing feature'
  4. 推送到分支 git push origin feature/amazing-feature
  5. 开启Pull Request

许可证

MIT License

About

微信机器人,支持自动发送消息

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%