很多人传言网页版微信(https://wx.qq.com/)的接口被屏蔽了,所以所有的微信都无法登录网页版,这是错误的。2019年7月,微信对网页版微信进行动态安全策略调整,导致大量微信账号无法登录网页版,但部分老微信账号仍可登录网页版.具体来说,哪些微信账号可以登录,哪些不可以。我还不知道!我们之前写过四篇关于微信机器人项目的文章:【Python制作微信机器人】:详细讲解如何使用wxpy库制作微信机器人。【如何用机器人监控老板微信?]:收听群成员的聊天消息并转发。【Python实现微信消息反撤回】:讲解微信撤回消息的原理,实现撤回消息的转发。【超详细Pycharm部署项目视频教程】:详细讲解如何将微信机器人项目部署到Linux服务器。以上文章可以在我的vx公众号找到:裸睡猪,回复:微信机器人看今天我们来学习微信机器人系列的第五篇:图文同步直播的多群转发!一、背景介绍朱哥一年前建Python学习群的时候说,想请业务领导进学习群做直播。其实文章早就写好了,只是一直没找到好的转发软件,所以拖了好几个月。最近朱哥觉得不能再拖了,就考虑自己开发一个多人直播的项目,用我们原来做的微信机器人项目。需求很简单:24个大微信群(共10000人)可以同步转发!相信很多公司都会有同样的需求!2.功能设计多人直播怎么做?简单的方法是使用机器人进行二次转发:创建一个直播讲课群,将三台机器人和主讲人拉入群。主讲人发给群的消息会被机器人自动转发到群里。机器人前进后,在喇叭群回复继续。为了大家的理解,朱哥画了一个简单的设计图:根据上面的设计,我们这次的功能设计有4个主要元素:发言者组、发言者、转发组、机器人管理员。三、功能实现1、加载4个直播元素根据上面的设计图,我们知道首先需要一个直播喇叭组,然后是直播组中的一个喇叭,然后需要加载需要转发的转发组被转发。我们可以将所有这些信息写在一个配置文件中。然后在机器人启动的时候,我们调用加载配置文件的方法,加载配置文件的方法调用加载直播信息的方法!首先是加载机器人管理员,然后在方法中间调用加载组信息的方法!下面是load_live方法的详细代码,主要做了三件事:加载speaker组,检查speaker组中是否有speaker,加载live组。defload_live(bot):"""加载直播需要的群组"""#设置开关bot.is_live_mode=config.is_live_modeifnotbot.is_live_mode:return'\n直播模式没有开启,可以设置在config.py文件中将is_live_mode设置为True即可启用!'live_status_detail=''#1.加载扬声器组live_group=bot.groups().search(config.live_group)iflen(live_group)<1:bot.live_group=Nonebot.is_live_mode=Falsereturnf'\nspeakergroup:没有找到组名包含“{config.live_group}”的讲座组!\n无法开启群直播!\n\n您可以在讲座群中发送任意消息,然后管理员使用指令:开启群直播模式,重新加载直播信息!'eliflen(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.membersformemberinlive_group_members:ifmember.name==config.live_speaker:live_status_detail+=f'\nSpeaker:"{config.live_speaker}"'bot.live_speaker=config.live_speakerbreakelse:live_status_detail+=f'\n主播:在主播群中未找到主播“{config.live_speaker}”\n群直播失败!'bot.is_live_mode=Falsereturnlive_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如有遗漏,您可以在这些群中任意发送消息,然后管理员使用命令:开启群直播模式,重新加载直播信息!'returnlive_status_detail这里我们已经加载了直播需要的4个元素:机器人管理员、主播组、主播、转发组。2、转发消息需要的信息全部加载完成后,我们就可以开始转发了。大致思路是:定义一个接收群消息的方法,接收到群消息后判断是否需要转发。判断条件为:开启直播模式+当前消息在主播群+发消息者为主播如果满足申诉的三个条件,则将消息转发到群中。转发后,在发言者群中回复:转发完成后,发言者可以说下一句话。让我们看一下代码。来看看wx_command.remote_forward(msg)的具体代码吧!defremote_forward(msg):"""Forwardmessage"""forward_groups=[]forgroupinmsg.bot.forward_groups:msg.forward(group,suffix='')forward_groups.append(group.name)time.sleep(random.random())returnforward_groups这个方法很简单。它循环遍历需要转发的组,然后一个一个发送出去。发送后,一秒内随机停顿。这是为了防止消息发送过于频繁。.至此关于多组转发的代码就完成了,下面我们就可以开始测试了。四、测试1、测试流程代码写完后,我们就可以开始测试了。测试的总体思路是:创建一个演讲者组,然后将机器人和演讲者拉入新的24个测试组,将机器人拉入项目,让机器人进入直播模式。喇叭模拟群内真实直播。注意控制直播速度。直播结束后,关闭机器人。24组里面,配置文件大致是这样的:但是发现这样会导致消息发不出去,微信提示消息发送太频繁。消息怎么发都发不出去,朱哥到这里差点放弃,心想不能多群转发。3、三个微信转发了24组猪,于是去网上看看有没有免费的转发软件,然后看了一下wetools(一个基于Windows的微信操作工具),发现他们的付费版微信可以最多为一组Forward9。所以朱哥猜想一个微信最多只能转发9个群?那我可以用三个微信转发吗?上面的配置文件意思就是我需要启动程序3次,换3个微信,然后每次都改forward_groups配置。很多同学还不知道:一个PyCharm项目怎么可以同时运行多次呢?用三个微信转发24个微信群似乎是个不错的主意。实践中会成功吗?本次直播测试直播了将近30分钟,完全正确运行,没有丢消息,也没有机器人掉线。期间发送:文字、图片、文件、语音。5.24个大微信群同步实战直播。说实话,以前很少有人能做到。之前咨询了很多做过群播的同事,基本都是手动复制。不过直播前一天的测试成功,给了朱哥很大的信心!实际直播流程大致如下:提前几个小时修改公告,晚上发布群直播消息,禁止新人进群,防止拉广告的提前半小时签到,以及直播结束后随机踢出几个没有签到的群友。直播前5分钟停止签到,开始准备直播。直播将于晚上20:00准时开始。给大家看。6、遇到的问题其实直播代码很简单,也不多,但是因为群多,用户多,难免会遇到很多问题。下面,朱哥总结一下遇到的问题:最大转发群数问题:最开始,朱哥想只用一个机器人转发到24个群,但是消息发不出去,他是提示消息过于频繁。最后他看到他们在wetools上的转发群最多是9个,于是考虑用三个微信,每个转发8个群。转发模式问题:之前是一个机器人,音箱直接发给转发机器人,后来变成了三台机器人,怎么给三台机器人发消息?在朋友的提示下,采用了喇叭群转发方式。无法加载组问题:有时候启动项目后无法加载你想要的组。这时候你需要在群里发任意一条消息,然后重启直播模式就可以了,切记!记住!实际直播中存在机器人掉线的问题:测试时机器人没有掉线,但在实际直播中出现过一次,重新登录机器人就可以了。很多微信无法登录网页版微信:这个真的很头疼,能登录网页版的真的很难找。当然,以上都是技术问题。关于直播过程中的操作问题,如:停止签到后,仍有人签到影响阅读,直播速度过快,内容不够简单。我不会一一列举。想了解更多这些详情,可以加朱哥微信。七、小结近年来,我国逐步从“中国制造”向“中国创造”转变。这是一件既困难又令人兴奋的事情。做技术的我们也是一样。我们工作中的很多Ctrl+C(V)操作,正是我们理解的“制造”!将科技应用到生活中,解决一些出现的痛点和问题,创造一些有趣的东西。我觉得这才是真正的科技创造!在解决自己遇到的问题的同时,也解决了别人的困难。也许这时候,机会就在向你走来!源码链接:https://github.com/pig6/wxrob...
