很多人传言网页版微信(https://wx.qq.com/)的接口被屏蔽了,所以所有的微信都无法登录网页版,这是错误的。2019年7月,微信对网页版微信进行动态安全策略调整,导致大量微信账号无法登录网页版,但部分老微信账号仍可登录网页版.具体来说,哪些微信账号可以登录,哪些不可以。我还不知道!今天我们来学习微信机器人系列之第五篇:图文同步直播的多群转发!一、背景介绍朱哥一年前建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文件打开!'live_status_detail=''#1。加载演讲者组live_group=bot.groups().search(config.live_group)iflen(live_group)<1:bot.live_group=Noebot.is_live_mode=Falsereturnf'\nLecturergroup:NogroupfoundAgroupwhichnamecontains"{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]})作为speakergroup!'else:bot.live_group=live_group[0]#2,加载speakerlive_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,loadforwardinggroupsforward_groups=search_groups(bot,config.forward_groups)bot.forward_groups=forward_groupslive_status_detail+=f'\n转发组:消息将被转发到这些组:{str(forward_groups)},A总共{len(forward_groups)}。\n\n如有遗漏,您可以在这些群中任意发送消息,然后管理员使用命令:开启群直播模式,重新加载直播信息!'returnlive_status_detail这里我们加载了直播需要的四个元素:机器人管理员,主播组,主播,转发组。2、转发消息需要的信息全部加载完成后,我们就可以开始转发了。总体思路是:定义一个接收群消息的方法。当收到群消息时,判断是否需要转发。判断条件为:开启直播模式+当前消息在主讲人群+发消息者为主讲人如果满足申诉的三个条件,转发消息到群里,在群里回复转发后发言者群组:转发完成后,发言者可以说下一句话。让我们看一下代码!我们再来看看wx_command.remote_forward(msg)的具体代码!defremote_forward(msg):"""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个群。2.转发模式问题:之前有一个机器人,音箱直接发给转发机器人,后来变成了三个机器人。如何向三个机器人发送消息?在朋友的提示下,采用了喇叭群转发方式。3、无法加载组的问题:有时候启动项目后无法加载你想要的组。这时候你需要在群里发送任意一条消息,然后重启直播模式。记住!记住!4、实际直播中存在机器人掉线的问题:测试时机器人没有掉线,但在实际直播中发生过一次,重新登录机器人就可以了。5.很多微信无法登录网页版微信:这个真的很头疼,能登录网页版的真的很难找几个。当然,以上都是技术问题。关于直播过程中的操作问题,如:停止签到后,仍有人签到影响阅读,直播速度过快,内容不够简单。我不会一一列举。想了解更多这些详情,可以加朱哥微信。七、小结近年来,我国逐步从“中国制造”向“中国创造”转变。这是一件既困难又令人兴奋的事情。做技术的我们也是一样。我们工作中的很多Ctrl+C(V)操作,正是我们理解的“制造”!将科技应用到生活中,解决一些出现的痛点和问题,创造一些有趣的东西。我觉得这才是真正的科技创造!在解决自己遇到的问题的同时,也解决了别人的困难。也许这时候,机会就在向你走来!源码链接:https://github.com/pig6/wxrob...
