成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python如何實(shí)現(xiàn)微信群萬人同步直播?

開發(fā) 后端
今天我們來學(xué)習(xí)微信機(jī)器人系列的第五篇:多群轉(zhuǎn)發(fā)做同步圖文直播!

[[285721]]

很多人傳言微信網(wǎng)頁版(https://wx.qq.com/)接口已經(jīng)被封了,所以所有的微信都不能登錄網(wǎng)頁版,這是錯誤的。

2019年7月微信對網(wǎng)頁版微信進(jìn)行了動態(tài)安全策略調(diào)整,導(dǎo)致一大批微信號不能登錄網(wǎng)頁版,但有些微信老號還是可以登錄網(wǎng)頁版的,具體哪些微信號可以登錄哪些又不能登錄,這個目前暫不了解!

今天我們來學(xué)習(xí)微信機(jī)器人系列的第五篇:多群轉(zhuǎn)發(fā)做同步圖文直播!

一、背景介紹

豬哥一年前在建Python學(xué)習(xí)群的時候就說過,要邀請企業(yè)大佬來學(xué)習(xí)群做直播。

其實(shí)文章早就寫好了,但是一直沒有找到好的轉(zhuǎn)發(fā)軟件,所以耽擱了幾個月。

最近豬哥感覺不能再拖了,所以就考慮自己開發(fā)一個多群直播項(xiàng)目,使用原來我們做的微信機(jī)器人項(xiàng)目。

需求很簡單:能做到24個微信大群(共萬人)同步轉(zhuǎn)發(fā)就可以!

相信很多公司企業(yè)也會有同樣的需求吧!

二、功能設(shè)計

如何做多群直播呢?簡單的就是用機(jī)器人做二級轉(zhuǎn)發(fā):

  1.  新建一個直播主講群
  2.  將三個機(jī)器人和主講人拉進(jìn)群里
  3.  主講人發(fā)到群里的消息機(jī)器人都自動轉(zhuǎn)發(fā)到群里
  4.  機(jī)器人轉(zhuǎn)發(fā)完畢后在主講群回復(fù)
  5.  繼續(xù)發(fā)消息

為了大家便于理解,豬哥畫了一個簡單的設(shè)計圖:

根據(jù)上圖設(shè)計,我們這次功能設(shè)計有4個主要元素:主講群、主講人、轉(zhuǎn)發(fā)群、機(jī)器人管理員。

三、功能實(shí)現(xiàn)

1.加載直播4個元素

根據(jù)上面的設(shè)計圖,我們得知首先需要一個直播主講群,然后直播群里個主講人,然后還需要加載需要轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)群。

這些信息我們都可以在寫在一個配置文件里面。

然后我們在機(jī)器人啟動的時候,調(diào)用加載配置文件的方法,而加載配置文件的方法又去調(diào)用加載直播信息的方法!

首先是加載機(jī)器人管理員,然后在方法中間去調(diào)用加載群信息的方法!

下面是load_live方法的詳細(xì)代碼,主要做三件事:加載主講群、檢查主講群里是否有主講人、加載直播群。 

  1. def load_live(bot):  
  2.     """加載直播需要的群"""  
  3.     # 設(shè)置開關(guān)  
  4.     bot.is_live_mode = config.is_live_mode  
  5.     if not bot.is_live_mode:  
  6.         return '\n未開啟直播模式,可在 config.py 文件中將 is_live_mode 設(shè)置為True開啟!'  
  7.     live_status_detail = ''  
  8.     # 1、加載主講群  
  9.     live_group = bot.groups().search(config.live_group)  
  10.     if len(live_group) < 1:  
  11.         bot.live_group = None  
  12.         bot.is_live_mode = False  
  13.         return f'\n主講群:未找到群名包含「{config.live_group}」的主講群!\n開啟群直播失敗!\n\n可在主講群中發(fā)任意消息,然后管理員使用命令:開啟群直播模式,從新加載直播信息!'  
  14.     elif len(live_group) > 1:  
  15.         bot.live_group = live_group[0]  
  16.         live_status_detail += f'\n主講群:找到多個群名包含「{config.live_group}」的主講群,默認(rèn)選取第一個群({live_group[0]})作為主講群!'  
  17.     else:  
  18.         bot.live_group = live_group[0]  
  19.     # 2、加載主講人  
  20.     live_group_members = bot.live_group.members  
  21.     for member in live_group_members:  
  22.         if member.name == config.live_speaker:  
  23.             live_status_detail += f'\n主講人:「{config.live_speaker}」'  
  24.             bot.live_speaker = config.live_speaker  
  25.             break  
  26.     else:  
  27.         live_status_detail += f'\n主講人:主講群內(nèi)未找到主講人「{config.live_speaker}」。\n開啟群直播失敗!'  
  28.         bot.is_live_mode = False  
  29.         return live_status_detail  
  30.     # 3、加載轉(zhuǎn)發(fā)群  
  31.     forward_groups = search_groups(bot, config.forward_groups)  
  32.     bot.forward_groups = forward_groups  
  33.     live_status_detail += f'\n轉(zhuǎn)發(fā)群:消息將會轉(zhuǎn)發(fā)至這些群:{str(forward_groups)},共{len(forward_groups)}個。\n\n如有遺漏可在這些群中發(fā)任意消息,然后管理員使用命令:開啟群直播模式,從新加載直播信息!' 
  34.      return live_status_detail 

這里我們就加載完了直播需要的4個要素:機(jī)器人管理員、主講群、主講人、轉(zhuǎn)發(fā)群。

2.實(shí)現(xiàn)轉(zhuǎn)發(fā)消息

所需要的信息都加載完畢之后,我們就可以來開始做轉(zhuǎn)發(fā)了。

大概的思路是:

  1.  定義一個接收群消息的方法
  2.  接收到群消息就判斷這條消息需不需要轉(zhuǎn)發(fā),判斷條件是:開啟直播模式+當(dāng)前消息是主講群內(nèi)的+發(fā)消息的人是主講人
  3.  如果滿足上訴三個條件,則將消息轉(zhuǎn)發(fā)到群里
  4.  轉(zhuǎn)發(fā)完畢在主講群內(nèi)回復(fù):一轉(zhuǎn)發(fā)完畢,這時主講人就可以講下一句話

我們來看看代碼吧!

我們再來看看wx_command.remote_forward(msg)的具體代碼吧! 

  1. def remote_forward(msg):  
  2.     """轉(zhuǎn)發(fā)消息"""  
  3.     forward_groups = []  
  4.     for group in msg.bot.forward_groups:  
  5.         msg.forward(group, suffix='' 
  6.         forward_groups.append(group.name)  
  7.         time.sleep(random.random())  
  8.     return forward_groups 

這個方法很簡單,循環(huán)遍歷需要轉(zhuǎn)發(fā)的群,然后一個一個發(fā)送,發(fā)送完畢后有一個一秒以內(nèi)的隨機(jī)停頓,這是為了防止消息發(fā)送過于頻繁導(dǎo)致消息發(fā)不出去。

這里關(guān)于多群轉(zhuǎn)發(fā)的代碼就完成了,下面我們就可以開始測試了。

四、測試

1.測試流程

代碼寫完我們就可以開始測試了,測試的整體思路就是:

  •  新建一個主講群,然后將機(jī)器人和主講人拉進(jìn)去
  •  新建 24個測試群,把機(jī)器人拉進(jìn)去
  •  啟動項(xiàng)目,讓機(jī)器人進(jìn)入直播模式
  •  主講人在群里模擬真實(shí)的直播,注意控制直播速度
  •  直播完畢,關(guān)閉機(jī)器人

2.一個機(jī)器人轉(zhuǎn)發(fā)24個群

豬哥在最開始的時候是想的是:用一個機(jī)器人,然后轉(zhuǎn)發(fā)到24個群里,配置文件大概是這樣:

但是發(fā)現(xiàn)這樣會導(dǎo)致消息發(fā)不出去,微信提示消息發(fā)送過于頻繁。

消息怎么發(fā)都發(fā)不出去,到這里豬哥幾乎要放棄了,以為不能多群轉(zhuǎn)發(fā)呢。

3.三個微信轉(zhuǎn)發(fā)24個群

豬哥就去網(wǎng)上看看有沒有免費(fèi)的轉(zhuǎn)發(fā)軟件,然后看了看wetools(一款基于windows的微信運(yùn)營工具),發(fā)現(xiàn)他們付費(fèi)版的一個微信最多也就可以轉(zhuǎn)發(fā)9個群。

于是豬哥猜想是不是一個微信最多只能轉(zhuǎn)發(fā)9個群呢?那我用三個微信做轉(zhuǎn)發(fā)不就可以嗎?

上面的配置文件意味著我需要啟動三次程序,換三個微信,然后每次更換forward_groups配置。

很多同學(xué)還不知道:PyCharm一個項(xiàng)目如何做到同時多次運(yùn)行?

用三個微信轉(zhuǎn)發(fā)24個微信群,看起來是個不錯的想法,實(shí)踐起來是不是可以成功呢?

本次直播測試差不多播了30分鐘,完全正確的運(yùn)行無消息丟失和機(jī)器人掉線。

期間發(fā)送過:文字、圖片、文件、語音。

五、實(shí)際直播

24個微信大群同步直播,說實(shí)話之前很少有一個人能完成的,我咨詢了很多以前做過群直播的同行,他們基本都是人工復(fù)制的方式。

但是,直播前一天順利測試,給了豬哥很大的信心!

實(shí)際直播的流程大概是:

  1.  提前幾個小時修改公告發(fā)布晚上群直播消息
  2.  禁止拉新人入群,防止拉發(fā)廣告的進(jìn)來
  3.  提前半小時打卡,直播結(jié)束后隨機(jī)踢出幾名未打卡占坑的群成員
  4.  直播前5分鐘停止打卡,開始準(zhǔn)備直播
  5.  晚20:00準(zhǔn)時開始直播
  6.  大概20:40直播結(jié)束,收集大家反饋意見

因?yàn)楫?dāng)時直播,忘記截圖24個群的未讀消息圖,只能找點(diǎn)聊天記錄截圖給大家看。

六、遇到的問題

其實(shí)直播的代碼很簡單,也不多,但是因?yàn)槿憾啵脩趔w量大所以難免會遇到很多問題,下面豬哥就總結(jié)一下遇到的問題:

  1.  最大轉(zhuǎn)發(fā)群數(shù)問題:最開始豬哥想的是只用一個機(jī)器人轉(zhuǎn)發(fā)到24個群里,但是消息發(fā)不出去,被提示消息過于頻繁,最后是看到wetools上他們的最大轉(zhuǎn)發(fā)群數(shù)是9個,所以才考慮到使用三個微信,每個轉(zhuǎn)發(fā)8個群。

      2.  轉(zhuǎn)發(fā)模式問題:之前是一個機(jī)器人,主講人直接發(fā)給轉(zhuǎn)發(fā)機(jī)器人,后來變成三個機(jī)器人,如何發(fā)送消息給三個機(jī)器人呢?在朋友的提示下采用了主講群轉(zhuǎn)發(fā)模式。

      3.  加載不到群問題:有時候啟動項(xiàng)目后會加載不到你想要的群,這時候需要在群里發(fā)送任意消息,再重新開啟直播模式,就可以了,切記!切記!

      4.  在實(shí)際直播中有個機(jī)器人掉線問題:測試過程中未出現(xiàn)機(jī)器人掉線,但在實(shí)際直播中出現(xiàn)過一次,重新登錄這個機(jī)器人就好了。

      5.  很多微信都不能登錄網(wǎng)頁版微信:這個確實(shí)很頭疼,找?guī)讉€能登錄網(wǎng)頁版的還真不好找。

當(dāng)然上面講述的都是一些技術(shù)上的問題,關(guān)于直播過程中出現(xiàn)的操作問題,比如:停止打卡后仍然有人打卡影響閱讀、直播速度過快、內(nèi)容不夠淺顯等問題就不一一列出了,如果你想詳細(xì)了解這些細(xì)節(jié)可以加豬哥微信了解。

七、總結(jié)

近些年,我們guo家慢慢由“中國制造”演變?yōu)?ldquo;中國創(chuàng)造”,這是一件艱巨而振奮人心的事情。

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

將技術(shù)應(yīng)用于生活,去解決出現(xiàn)的一些痛點(diǎn)和難題,創(chuàng)造一些有趣的事情,我認(rèn)為這才是真正的技術(shù)創(chuàng)造!

在解決自己遇到的問題的同時也解決了別人的困難,也許這時,機(jī)遇正向你走來!

源碼鏈接:https://github.com/pig6/wxrob...

 

 

責(zé)任編輯:龐桂玉 來源: Segmentfault
相關(guān)推薦

2020-02-03 19:04:50

10萬人場館畫座位

2018-10-19 13:39:49

戴爾

2017-10-15 21:19:19

科技盛會

2021-03-22 07:39:57

微信遺囑虛擬財產(chǎn)中華遺囑庫

2010-01-06 09:16:10

MySQL

2013-06-20 09:30:41

華為數(shù)據(jù)中心萬人桌面云華為

2021-11-11 11:38:56

Robinhood數(shù)據(jù)泄露網(wǎng)絡(luò)攻擊

2013-04-08 15:33:28

微信微信公眾平臺公眾賬號

2024-08-28 14:27:22

2021-01-22 18:05:01

微信朋友圈騰訊

2018-10-16 09:35:25

Facebook攻擊漏洞

2010-09-09 15:16:03

郭臺銘

2009-03-10 08:20:35

鴻海招募軟件代工

2011-11-02 09:20:26

華為云計算

2020-03-17 09:51:21

在線流量崩了

2020-09-06 17:12:22

互聯(lián)網(wǎng)

2023-08-29 22:43:53

2023-08-31 00:03:28

2009-11-30 09:17:00

IBM員工數(shù)量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 毛片一级电影 | 亚洲人成人网 | 亚洲精品国产a久久久久久 午夜影院网站 | xnxx 日本免费 | 欧洲一区二区在线 | h视频免费在线观看 | 成人激情视频免费观看 | 特黄级国产片 | 亚洲精品视频在线观看视频 | 国产精品视频在 | 黄色一级大片在线免费看产 | 91黄色免费看| 精品欧美黑人一区二区三区 | 91精品国产一区二区三区 | 国产成人在线视频播放 | 久久九九99 | 精品国产一区二区三区性色av | 亚洲不卡在线视频 | 亚洲黄色片免费观看 | 国产精品夜夜春夜夜爽久久电影 | 色综合区 | 在线观看国产视频 | 国产区在线观看 | 99福利网| 综合久久av| 毛片一区 | 一区二区在线 | aaaaaaa片毛片免费观看 | 国产精品精品视频一区二区三区 | 亚洲欧美日韩在线 | 日韩一级黄色毛片 | 国产在线不卡视频 | 亚洲欧美在线观看 | 日韩精品福利 | 美国一级片在线观看 | 日韩欧美视频在线 | 亚洲成人观看 | 免费的色网站 | 天天操天天干天天曰 | av网址在线 | 91免费电影 |