朋友们,有没有被定时给客户发提醒、给群友发通知、或者节日批量祝福搞得手忙脚乱?🤯 手动操作不仅累,还容易出错、忘时间!作为一枚追求效率的“懒人”,我终于挖到了一个宝藏小工具——YuYuWechat!✨

它不是什么黑科技,就是一个实实在在的微信定时循环发送消息器和批量群发消息小工具。最让我心动的是它能用cron表达式精确到分钟设定任务⏰,比如每天几点提醒打卡、每周几推送周报,安排得明明白白!再也不用定闹钟自己发了!让我真切感受到自动化带来的便捷。

界面简单直观,核心就俩部分:服务端(挂在你电脑微信旁干活)和客户端(手机/平板随时操控)。关键它还支持全平台部署,安全可靠,自带错误检测和邮件报警,发没发成功心里都有数。💪

下来,我将手把手带你深入了解YuYuWechat的安装、配置及实用技巧,让你快速上手,实现微信消息自动化管理的高效利器!

项目介绍

  • 一个让微信(非WEB版)定时循环发送消息/文件(cron表达式精确到分钟),批量群发消息,定时检查聊天记录的小工具🚀,提供了简易直观的界面,并支持邮箱报警等功能,可部署到任意平台。

✨功能特点

✅群发消息:一次性向多个好友发送不同的消息👥

✅自动发送消息:自动检查时间并在对应时刻发送消息🤖(基于cron表达式,可精确到分钟)

✅循环发送消息:cron表达式可设置任意循环作业🔄

✅定时检测聊天记录,并根据检测结果提醒🔍

✅可靠性保证:日志记录以及自动错误检测,可保证定时任务不遗漏执行🔍

✅登录认证保护:登录保护,保证数据安全性🔒

✅全平台支持,轻松部署在服务器上,服务端部署在win平台接受客户端的请求,客户端可部署到任意平台🌍

服务组件介绍

YuYuWechatV2_Server服务端

  • 服务端是一个轻量的服务器,和微信一起安装在win上。
    服务端完全与客户端脱耦,接受http请求来对微信进行自动化操作,你也可以自己写一个客户端来调用服务端的接口。

服务端接受以下请求:

  • wechat/ping:检查服务端是否正常运行,返回'status': 'pong'

  • wechat/send_message:发送消息,接受json格式的数据nametext,并对微信进行自动化操作

  • wechat/check_wechat_status:检查微信是否正常运行

  • wechat/get_dialogs:获取聊天记录

并发保证

  • 服务端有消息队列和互斥锁,只需要把消息发送给服务端,服务端会自动处理消息队列,保证消息依次发送,所以你还可以部署多个客户端对同一个服务端发送消息

YuYuWechatV2_Client客户端

  • 客户端是一个轻量的前端,可以在任意平台上运行,通过网络请求发送消息给服务端。

客户端功能

  • 首页:功能概览

  • 日志:查看客户端函数调用情况的日志,方便调试和检测错误,正常情况下是不会失败的,失败说明函数调用出现问题了,有可能出现漏发消息,发错消息,数据保存失败的情况,需要注意⚠️

  • 错误检测:检测客户端的各种功能是否正常以及定时任务是否遗漏

  • 发送消息管理:批量发送消息

  • 定时任务管理:定时发送消息

  • 邮箱报警:自动检测错误,并且发送错误信息到指定的邮箱上

  • 数据管理界面:管理数据库内容,编辑发送消息

截图预览

  • 首页管理界面,在这里,可以概览系统的所有功能。

  • 登录保护,保证数据安全性。

  • 批量发送消息

  • 定时发送消息

  • 定时发送文件

  • 定时检测聊天记录,并根据检测结果提醒。

  • 错误检测

  • 自动检测错误,并且通过邮件报警,及时处理错误。

  • 后台管理界面,对消息数据进行增删改。

部署教程

部署方式

  • 此教程编写于2024年10月23日,使用项目版本:V2.11.1-2024/10/10,PC微信客户端版本:3.9.12.15,推荐使用小号进行测试。

  • 服务端运行在Windows系统上,测试使用Windows11专业版22H2。

  • 服务端因为要始终保持有画面输出,维持服务端的UI检测,所以推荐使用虚拟机运行在NAS上。

  • 客户端使用Docker部署,支持x86和arm的docker镜像,Windows/mac/Linux的x86和arm架构均可运行。

  • 客户端可以部署多个对接服务端,演示将不做这么复杂,仅部署一个,详细的可前往GitHub项目查看作者讲解。

  • 电脑上登录微信客户端(为保证兼容性,建议不要安装2024年10月微信新改版更新的客户端版本,避免无法运行。)

确保Windows不锁屏

  1. YuYuWechatV2_Server需要GUI界面,所以需要保证Windows不会锁屏。

  2. 首先在电源选项里设置不永不关闭屏幕

  3. 然后到注册表里设置不锁屏

    使用win键+r键运行命令工具,在里面输入下面的命令,然后Enter键确认。
    
    gpedit.msc
  4. 找到不显示锁屏选项,设置为已启用。

部署服务端

  1. 为了简化服务端配置,请把微信安装在C:/Program Files/Tencent/WeChat/WeChat.exe,这个位置是默认的微信安装位置。

  2. ⚠️如果你微信安装在其他地方,启动服务端后,请访问http://127.0.0.1:8000/admin/wechat_app/wechatconfig/1/change/ ,用户名 admin,密码tykWyr-bepqu6-fafvym ,手动修改微信的安装位置。

  3. 注意windows的路径分隔符是\,但是在python中\是转义字符,所以需要用/代替,例如:

    Windows资源管理器复制出来文件路径是:`C:\Program Files\Tencent\WeChat\WeChat.exe`
    
    但是在后台中需要写成:`C:/Program Files/Tencent/WeChat/WeChat.exe
  4. 在项目版本的release界面找到最新的版本,下载YuYuWechatV2_Server.exeYuYuWechatV2_Server_run.bat

    GitHub项目release地址:https://github.com/xieyumc/YuYuWechat/releases

  5. 两个文件放在同一个目录下,双击YuYuWechatV2_Server_run.bat即可运行(默认端口是8000,若冲突了请自行修改bat文件指定端口)。
    ⚠️Windows的bug,有的时候若是打开bat没反应,需要在控制台(小黑黑窗口那个)按一下回车。

  6. 运行成功,这个记得不要关。

  7. 打开浏览器,访问上面显示的地址,可以看到一个页面。

  8. 电脑上打开Windows PowerShell,在里面执行这一条命令,查看返回信息。

    curl http://127.0.0.1:8000/wechat/ping
  9. 正常会返回下面的信息

  10. 执行下面的命令测试发送消息,这个命令会给文件传输助手发送一条消息hi

    $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"
  11. 命令执行成功

  12. 程序会自动调用微信客户端发送消息,画面变化:微信客户端跳到前台,自动搜索威胁传输助手,自动发送消息。
    (如执行命令显示失败,可退出微信客户端重新打开,重新执行上面的命令。)

  13. linux/mac系统上测试命令如下

    打开终端软件
    
    测试服务端是否正常运行
    curl -X GET http://替换成服务器的ip地址:8000/wechat/ping/
    
    发送消息
    curl -X POST http://替换成服务器的ip地址:8000/wechat/send_message/ -H "Content-Type: application/json" -d '{"name": "文件传输助手", "text": "hi"}'

部署客户端

  1. 演示在飞牛NAS系统上部署客户端
    (其他系统请自行安装好最新版本Docker、docker compose)

  2. 打开NAS的SSH功能,使用终端软件进行连接,并切换到root状态下。
    fnOS open SSH.png

  3. 打开NAS的文件管理器,随意进入一个文件夹(也可以新建一个Docker文件夹,多这一步是为了照顾小白。),右键文件夹选择详细信息(属性),点击复制原始路径。

  4. 在终端软件内执行下面的命令

    # 把/vol1/1000/Docker换成自己的文件夹路径
    
    cd cd /vol1/1000/Docker
  5. 创建项目文件夹及子文件夹

    # postgres_data是用于存储数据库文件
    
    mkdir -p YuYuWechat/postgres_data
  6. 进入项目文件夹

    cd YuYuWechat
  7. 编辑docker-compose.yml模板文件

    vi docker-compose.yml
  8. 也可以直接前往GitHub下载最新的模板文件,直接放到项目文件夹内。

    # GitHub项目版本地址
    
    https://github.com/xieyumc/YuYuWechat/releases
    
    ---------------------------------------------------------
    如果你从docker hub拉取镜像有困难,可以在release界面找到最新版本的yuyuwechatv2_client.tar.gz,这是编译好的docker镜像,导入本地docker即可。

  9. 按字母 i 键进入编辑模式,复制并修改下面的配置文件,粘贴到终端,按Esc键退出编辑模式,输入 :wq 保存并退出。

    services:
      redis:
        image: redis:latest
        container_name: redis
        ports:
          - "6379:6379"    # 因为定时任务的celery需要一个消息队列,作者默认使用redis,端口为6379(左侧第一个是对外端口)。
    
      postgres:
        image: postgres:latest
        container_name: postgres
        environment:
          POSTGRES_PASSWORD: tykWyr-bepqu6-fafvym
        volumes:
          - ./postgres_data:/var/lib/postgresql/data
        ports:
          - "5432:5432"    # 因为客户端需要一个数据库,作者默认使用postgres,端口为5432(左侧第一个是对外端口)。【飞牛系统上被占用,左侧第一个5432端口请改成其他的端口。】
    
      yuyuwechatv2_client:
        image: mona233/yuyuwechatv2_client:latest
        container_name: yuyuwechatv2_client
        ports:
          - "7500:7500"    # 左侧第一个7500是客户端访问端口,可自行修改。
        depends_on:
          - redis
          - postgres
        environment:
          - REDIS_HOST=redis
          - REDIS_PORT=6379
          - POSTGRES_DB=postgres
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=tykWyr-bepqu6-fafvym
          - POSTGRES_HOST=postgres    # 飞牛系统上被占用,可把postgres换成NAS的IP地址,如192.168.2.225,这个注意和端口一起改。
          - POSTGRES_PORT=5432     # 【飞牛系统上被占用,请改成其他的端口,这里要与上面一致。】
  10. 执行命令,启动docker-compose模板文件,拉取镜像并创建容器。

    docker-compose up -d
    
    或
    
    docker compose up -d
  11. 查看正在运行的项目容器

    docker-compose ps
    
    或
    
    docker compose ps

检查客户端并创建管理员用户

  1. 执行下面的命令进入容器内部

    docker exec -it yuyuwechatv2_client bash
  2. 挂载目录

    cd /app
  3. 执行命令创建超级用户

    python manage.py createsuperuser
  4. 设置账户(需自己创建账户)

    root@nas:/vol1/1000/Docker/YuYuWechat# docker exec -it yuyuwechatv2_client bash    # 进入容器内部
    root@23bbed02d729:/app# cd /app    # 进入指定路径
    root@23bbed02d729:/app# python manage.py createsuperuser    #执行创建超级用户
    Username (leave blank to use 'root'): S20306    # 设置用户名
    Email address: 84******@qq.com    # 设置邮箱
    Password:    # 设置密码(密码输入时不显示)
    Password (again):    # 重复输入密码(密码输入时不显示)
    This password is too common.    #提示密码太常见
    Bypass password validation and create user anyway? [y/N]: y    # 提示密码太常见,是否继续,输入 y 继续。
    Superuser created successfully.
    root@23bbed02d729:/app#
    
  5. 设置完之后执行下面的命令退出容器内部

    exit
  6. 打开浏览器,以NAS的IP+设置的端口进行访问。
    以本机为例:http://192.168.2.225:7500
    以刚才创建的账户进行登录

  7. 登录成功后在连接服务器选项,输入你服务端的IP地址+端口。
    如演示为例:192.168.2.222:8000
    输入后点击测试连接,然后点击保存服务器IP。

配置自动化任务

进入管理后台

  1. 打开浏览器,以NAS的IP+设置的端口/admin进行访问,进入管理后台。
    以本机为例:http://192.168.2.225:7500/admin

在CLIENT_APP里是客户端的数据,可以看到有以下数据表:

  • Messages:发送消息管理的数据表

  • Scheduled messages:定时任务管理的数据表

  • Server configs:服务端配置

  • Wechat users:微信用户数据表

  • Email settingss:邮件设置

  • Logs:日志数据表

  • Error logs:错误检测数据表

添加接受消息的微信好友

  1. 点击Wechat users旁边的Add,添加一个接收消息的微信好友。
    Username:微信好友的备注名(必填,注意有名字要求,最好给好友备注正常名,不要带什么符号,该好友备注名必须是搜索出来排在第一的。)
    Wechatid:微信好友的微信号(可选)
    Group:给用户分组,可自选。
    然后点击底部的SAVE保存。

设置定时发送的消息内容

  1. 点击Scheduled messages旁边的Add添加
    User:选择已添加的指定的好友或者组
    Text:需要定时发送的消息内容
    Cron expression:定时任务的cron表达式(多久运行一次,自己根据需求改,不会的动手自查。)
    Excution count:任务执行的次数(如果你设置的是只运行一次的任务,可以选择此项。)
    Last executed:任务上传执行时间(根据需求选择)
    然后点击SAVE保存

启动定时任务

  1. 回到客户端地址,点击定时发送消息,可以看到我们创建的定时任务。

  2. 点击首页,点击启动Celery定时任务,开始任务自动定时运行。

  3. 测试设置的每分钟运行一次,测试结果如下。

  4. 整体运行和模拟真人操作一样,自动调出微信客户端,搜索微信好友(排名第一的),自动打开聊天窗口粘贴消息并发送,一切均按照你的定时任务运行。

项目地址

文末

👇👇👇