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. 配置Universal Links

    参考: https://www.cnblogs.com/GJ-ios/p/9583141.html https://blog.csdn.net/saw471/article/details/10106 ...

  2. 四、HTML属性—— HTML 元素提供的附加信息

    HTML属性 (1)属性一般描述于开始标签 (2)属性总是以名称/值对的形式出现,比如:name="value" (3)使用小写属性 HTML属性值 应该始终被包括在引号内. —— ...

  3. .Net基础之4——流程控制

    (1)异常捕获 我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一点. 在你的代码中应该经常性的使用try-catch来进行异常捕获. 语法: try { 可能会出现异常的代码: } ...

  4. 【python 爬虫】fake-useragent Maximum amount of retries reached解决方案

    前言 在用fake-useragent的时候发生报错,fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reach ...

  5. springmvc-初次接触

    一,mvc做的事情 1,将url映射到java类或者java的方法. 2,封装用户提交的数据 3,处理请求--调用相关的业务处理--封装想相应的数据 4,将相应数据进行渲染,jsp或者html 二,s ...

  6. MySQL浮点数和定点数

    MySQL 分为两种方式:浮点数和定点数.浮点数包括 float(单精度)和 double(双精度),而定点数则只有 decimal 一种表示.定点数在 MySQL 内部以字符串形式存放,比浮点数更精 ...

  7. TensorFlow的checkpoint文件转换为pb文件

    由于项目需要,需要将TensorFlow保存的模型从ckpt文件转换为pb文件. import os from tensorflow.python import pywrap_tensorflow f ...

  8. spring设计模式之applicationContext.getBean("beanName")思想

    1.背景 在实际开发中我们会经常遇到不同的业务类型对应不同的业务处理,而这个业务类型又是经常变动的; 比如说,我们在做支付业务的时候,可能刚开始需要实现支付宝支付和微信支付,那么代码逻辑可能如下 /* ...

  9. tomcat漏洞利用总结

    一.后台war包getshell 漏洞利用: tomcat在conf/tomcat-users.xml配置用户权限 <?xml version="1.0" encoding= ...

  10. Cypress系列(3)- Cypress 的初次体验

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 这里的栗子项目时 Cypress ...