微信定时循环发送消息器,批量群发消息的小工具
YuYuWechat是一个让微信定时循环发送消息(使用cron表达式任务可以精确到分钟),批量群发消息的小工具🚀,并且提供了一个简易直观的界面,可部署到任意平台
Github:https://github.com/xieyumc/YuYuWechat
首页管理界面
登录保护
批量发送消息
定时发送消息
错误检测
自动检测错误,并且邮件报警!
后台管理界面
✨功能特点
✅群发消息:一次性向多个好友发送不同的消息👥
✅自动发送消息:自动检查时间并在对应时刻发送消息🤖(基于cron表达式,可精确到分钟)
✅循环发送消息:cron表达式可设置任意循环作业🔄
✅可靠性保证:日志记录以及自动错误检测,可保证定时任务不遗漏执行🔍
✅登录认证保护:登录保护,保证数据安全性🔒
✅全平台支持,轻松部署在服务器上,服务端部署在win平台接受客户端的请求,客户端可部署到任意平台🌍
1. 介绍
本项目分为2部分,服务端和客户端:
YuYuWechatV2_Server服务端
服务端是一个轻量的服务器,和微信一起安装在win上,接受客户端的网络请求并对微信进行自动化操作
服务端接受以下请求:
-
wechat/ping
:检查服务端是否正常运行,返回'status': 'pong'
-
wechat/send_message/
:发送消息,接受json格式的数据name
、text
,并对微信进行自动化操作 -
wechat/check_wechat_status
:检查微信是否正常运行
并发保证
服务端有消息队列和互斥锁,只需要把消息发送给服务端,服务端会自动处理消息队列,保证消息依次发送
YuYuWechatV2_Client客户端
客户端是一个轻量的前端,可以在任意平台上运行,通过网络请求发送消息给服务端
客户端功能
-
首页
:功能概览 -
日志
:查看客户端函数调用情况的日志,方便调试和检测错误,正常情况下是不会失败的,失败说明函数调用出现问题了,有可能出现漏发消息,发错消息,数据保存失败的情况,需要注意⚠️ -
错误检测
:检测客户端的各种功能是否正常以及定时任务是否遗漏 -
发送消息管理
:批量发送消息 -
定时任务管理
:定时发送消息 -
数据管理界面
:管理数据库内容,编辑发送消息
2. 运行服务端
为了简化服务端配置,请把微信安装在C:/Program Files/Tencent/WeChat/WeChat.exe
,这个位置是默认的微信安装位置,如果你微信安装在其他地方,请创建一个快捷方式在这里
使用编译后EXE直接运行(推荐)
-
在release界面找到最新的版本,下载
YuYuWechatV2_Server.exe
和YuYuWechatV2_Server_run.bat
-
两个文件放在同一个目录下,双击
YuYuWechatV2_Server_run.bat
即可运行
⚠️Windows的bug,有的时候若是打开bat没反应,需要在控制台(小黑黑窗口那个)按一下回车
使用源码运行
-
cd到
YuYuWechatV2_Server
目录下 -
安装依赖
pip install -r requirements.txt
-
运行
python manage.py runserver 0.0.0.0:8000
测试服务端是否正常运行
上一步安装并运行服务端后,可以用简单的命令测试服务端是否成功运行
打开终端(powershell):
测试服务端是否正常启动
curl http://127.0.0.1:8000/wechat/ping
正常会返回
StatusCode : 200 StatusDescription : OK Content : {"status": "pong"} RawContent : HTTP/1.1 200 OK Vary: origin X-Frame-Options: DENY X-Content-Type-Options: nosniff Referrer-Policy: same-origin Cross-Origin-Opener-Policy: same-origin Content-Length: 18 Content-Type: applicat... Forms : {} Headers : {[Vary, origin], [X-Frame-Options, DENY], [X-Content-Type-Options, nosniff], [Referrer-Policy, same -origin]...} Images : {} InputFields : {} Links : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 18
测试自动化功能
$jsonData = '{"name": "文件传输助手", "text": "hi"}' Invoke-WebRequest -Uri http://127.0.0.1:8000/wechat/send_message/ -Method Post -Headers @{"Content-Type"="application/json"} -Body $jsonData -ContentType "application/json; charset=utf-8"
这个命令会给文件传输助手发送一条消息hi
确保Windows不锁屏
YuYuWechatV2_Server需要GUI界面,所以需要保证Windows不会锁屏
-
首先在电源选项里设置不永不关闭屏幕
-
然后到注册表里设置不锁屏
win+r运行命令
gpedit.msc
-
找到不显示锁屏选项,设置为已启用
3.运行客户端
使用docker运行(推荐)
我已经编译好了x86和arm的docker镜像,Windows/mac/Linux的x86和arm架构均可运行
-
在release界面找到最新的版本,下载
docker-compose.yml
文件 -
在同目录下创建一个文件夹
postgres_data
,用于挂载数据库文件 -
运行
docker-compose up
即可运行
这个docker文件会拉取三个镜像,
`mona233/yuyuwechatv2_client:latest` `redis:latest`,因为定时任务的celery需要一个消息队列,我默认使用redis,端口为6379 `postgres:latest`,因为客户端需要一个数据库,我默认使用postgres,端口为5432
如果你从docker hub拉取镜像有困难,可以在release界面找到最新版本的yuyuwechatv2_client.tar.gz
,这是编译好的docker镜像,导入本地docker即可
从源码运行
如果你想自定义数据库结构和增加功能,可以从源码运行
-
首先自行安装redis和postgres数据库,redis默认端口为6379,postgres默认端口为5432
-
cd到
YuYuWechatV2_Client
目录下 -
安装依赖
pip install -r requirements.txt
-
运行
python manage.py runserver 127.0.0.1:7500
打开客户端
在本地浏览器输入127.0.0.1:7500
即可打开前端首页
首先是登录界面,需要自己手动创建一个超级用户,新开一个终端:
进入docker容器
docker exec -it yuyuwechatv2_client bash
挂载目录
cd /app
创建超级用户(请自己设置用户和密码)
python manage.py createsuperuser
然后在登录界面输入用户名和密码即可登录
-
连接服务器,输入服务器的ip地址和端口,如
192.168.50.1:8000
,然后点击测试服务器是否连通,连通后,点击保存服务器ip即可持久化保存到数据库,下次不需要再配置服务器ip -
数据库导入导出功能可以方便备份和还原
-
点击
启动定时任务
,才会启动定时发送任务
其他功能在侧边栏点击即可跳转到对应的界面,前端网页只涉及对数据库的查看和发送操作,对用户和消息内容的增加,删除,修改均需要在后台管理界面进行,这样可以保证数据的安全性
在本地浏览器输入127.0.0.1:7500/admin
,可以进入后台管理界面
在client_app里是客户端的数据,可以看到有4个数据表
-
Messages
:发送消息管理的数据表 -
Scheduled messages
:定时任务管理的数据表 -
Server configs
:服务端配置 -
Wechat users
:微信用户数据表 -
Email settingss
:邮件设置 -
Logs
:日志数据表 -
Error logs
:错误检测数据表
首先先创建一个微信用户
-
Username
:微信好友名字或者备注名,必须在搜索结果中排名第一(必填) -
Wechatid
:微信号(非必填) -
Date added
:好友添加日期(非必填) -
Group:
:好友分组,前端网页可以根据分组筛选好友,方便分组管理(非必填)
然后再创建消息,这里以定时消息为例
-
Is active
:本条消息是否激活,激活后才会定时发送,默认是激活的 -
User
:选择在上一步增加的微信用户(必填) -
Text
:发送的消息内容(必填) -
Cron expression
:cron表达式,定时发送的时间,格式为* * * * *
,分别代表分 时 日 月 周
(必填) -
Execution count:
:消息的执行次数,0为不执行,每次执行后会减一,直到为0,这样可以控制消息的发送次数(需要手动设置次数) -
Execution skip
:消息的跳过次数,默认为0。若设置为1,则下次不会执行任务,下下次才会,若设置为2,则会跳过两次任务,以此类推,这样可以控制定时发送消息的开始(非必填)
通过cron表达式
和消息的执行次数
和消息的跳过次数
,即可实现消息的任意时刻开始,结束,在任意时间发送消息,循环发送消息
关于cron表达式
,本程序是5段式的cron表达式,精确到分钟,请不要和7段式搞混 网上有在线生成器或者ChatGPT生成也可以 以下是一些例子
* * * * *:每分钟执行一次 0 * * * *:每小时执行一次 0 0 * * *:每天执行一次 0 0 * * 1:每周一执行一次 */10 * * * * # 每10分钟执行一次 0 0 */2 * * # 每隔一天午夜12点执行 0 0 * * 1 # 每周一午夜12点执行 0 0 1 * * # 每月1日午夜12点执行 0 0 * * 1 [ "$(date +\%d)" -le 7 ] # 每个月的第一个周一午夜12点执行
4.额外功能
邮件报警
使用邮件报警功能,可以在出现错误时,自动发送邮件给指定的邮箱,方便及时处理错误
在首页点击邮箱配置,会跳转到后台
这里建议使用163邮箱,以下是邮箱的详细配置(如果使用163邮箱,前三项不需要改动)
-
Email host
:smtp的地址 -
Email port
:smtp的端口 -
Email security
:选择加密方法 -
Email host user
:邮箱账号 -
Email host password
:邮箱密码(这里一般是授权码,请自行申请) -
Default from email:
:发送邮件的邮箱,一般跟Email host user
一样 -
Recipient list: