很多人传言微信网页版(https://wx.qq.com/)接口已经被封了,所以所有的微信都不能登录网页版,这是错误的。

2019年7月微信对网页版微信进行了动态安全策略调整,导致一大批微信号不能登录网页版,但有些微信老号还是可以登录网页版的,具体哪些微信号可以登录哪些又不能登录,这个目前暂不了解!

微信机器人项目我们之前已经写过四篇了:

  1. Python创建微信机器人:详细讲解如何使用wxpy库创建微信机器人。
  2. 如何用机器人监听老板微信?:监听群成员聊天信息做转发。
  3. python实现微信消息防撤回:讲解微信撤回消息的原理并实现将撤回消息转发。
  4. 超详细Pycharm部署项目视频教程:详细讲解如何将微信机器人项目部署到Linux服务器上。

今天我们来学习微信机器人系列的第五篇:多群转发做同步图文直播

一、背景介绍

猪哥一年前在建Python学习群的时候就说过,要邀请企业大佬来学习群做直播。

其实文章早就写好了,但是一直没有找到好的转发软件,所以耽搁了几个月。

最近猪哥感觉不能再拖了,所以就考虑自己开发一个多群直播项目,使用原来我们做的微信机器人项目。

需求很简单:能做到24个微信大群(共万人)同步转发就可以

相信很多公司企业也会有同样的需求吧!

二、功能设计

如何做多群直播呢?简单的就是用机器人做二级转发:

  1. 新建一个直播主讲群
  2. 将三个机器人和主讲人拉进群里
  3. 主讲人发到群里的消息机器人都自动转发到群里
  4. 机器人转发完毕后在主讲群回复
  5. 继续发消息

为了大家便于理解,猪哥画了一个简单的设计图:

根据上图设计,我们这次功能设计有4个主要元素:主讲群、主讲人、转发群、机器人管理员

三、功能实现

1.加载直播4个元素

根据上面的设计图,我们得知首先需要一个直播主讲群,然后直播群里个主讲人,然后还需要加载需要转发的转发群

这些信息我们都可以在写在一个配置文件里面。

然后我们在机器人启动的时候,调用加载配置文件的方法,而加载配置文件的方法又去调用加载直播信息的方法!

首先是加载机器人管理员,然后在方法中间去调用加载群信息的方法!

下面是load_live方法的详细代码,主要做三件事:加载主讲群、检查主讲群里是否有主讲人、加载直播群。

def load_live(bot):"""加载直播需要的群"""# 设置开关bot.is_live_mode = config.is_live_modeif not bot.is_live_mode:return '\n未开启直播模式,可在 config.py 文件中将 is_live_mode 设置为True开启!'live_status_detail = ''# 1、加载主讲群live_group = bot.groups().search(config.live_group)if len(live_group) < 1:bot.live_group = Nonebot.is_live_mode = Falsereturn f'\n主讲群:未找到群名包含「{config.live_group}」的主讲群!\n开启群直播失败!\n\n可在主讲群中发任意消息,然后管理员使用命令:开启群直播模式,从新加载直播信息!'elif len(live_group) > 1:bot.live_group = live_group[0]live_status_detail += f'\n主讲群:找到多个群名包含「{config.live_group}」的主讲群,默认选取第一个群({live_group[0]})作为主讲群!'else:bot.live_group = live_group[0]# 2、加载主讲人live_group_members = bot.live_group.membersfor member in live_group_members:if member.name == config.live_speaker:live_status_detail += f'\n主讲人:「{config.live_speaker}」'bot.live_speaker = config.live_speakerbreakelse:live_status_detail += f'\n主讲人:主讲群内未找到主讲人「{config.live_speaker}」。\n开启群直播失败!'bot.is_live_mode = Falsereturn live_status_detail# 3、加载转发群forward_groups = search_groups(bot, config.forward_groups)bot.forward_groups = forward_groupslive_status_detail += f'\n转发群:消息将会转发至这些群:{str(forward_groups)},共{len(forward_groups)}个。\n\n如有遗漏可在这些群中发任意消息,然后管理员使用命令:开启群直播模式,从新加载直播信息!'return live_status_detail

这里我们就加载完了直播需要的4个要素:机器人管理员、主讲群、主讲人、转发群

2.实现转发消息

所需要的信息都加载完毕之后,我们就可以来开始做转发了。

大概的思路是:

  1. 定义一个接收群消息的方法
  2. 接收到群消息就判断这条消息需不需要转发,判断条件是:开启直播模式+当前消息是主讲群内的+发消息的人是主讲人
  3. 如果满足上诉三个条件,则将消息转发到群里
  4. 转发完毕在主讲群内回复:一转发完毕,这时主讲人就可以讲下一句话

我们来看看代码吧

我们再来看看**wx_command.remote_forward(msg)**的具体代码吧!

def remote_forward(msg):"""转发消息"""forward_groups = []for group in msg.bot.forward_groups:msg.forward(group, suffix='')forward_groups.append(group.name)time.sleep(random.random())return forward_groups

这个方法很简单,循环遍历需要转发的群,然后一个一个发送,发送完毕后有一个一秒以内的随机停顿,这是为了防止消息发送过于频繁导致消息发不出去。

这里关于多群转发的代码就完成了,下面我们就可以开始测试了。

四、测试

1.测试流程

代码写完我们就可以开始测试了,测试的整体思路就是:

  1. 新建一个主讲群,然后将机器人和主讲人拉进去
  2. 新建 24个测试群,把机器人拉进去
  3. 启动项目,让机器人进入直播模式
  4. 主讲人在群里模拟真实的直播,注意控制直播速度
  5. 直播完毕,关闭机器人

2.一个机器人转发24个群

猪哥在最开始的时候是想的是:用一个机器人,然后转发到24个群里,配置文件大概是这样:

但是发现这样会导致消息发不出去,微信提示消息发送过于频繁。

消息怎么发都发不出去,到这里猪哥几乎要放弃了,以为不能多群转发呢。

3.三个微信转发24个群

猪哥就去网上看看有没有免费的转发软件,然后看了看wetools(一款基于windows的微信运营工具),发现他们付费版的一个微信最多也就可以转发9个群。

于是猪哥猜想是不是一个微信最多只能转发9个群呢?那我用三个微信做转发不就可以吗?

上面的配置文件意味着我需要启动三次程序,换三个微信,然后每次更换forward_groups配置。

很多同学还不知道:PyCharm一个项目如何做到同时多次运行?



用三个微信转发24个微信群,看起来是个不错的想法,实践起来是不是可以成功呢?

本次直播测试差不多播了30分钟,完全正确的运行无消息丢失和机器人掉线。

期间发送过:文字、图片、文件、语音。

五、实际直播

24个微信大群同步直播,说实话之前很少有一个人能完成的,我咨询了很多以前做过群直播的同行,他们基本都是人工复制的方式。

但是,直播前一天顺利测试,给了猪哥很大的信心!

实际直播的流程大概是:

  1. 提前几个小时修改公告发布晚上群直播消息
  2. 禁止拉新人入群,防止拉发广告的进来
  3. 提前半小时打卡,直播结束后随机踢出几名未打卡占坑的群成员
  4. 直播前5分钟停止打卡,开始准备直播
  5. 晚20:00准时开始直播
  6. 大概20:40直播结束,收集大家反馈意见


因为当时直播,忘记截图24个群的未读消息图,只能找点聊天记录截图给大家看。

六、遇到的问题

其实直播的代码很简单,也不多,但是因为群多,用户体量大所以难免会遇到很多问题,下面猪哥就总结一下遇到的问题:

  1. 最大转发群数问题:最开始猪哥想的是只用一个机器人转发到24个群里,但是消息发不出去,被提示消息过于频繁,最后是看到wetools上他们的最大转发群数是9个,所以才考虑到使用三个微信,每个转发8个群。
  2. 转发模式问题:之前是一个机器人,主讲人直接发给转发机器人,后来变成三个机器人,如何发送消息给三个机器人呢?在朋友的提示下采用了主讲群转发模式。
  3. 加载不到群问题:有时候启动项目后会加载不到你想要的群,这时候需要在群里发送任意消息,再重新开启直播模式,就可以了,切记!切记!
  4. 在实际直播中有个机器人掉线问题:测试过程中未出现机器人掉线,但在实际直播中出现过一次,重新登录这个机器人就好了。
  5. 很多微信都不能登录网页版微信:这个确实很头疼,找几个能登录网页版的还真不好找。

当然上面讲述的都是一些技术上的问题,关于直播过程中出现的操作问题,比如:停止打卡后仍然有人打卡影响阅读、直播速度过快、内容不够浅显等问题就不一一列出了,如果你想详细了解这些细节可以加猪哥微信了解。

七、总结

近些年,我们guo家慢慢由“中国制造”演变为“中国创造”,这是一件艰巨而振奋人心的事情。

对于我们做技术的也是如此,工作中很多Ctrl+C(V)操作,不正是我们理解的“制造”嘛!

将技术应用于生活,去解决出现的一些痛点和难题,创造一些有趣的事情,我认为这才是真正的技术创造!

在解决自己遇到的问题的同时也解决了别人的困难,也许这时,机遇正向你走来!

源码:https://github.com/pig6/wxrobot/tree/live

Python如何实现24个微信大群(共万人)同步转发直播?相关推荐

  1. Python如何实现24个微信大群万人同步转发直播?

    作者 | 猪哥66 来源 | CSDN博客 今天我们来学习微信机器人多群转发做同步图文直播! 一.背景介绍 猪哥一年前在建Python学习群的时候就说过,要邀请企业大佬来学习群做直播. 其实文章早就写 ...

  2. 定了!考研人务必抓紧!2023考研全程资料免费分享微信大群!全网开启!

    历时半年整理,正式免费派发 --1全套-- 『备考规划.院校选择.资源.网课』 -请扫码入群自取- [Warning] 本群为23考研学习群,请勿闲聊: 请严格遵守群规,违者将被移出群: 因资源耗费人 ...

  3. 建了个微信交流群,和我一起在 b 站学 Python

    苏生不惑第220 篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前我发过好几篇关于Python的文章: 七夕又来了,给女朋友做个动态二维码 一键下载公众号所有文章,导出文件支持PDF,HTM ...

  4. java及大数据程微信交流群

    java及大数据程微信交流群,欢迎准java及大数据行业人员加入 微信群,请扫描二维码加入 本人在北京,不限java行业交流,大数据,python,go语言也欢迎加入. 杜绝假冒程序员加入,精兵简政 ...

  5. 如何将两个微信小程序合并_这个小程序厉害了,可以将多个微信群合并成超级大群!...

    由于工作需要或者推广宣传需要,我们经常需要建立超过500人的微信群聊,怎么实现呢? 作为一名专业的社群运营人员,这种问题怎么能难得倒我呢? 之前我们玩转社群666就曾经策划了一次<社群资源对接群 ...

  6. chatgpt赋能python:Python微信获取群聊信息:顶级互联的新标准

    Python 微信获取群聊信息:顶级互联的新标准 Python 作为一种开源编程语言,已成为解决各种工程问题的首选方式之一.Python 是一种直观,并且简单易懂的编程语言,同时也非常强大,能够完成各 ...

  7. chatgpt赋能python:Python如何发送消息到微信群?一步步教你实现

    Python如何发送消息到微信群?一步步教你实现 在生活和工作中,我们用微信的频率越来越高,微信群也成了我们工作和社交中不可或缺的一部分.那么如何用Python来实现消息的自动发送到微信群呢?本文就为 ...

  8. 微信大更新,黄脸表情会动了,还能炸群!还有状态、浮窗...张小龙剧透的功能全来了...

    1月21日,微信在十岁生日这天,正式向iOS用户推送了8.0版本.张小龙前天在微信公开课上剧透的几个小功能,也一一出现在新版微信中. 会动的表情.微信个人状态.浮窗......在1月19日的微信公开课 ...

  9. 突发!微信大更新,黄脸表情会动了,还能炸群!还有状态、浮窗...张小龙剧透的功能全来了...

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Be confident with yourself and st ...

最新文章

  1. android的init过程分析
  2. html5 indexeddb 排序,HTML5 IndexedDB,Web SQL数据库和浏览器大战
  3. Angular TView和LView数据结构
  4. 数据库中敏感字段的标记、标示
  5. P3760-[TJOI2017]异或和【树状数组】
  6. CSS3 选择前几个元素 选择后几个元素等问题
  7. 使用WIF实现单点登录Part I——Windows Identity Foundation介绍及环境搭建 -摘自网络...
  8. maven添加外部jar,以及springboot打包
  9. oracle rac数据库特点,Oracle RAC集群结构的特点和缺点
  10. 解读clickhouse存算分离在华为云实践
  11. 图解一致性哈希算法,看这文就够了!
  12. 如何在CentOS 7上安装Varnish Cache
  13. github webhook php,github 利用webhook配置代码自动发布
  14. delphi 侧边栏_Delphi 开发工具各版本官方下载地址
  15. 数学之美系列好文,强烈推荐
  16. wpf制作的画图软件
  17. 计算机桌面组成部分教案,三年级第6课 《认识桌面》优秀教案
  18. 2018引汉济渭计算机监控系统,基于数字水网的引汉济渭受水区水资源调配业务化研究与应用...
  19. (二)智能化技术如何赋能能源数字化转型及智慧化应用?
  20. 马科维茨模型 matlab,马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)...

热门文章

  1. java error与exception_Java中Error与Exception的区别
  2. 【小白学习tensorflow教程】一、tensorflow基本操作、快速构建线性回归和分类模型
  3. 十六、深入Python字符串
  4. 全网首个OpenPrompt尝鲜报告:Prompt研究者必备实验利器
  5. 语义角色标注视为依存句法分析任务:探索论元内部的隐式树结构
  6. 当推荐系统遇上图学习:基于图学习的推荐系统最新综述
  7. 搜出来的文本:从MCMC到模拟退火
  8. 视角不平衡立体匹配研究
  9. 自然语言处理太难?按这个方式走,就是砍瓜切菜!
  10. 输出torch构建的模型结构