Python如何實現微信羣萬人同步直播?

不少人傳言微信網頁版(https://wx.qq.com/)接口已經被封了,因此全部的微信都不能登陸網頁版,這是錯誤的。python

2019年7月微信對網頁版微信進行了動態安全策略調整,致使一大批微信號不能登陸網頁版,但有些微信老號仍是能夠登陸網頁版的,具體哪些微信號能夠登陸哪些又不能登陸,這個目前暫不瞭解!windows

微信機器人項目咱們以前已經寫過四篇了:安全

  1. [Python建立微信機器人]:詳細講解如何使用`wxpy`庫建立微信機器人。
  2. [如何用機器人監聽老闆微信?]:監聽羣成員聊天信息作轉發。
  3. [python實現微信消息防撤回]:講解微信撤回消息的原理並實現將撤回消息轉發。
  4. [超詳細Pycharm部署項目視頻教程]:詳細講解如何將微信機器人項目部署到Linux服務器上。

以上文章可關注微信公衆號:裸睡的豬 ,查看!服務器

今天咱們來學習微信機器人系列的第五篇:多羣轉發作同步圖文直播微信

1、背景介紹

豬哥一年前在建Python學習羣的時候就說過,要邀請企業大佬來學習羣作直播。app

其實文章早就寫好了,可是一直沒有找到好的轉發軟件,因此耽擱了幾個月。dom

最近豬哥感受不能再拖了,因此就考慮本身開發一個多羣直播項目,使用原來咱們作的微信機器人項目。工具

需求很簡單:能作到24個微信大羣(共萬人)同步轉發就能夠學習

相信不少公司企業也會有一樣的需求吧!在這裏插入圖片描述測試

2、功能設計

如何作多羣直播呢?簡單的就是用機器人作二級轉發:

  1. 新建一個直播主講羣
  2. 將三個機器人和主講人拉進羣裏
  3. 主講人發到羣裏的消息機器人都自動轉發到羣裏
  4. 機器人轉發完畢後在主講羣回覆
  5. 繼續發消息

爲了你們便於理解,豬哥畫了一個簡單的設計圖:在這裏插入圖片描述根據上圖設計,咱們此次功能設計有4個主要元素:主講羣、主講人、轉發羣、機器人管理員

3、功能實現

1.加載直播4個元素

根據上面的設計圖,咱們得知首先須要一個直播主講羣,而後直播羣裏個主講人,而後還須要加載須要轉發的轉發羣

這些信息咱們均可以在寫在一個配置文件裏面。在這裏插入圖片描述而後咱們在機器人啓動的時候,調用加載配置文件的方法,而加載配置文件的方法又去調用加載直播信息的方法!在這裏插入圖片描述首先是加載機器人管理員,而後在方法中間去調用加載羣信息的方法!在這裏插入圖片描述下面是load_live方法的詳細代碼,主要作三件事:**加載主講羣、檢查主講羣裏是否有主講人、加載直播羣。**

def load_live(bot):
    """加載直播須要的羣"""
    # 設置開關
    bot.is_live_mode = config.is_live_mode
    if not bot.is_live_mode:
        return '\n未開啓直播模式,可在 config.py 文件中將 is_live_mode 設置爲True開啓!'
    live_status_detail = ''
    # 一、加載主講羣
    live_group = bot.groups().search(config.live_group)
    if len(live_group) < 1:
        bot.live_group = None
        bot.is_live_mode = False
        return 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]

    # 二、加載主講人
    live_group_members = bot.live_group.members
    for member in live_group_members:
        if member.name == config.live_speaker:
            live_status_detail += f'\n主講人:「{config.live_speaker}」'
            bot.live_speaker = config.live_speaker
            break
    else:
        live_status_detail += f'\n主講人:主講羣內未找到主講人「{config.live_speaker}」。\n開啓羣直播失敗!'
        bot.is_live_mode = False
        return live_status_detail

    # 三、加載轉發羣
    forward_groups = search_groups(bot, config.forward_groups)
    bot.forward_groups = forward_groups
    live_status_detail += f'\n轉發羣:消息將會轉發至這些羣:{str(forward_groups)},共{len(forward_groups)}個。\n\n若有遺漏可在這些羣中發任意消息,而後管理員使用命令:開啓羣直播模式,重新加載直播信息!'
    return live_status_detail複製代碼

這裏咱們就加載完了直播須要的4個要素:機器人管理員、主講羣、主講人、轉發羣

2.實現轉發消息

所須要的信息都加載完畢以後,咱們就能夠來開始作轉發了。

大概的思路是:

  1. 定義一個接收羣消息的方法
  2. 接收到羣消息就判斷這條消息需不須要轉發,判斷條件是:開啓直播模式+當前消息是主講羣內的+發消息的人是主講人
  3. 若是知足上訴三個條件,則將消息轉發到羣裏
  4. 轉發完畢在主講羣內回覆:一轉發完畢,這時主講人就能夠講下一句話

咱們來看看代碼吧在這裏插入圖片描述咱們再來看看wxcommand.remoteforward(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複製代碼

這個方法很簡單,循環遍歷須要轉發的羣,而後一個一個發送,發送完畢後有一個一秒之內的隨機停頓,這是爲了防止消息發送過於頻繁致使消息發不出去。

這裏關於多羣轉發的代碼就完成了,下面咱們就能夠開始測試了。

4、測試

1.測試流程

代碼寫完咱們就能夠開始測試了,測試的總體思路就是:

  1. 新建一個主講羣,而後將機器人和主講人拉進去
  2. 新建 24個測試羣,把機器人拉進去
  3. 啓動項目,讓機器人進入直播模式
  4. 主講人在羣裏模擬真實的直播,注意控制直播速度
  5. 直播完畢,關閉機器人

2.一個機器人轉發24個羣

豬哥在最開始的時候是想的是:用一個機器人,而後轉發到24個羣裏,配置文件大概是這樣:在這裏插入圖片描述可是發現這樣會致使消息發不出去,微信提示消息發送過於頻繁。在這裏插入圖片描述消息怎麼發都發不出去,到這裏豬哥幾乎要放棄了,覺得不能多羣轉發呢。

3.三個微信轉發24個羣

豬哥就去網上看看有沒有免費的轉發軟件,而後看了看wetools(一款基於windows的微信運營工具),發現他們付費版的一個微信最多也就能夠轉發9個羣。

因而豬哥猜測是否是一個微信最多隻能轉發9個羣呢?那我用三個微信作轉發不就能夠嗎?在這裏插入圖片描述上面的配置文件意味着我須要啓動三次程序,換三個微信,而後每次更換forward_groups配置。

不少同窗還不知道:PyCharm一個項目如何作到同時屢次運行?在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述用三個微信轉發24個微信羣,看起來是個不錯的想法,實踐起來是否是能夠成功呢?在這裏插入圖片描述本次直播測試差很少播了30分鐘,徹底正確的運行無消息丟失和機器人掉線。

期間發送過:文字、圖片、文件、語音。

5、實際直播

24個微信大羣同步直播,說實話以前不多有一我的能完成的,我諮詢了不少之前作過羣直播的同行,他們基本都是人工複製的方式。

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

實際直播的流程大概是:

  1. 提早幾個小時修改公告發布晚上羣直播消息
  2. 禁止拉新人入羣,防止拉發廣告的進來
  3. 提早半小時打卡,直播結束後隨機踢出幾名未打卡佔坑的羣成員
  4. 直播前5分鐘中止打卡,開始準備直播
  5. 晚20:00準時開始直播
  6. 大概20:40直播結束,收集你們反饋意見

在這裏插入圖片描述由於當時直播,忘記截圖24個羣的未讀消息圖,只能找點聊天記錄截圖給你們看。

6、遇到的問題

其實直播的代碼很簡單,也很少,可是由於羣多,用戶體量大因此不免會遇到不少問題,下面豬哥就總結一下遇到的問題:

  1. 最大轉發羣數問題:最開始豬哥想的是隻用一個機器人轉發到24個羣裏,可是消息發不出去,被提示消息過於頻繁,最後是看到wetools上他們的最大轉發羣數是9個,因此才考慮到使用三個微信,每一個轉發8個羣。
  2. 轉發模式問題:以前是一個機器人,主講人直接發給轉發機器人,後來變成三個機器人,如何發送消息給三個機器人呢?在朋友的提示下采用了主講羣轉發模式。
  3. 加載不到羣問題:有時候啓動項目後會加載不到你想要的羣,這時候須要在羣裏發送任意消息,再從新開啓直播模式,就能夠了,切記!切記!
  4. 在實際直播中有個機器人掉線問題:測試過程當中未出現機器人掉線,但在實際直播中出現過一次,從新登陸這個機器人就行了。
  5. 不少微信都不能登陸網頁版微信:這個確實很頭疼,找幾個能登陸網頁版的還真很差找。

固然上面講述的都是一些技術上的問題,關於直播過程當中出現的操做問題,好比:中止打卡後仍然有人打卡影響閱讀、直播速度過快、內容不夠淺顯等問題就不一一列出了,若是你想詳細瞭解這些細節能夠加豬哥微信瞭解。

7、總結

近些年,咱們guo家慢慢由「中國製造」演變爲「中國創造」,這是一件艱鉅而振奮人心的事情。

對於咱們作技術的也是如此,工做中不少Ctrl+C(V)操做,不正是咱們理解的「製造」嘛!

將技術應用於生活,去解決出現的一些痛點和難題,創造一些有趣的事情,我認爲這纔是真正的技術創造!

在解決本身遇到的問題的同時也解決了別人的困難,也許這時,機遇正向你走來!

獲取源碼,關注微信公衆號:裸睡的豬,回覆:微信機器人vx公衆號

相關文章
相關標籤/搜索