A WeChat automation tool based on pyautogui
Project description
wx-payautogui
一个基于 pyautogui 的微信自动化工具,提供稳定可靠的微信操作和监控功能。
主要功能
-
自动化操作
- 添加好友
- 发送消息
- 群管理
- 自动回复
-
消息监控
- 群消息监控
- 私聊监控
- 关键词触发
- 自动回复
-
智能风控
- 操作频率限制
- 异常行为检测
- 账号安全保护
- 自动休眠机制
项目结构
目录说明
-
examples/ - 示例代码目录
basic_usage.py: 展示基本功能的使用方法monitor_daemon.py: 24小时监控运行示例
-
resources/ - 资源文件目录
- 按功能分类存放各类操作所需的图片资源
- 包含基础操作、联系人、聊天、好友、群聊等分类
-
wx-payautogui/ - 主包目录
core/: 核心功能实现managers/: 管理器模块utils/: 工具类模块exceptions/: 异常处理模块
-
配置文件
setup.py: 包安装配置requirements.txt: 依赖包列表README.md: 项目文档
安装
方法一:从 PyPI 安装
pip install wx-payautogui
方法二:从源码安装
- 克隆项目
git clone https://github.com/xiaofang142/wx-payautogui.git
cd wx-payautogui
- 创建虚拟环境(推荐)
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
- 安装依赖
# 安装基本依赖
pip install -r requirements.txt
# 安装开发依赖(可选)
pip install -e ".[dev]"
- 开发模式安装
pip install -e .
验证安装
# 测试导入
from wx_payautogui import WeChatBot
# 创建实例
bot = WeChatBot()
系统要求
- Python 3.7+
- Windows/macOS/Linux
- 依赖包:
- pyautogui >= 0.9.53
- pillow >= 8.0.0
- opencv-python >= 4.5.0
- pywin32 >= 228 (Windows only)
- python-xlib (Linux only)
可选开发依赖
- pytest >= 6.0.0
- pytest-cov >= 2.0.0
- black >= 21.0.0
注意事项和限制
1. 环境要求
- Python 3.7+
- 微信客户端已登录
- 屏幕分辨率匹配
- 资源图片准备
2. 运行限制
- 不支持后台运行
- 需要保持窗口可见
- 不要遮挡微信界面
- 避免鼠标干扰
3. 风控建议
- 遵守每日限额
- 避开敏感时段
- 合理设置间隔
- 定期检查状态
4. 异常处理
- 添加错误重试
- 记录详细日志
- 定期备份数据
- 监控运行状态
5. 24小时运行注意事项
- 关闭系统休眠
- 禁用屏幕保护
- 显示器常亮设置
- 定期检查状态
- 使用专门显示器
- 确保网络稳定
常见问题
-
无法定位元素
- 检查图片资源是否匹配
- 确认窗口未被遮挡
- 调整识别参数
-
操作失败
- 确保窗口活动状态
- 检查操作间隔
- 增加等待时间
-
程序崩溃
- 检查日志记录
- 确认资源完整
- 调整配置参数
功能方法说明
1. 基础操作
调用方式示例
1. 基础使用
配置参数说明
1. 基础配置
2. 监控配置
资源文件说明
resources/ 目录结构
资源文件功能说明
-
基础操作资源
wechat_icon.png: 微信客户端图标,用于检测程序是否运行login_qr.png: 登录二维码区域,用于自动登录
-
联系人资源
contact.png: 联系人搜索结果,用于定位目标联系人contacts_tab.png: 通讯录标签页,用于切换到联系人列表search_bar.png: 搜索栏,用于搜索联系人或群聊
-
聊天资源
chat_box.png: 聊天输入框,用于定位消息输入区域send_button.png: 发送按钮,用于发送消息emoji_panel.png: 表情面板,用于发送表情
-
好友操作资源
add_friend.png: 添加好友按钮,用于发起好友请求search_friend.png: 搜索好友输入框,用于搜索微信号verify_msg.png: 验证消息输入框,用于输入验证信息confirm_add.png: 确认添加按钮,用于确认添加好友
-
群聊操作资源
group_chat.png: 群聊界面,用于识别群聊窗口group_member.png: 群成员列表,用于查看群成员invite_btn.png: 邀请按钮,用于邀请好友入群confirm_invite.png: 确认邀请按钮,用于确认邀请操作
注意事项
-
图片要求
- 分辨率:建议使用原始分辨率截图
- 格式:PNG格式,支持透明背景
- 大小:建议不超过100KB
- 清晰度:确保图像清晰,无模糊
-
截图建议
- 使用相同的显示器和分辨率
- 保持界面缩放比例一致
- 避免截取过大区域
- 关闭动画效果
-
更新维护
- 定期检查图片是否过期
- 微信更新后及时更新资源
- 保持多个版本的资源
- 测试不同场景下的识别率
-
自定义资源
- 可以根据需要添加自定义资源
- 建议使用有意义的文件名
- 按功能分类存放
- 记录资源用途说明
使用示例
1. 基础消息发送
from wx-payautogui import WeChatBot
def basic_message_demo():
# 基础配置
config = {
'account': {'risk_level': 'safe'},
'resource_dir': './resources'
}
# 创建机器人实例
bot = WeChatBot(config)
try:
# 发送私聊消息
bot.send_message("张三", "你好!")
# 发送群消息
bot.send_message("测试群", "@所有人 通知内容", is_group=True)
except Exception as e:
print(f"发送失败: {str(e)}")
2. 自动添加好友
from wx-payautogui import WeChatBot
import time
import random
def add_friends_demo():
config = {
'account': {
'risk_level': 'safe',
'daily_limits': {'add_friend': 20}
}
}
bot = WeChatBot(config)
# 批量添加好友
wxids = ["wxid_1", "wxid_2", "wxid_3"]
for wxid in wxids:
try:
bot.add_friend(wxid=wxid, message="你好,我是...")
# 随机等待1-2分钟
time.sleep(random.uniform(60, 120))
except Exception as e:
print(f"添加好友失败: {str(e)}")
time.sleep(300) # 出错后等待5分钟
3. 群消息监控
from wx-payautogui import MonitorDaemon
import logging
def monitor_messages_demo():
# 消息处理函数
def message_handler(source, messages):
for msg in messages:
logging.info(f"收到来自 {source} 的消息: {msg}")
if "关键词" in msg:
# 执行特定操作
pass
# 监控配置
config = {
'monitor_targets': {
'groups': ["监控群1", "监控群2"],
'contacts': []
},
'keywords': {
"你好": ["你也好", "很高兴见到你"],
"价格": ["具体价格请私聊", "稍等,我查询一下"]
},
'auto_reply': True,
'reply_probability': 0.8
}
# 创建守护进程
daemon = MonitorDaemon(config)
daemon.run_forever()
4. 24小时自动回复
from wx-payautogui import WeChatBot
import time
from datetime import datetime
class AutoReplyBot:
def __init__(self):
self.bot = WeChatBot()
self.running = True
def run(self):
while self.running:
try:
current_hour = datetime.now().hour
# 避开敏感时段(23:00-06:00)
if 23 <= current_hour or current_hour < 6:
time.sleep(3600) # 休息1小时
continue
# 处理新消息
messages = self.bot.get_new_messages()
for msg in messages:
self.handle_message(msg)
time.sleep(2) # 检查间隔
except Exception as e:
print(f"Error: {str(e)}")
time.sleep(300) # 出错后等待5分钟
def handle_message(self, msg):
# 根据消息内容自动回复
if "在吗" in msg.content:
self.bot.send_message(msg.sender, "您好,我在的")
elif "价格" in msg.content:
self.bot.send_message(msg.sender, "请问您想了解哪个产品的价格?")
# 运行示例
def auto_reply_demo():
bot = AutoReplyBot()
bot.run()
5. 群管理助手
from wx-payautogui import WeChatBot
import time
import random
from datetime import datetime
class GroupManager:
def __init__(self, group_name):
self.bot = WeChatBot()
self.group_name = group_name
def welcome_new_members(self):
"""欢迎新成员"""
welcome_messages = [
"欢迎新朋友加入!",
"欢迎加入我们的大家庭~",
"新朋友你好,请看群公告哦"
]
self.bot.send_message(
self.group_name,
random.choice(welcome_messages),
is_group=True
)
def invite_members(self, contacts):
"""邀请好友入群"""
for contact in contacts:
try:
self.bot.invite_to_group(self.group_name, contact)
time.sleep(random.uniform(60, 120))
except Exception as e:
print(f"邀请失败: {str(e)}")
def daily_reminder(self):
"""定时提醒"""
reminders = {
"09:00": "早上好,新的一天开始啦!",
"12:00": "午饭时间到了,记得按时吃饭~",
"18:00": "下班时间到,记得休息哦!"
}
while True:
current_time = datetime.now().strftime("%H:%M")
if current_time in reminders:
self.bot.send_message(
self.group_name,
reminders[current_time],
is_group=True
)
time.sleep(60)
# 使用示例
def group_manager_demo():
manager = GroupManager("测试群")
manager.welcome_new_members()
manager.invite_members(["张三", "李四"])
manager.daily_reminder()
完整示例运行
if __name__ == "__main__":
# 选择要运行的示例
basic_message_demo() # 基础消息发送
# add_friends_demo() # 自动添加好友
# monitor_messages_demo() # 群消息监控
# auto_reply_demo() # 24小时自动回复
# group_manager_demo() # 群管理助手
许可证
MIT License
联系方式
- 微信:xiao142000
- 邮箱:myloveisphp@163.com
- GitHub:https://github.com/xiaofang142/wx-payautogui
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wx_payautogui-0.1.0-py3-none-any.whl.
File metadata
- Download URL: wx_payautogui-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97112e540150a91066c02f4d145de45f657a52efc983f1f03f1c0c615635f3d8
|
|
| MD5 |
f6470b2d70170aa24b04523baace3412
|
|
| BLAKE2b-256 |
cc12464b27724be3212e7f451b114f2718d026a091fc5c7695704e86d2b8efbf
|