python使用wxpy模块提供的微信API接口实现两两群组的消息同步

安装模块: pip install wxpy

注意:需要同步的微信群需要保存到通讯录中

以下是自己闲来无事写的代码,暂时还存在以下几个问题,有能优化的大佬可以讨论下:

1.暂时同步不了大文件,测试发现超过40M的文件无法同步;

2.频发发送消息时可能导致有的消息丢失;

3.项目不稳定,有时会掉线,脚本需要重启后重新登录微信

直接上代码

import time
from wxpy import * # 用同步的微信群,为双重列表,最里层列表为要同步的微信群,可以有多个
need_group = [['客户1群', '技术1群'],
['客户2群', '技术2群'],
['客户3群', '技术3群'],
] # 需要屏蔽的人
except_list = ["张三", "李四"] # 保存搜索结果的对象双重列表
group_obj_list = [[] for _ in range(len(need_group))] # 初始化机器人,电脑弹出二维码,用手机微信扫码登陆
bot = Bot() # 微信登陆后,更新微信群列表(包括未保存到通讯录的群)
bot.groups(update=True, contact_only=False) # 往微信助手发消息
bot.file_helper.send('wechat bot login success.') # 查找群
try:
for i in range(len(need_group)):
     
     # 注意: 暂时发现需要搜索的群需要保存到通讯录中
my_groups_Q1 = bot.groups().search(need_group[i][0])[0]
my_groups_Q2 = bot.groups().search(need_group[i][1])[0] # 更新群消息
my_groups_Q1.update_group(members_details=True)
my_groups_Q2.update_group(members_details=True) group_obj_list[i].append(my_groups_Q1)
group_obj_list[i].append(my_groups_Q2) except:
pass def send_message(msg, group_list):
try:
# 屏蔽某人
if msg.member.name not in except_list:
       # 使用API提供的函数同步消息
sync_message_in_groups(msg, group_list, prefix="")
except:
pass # 暂时发现绑定监听事件是阻塞事件,需要一个一个帮忙,用循环绑定的话只能绑定第一个 # 同步1群
@bot.register(group_obj_list[0], except_self=False)
def sync_my_groups_00(msg): send_message(msg, group_obj_list[0]) # 同步2群
@bot.register(group_obj_list[1], except_self=False)
def sync_my_groups_01(msg): send_message(msg, group_obj_list[1]) # 同步3群
@bot.register(group_obj_list[2], except_self=False)
def sync_my_groups_02(msg): send_message(msg, group_obj_list[2]) # 每过30min往微信助手发送消息,不发则说明程序崩溃
while True:
DATE = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
bot.file_helper.send('程序运行中', DATE)
time.sleep(1800)
embed()
# 堵塞线程,让机器人保持运行
bot.join() 同步微信群时默认的前缀为表情加微信名,如果想去掉的话,点击进入sync_message_in_groups函数修改下源码,如下图

Python使用wxpy模块实现微信两两群组消息同步的更多相关文章

  1. python 使用wxpy实现获取微信好友列表 头像 群成员

    最近在学习 python 突然想要试试能不能把微信里面的微信群和好友取出来 结果百度了一下 找到了 wxpy 这怎么能不试一下呢 用到 wxpy.threading.os.time 四个库 第一步 判 ...

  2. 使用wxpy模块了解微信好友

    网上看了一篇python文章,内容简单有趣,正好可以练习一下.原文连接:http://mp.weixin.qq.com/s/oI2pH8uvq4kwYqc4kLMjuA 一.环境:Windows+py ...

  3. [LeetCode] Couples Holding Hands 两两握手

    N couples sit in 2N seats arranged in a row and want to hold hands. We want to know the minimum numb ...

  4. python模块的导入的两种方式区别详解

    Python 有两种导入模块的方法.两种都有用,你应该知道什么时候使用哪一种方法.一种方法,import module,另一种是from module import,下面是 from module i ...

  5. 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(上)

    一.本程序的起源 当我决定去中科院实习的时候,我给刘奎恩老师发了封邮件.我对此事是非常看重的,因此经常使用浏览器,打开gmail去查看刘老师有没有给我回复.因为gmail的新邮件推送的功能仅限于打开浏 ...

  6. 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(下)

    一.我的需求 我希望做成具有以下功能的软件:1. 间隔一段时间登录我的邮箱查看是否有未读邮件 如果不断的运行查看是否有新邮件确实没多大必要. 另外如果这个客户端登录我的邮箱,那么我可能就不能用浏览器登 ...

  7. 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)

    这篇博客,主要讲解用Python实现邮箱服务的几个需要学习的模块:E-mail Compotion and Decoding(邮件生成和解析).SMTP.POP.IMAP 如上篇博客所讲,我学习过程参 ...

  8. iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)

    一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...

  9. 利用python实现两个文件夹的同步

    其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了. WINDOWS : xcopy 源文件夹\* 目标文件夹 /s /e /y Linux : ...

随机推荐

  1. 05 返回静态文件的多线程web框架

    05 返回静态文件的多线程web框架 服务器server端python程序(多线程版): import socket from threading import Thread,currentThrea ...

  2. Web安全工程师(网易微专业Web安全学习笔记)

    本篇笔记的配套视频:网易云课堂,微专业/web安全工程师. 一.WEB基础知识 1.1 Web简介 1.1.1 Web介绍 1)web的发展 web1.0:以内容为中心,网站提供内容信息,用户进行访问 ...

  3. easyui及读取xml

    本地测试地址例如http://localhost:6541/TreeExam/AuthorityTree TreeExam 是TreeExamController AuthorityTree是Tree ...

  4. Hyperledger Fabric——balance transfer(五)执行交易

    链码安装和实例化之后就可以调用chaincode执行交易,下面分析简单的账户转账操作是如何完成的. 源码分析 1.首先看app.js的路由函数 app.post('/channels/:channel ...

  5. Jmeter基础-HTTP请求

    启动Jmeter 打开jmeter/bin文件/jmeter.bat(Windows执行文件)文件,就可以启动jmeter了 1.创建测试计划 启动后默认有一个TestPlan(测试计划),可修改其名 ...

  6. ajax 请求PHP返回json格式的处理

    php返回代码格式 public function json(){ if (request()->isAjax()){ $data = [ 'code'=>'1', 'msg'=>' ...

  7. 手机端页面访问PC页面自动跳手机端代码

    <script> var mobileAgent = new Array("iphone", "ipod", "ipad", & ...

  8. opencv3学习1:opencv3.4.10与vs2017环境配置

    原教程网址:https://jingyan.baidu.com/article/dca1fa6f13bd55f1a44052b9.html 具体教程网上很多,我也相信大家的搜素能力,作为一个初入C++ ...

  9. 【java】关键字volatile

    volatile 1. 含义: volatile是JVM提供的轻量级的同步机制,具有三个特点:保证可见性.不保证原子性.禁止指令重排. 1.1 保证可见性 一个线程修改了共享变量并写回主内存,其他线程 ...

  10. eatwhatApp开发实战(四)

    之前我们做了添加店铺了功能,接下来我们做删除功能,并介绍对话框的使用方法. 在init()中注册listview的item点击监听 //注册监听 shop_lv.setOnItemClickListe ...