1. 程式人生 > >Python如何實現微信群萬人同步直播?

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

很多人傳言微信網頁版(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_mode
    if 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 = 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]

    # 2、載入主講人
    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

    # 3、載入轉發群
    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. 轉發完畢在主講群內回覆:一轉發完畢,這時主講人就可以講下一句話

我們來看看程式碼吧

我們再來看看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)操作,不正是我們理解的“製造”嘛!

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

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

獲取原始碼,關注微信公眾號:裸睡的豬,回覆:微信機器人

相關推薦

Python如何實現同步直播

很多人傳言微信網頁版(https://wx.qq.com/)介面已經被封了,所以所有的微信都不能登入網頁版,這是錯誤的。 2019年7月微信對網頁版微信進行了動態安全策略調整,導致一大批微訊號不能登入網頁版,但有些微信老號還是可以登入網頁版的,具體哪些微訊號可以登入哪些又不能登入,這個目前暫不瞭解! 微信機器

python實現聊定時自動回覆

因為要搞歸寢資訊,我就搞了一個程式碼,有問題的話可以評論 2.安裝itchat模組 windows+R輸入cmd開啟後輸入 pip install itchat 3.安裝schedule模組 pip install schedule

python實現每日一句自動傳送給喜歡的

# -*- coding: utf-8 -*- ''' 這是一個用來測試微信自動傳送訊息的demo 參考了一篇部落格 部落格地址:http://www.cnblogs.com/botoo/p/86223

Python實現自動拉機器人

微信群的使用者新增邏輯是 —— 當群人數達到100人後,使用者無法再通過掃描群二維碼加入,只能讓使用者先新增群內聯絡人微信,再由聯絡人把使用者拉進來。這樣,聯絡人員的私人微信會新增大量陌生人,給其帶來不必要的打擾,而且純人工操作,也容易出現紕漏。 那麼,是否可以通過程

Python實現自動回覆和指定傳送聊訊息

閱讀本文大約需要5分鐘 先說一件事,抱著“沉澱成本不是成本”的態度,最近會將以前寫的文章刪除或者進行合併,按照高人的指點進行格式上和內容上的完善。 因為一直寫基礎的緣故,今天朋友提了下面這樣一個需求。就順便寫了一個小專案和大家分享一下 (圖片是微信截圖貼上不了,

使用Python實現自動化

Python、wxpy、微信Python中可以導入wxpy模塊,在電腦上操作控制微信。 使用Python實現微信自動化

Python實現定時發送天氣預報

contents 搜索 day 發送 clas content 網頁 .com time schedule實現定時 1 import requests 2 from requests import exceptions 3 from urllib.reque

關於拼十遊戲透視器作弊外掛下載,輔助器使用方法

光電 資金 其余 永久 12月 醫療 包括 電子 一次 關於微信群九人拼十遊戲透視器作弊外掛下載,輔助器使用方法【微信號:qqgkj0130 無丨法乄丨打丨開 打不開請添加微信】【此乄乄信乄息乄永久乄有乄乄效】【薇.信已開通】以實力求生存,以信譽求發展】“臺美”日趨頻繁熱絡

Python實現自動回復機器人詳細教程

cmd命令 ltr 官網 文本 ply request 多次 reply gist 首先,我們需要安裝並配置好Python環境,並安裝requests和itchat包,我用的是Windows7環境!https://www.python.org/ python官網 下載

使用Python實現自動回覆

1. 獲取其一個圖靈機器人的API 可以從下面這個官網上註冊賬號,獲取圖靈機器人的API. http://www.tuling123.com/ 註冊成功後,我們就可以獲得下面這個api的key了. 2.全部Python程式碼如下: 註釋在程式碼內

Python 實現聊天機器人

#方法一 # -*- coding=utf-8 -*- import requests import itchat import random import json KEY = '18c2919631d84026912c25970f23286f' def get_response(in

python獲取成員

首先用命令pip install itchat安裝itchat,然後進到你要獲取的群裡去選擇“儲存到通訊錄”那裡將選項滑到右邊選上,沒有儲存到通訊錄的群是取不到資訊的。以下程式碼在Win7和Python3.7裡除錯通過。__author__ = 'Yue Qingxuan'# -*- coding: utf-

python實現訊息群發和自動回覆

基於python的第三方庫itchat, 實現微信祝福分組群發和自動回覆好友祝福的功能。 這裡的分組傳送實現原理是這樣的, 首先你想群發訊息給誰, 就把誰拉到一個群聊裡,然後程式碼遍歷群聊裡的所有成員, 挨個私信發祝福。 需要明確的有一下幾點: 1. 

python實現付款碼支付(刷卡支付)(純python

參考連結https://github.com/Jolly23/wx_pay_python https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1 use.py from wx_pay impo

python實現轟炸

PYTHON定時發暖心的微信訊息給心愛的她,修改時間可以實現轟炸效果! 假如你朋友叫你準時六點鐘用微信給他發一條訊息叫你提醒他,你該怎麼辦? 一般人,那我就等到六點提醒他! Python程式設計師,我寫好了一個程式,已經要把傳送的內容和時間確定好了,到點自動傳送

Python實現聊天機器人

# -- coding=utf-8 -- import requests import itchat import random import json KEY = ‘18c2919631d84026912c25970f23286f’ def get_res

Python實現小程式支付功能

由於最近自己在做小程式的支付,就在這裡簡單介紹一下講一下用python做小程式支付這個流程。當然在進行開發之前還是建議讀一下具體的流程,清楚支付的過程。 1.支付互動流程  2.獲取openid(微信使用者標識) 1 import requests 2 3 from config import

新手看完Python實現跳一跳自動執行,再忍不住了

我相信現在很多人都在玩微信的跳一跳小遊戲,前面幾天,很多人在朋友圈晒「跳一跳」人工智慧開掛教程:如何讓電腦自己玩微信跳一跳。 很多朋友表示不太懂這是什麼。 首先,這不是一個「破解外掛」安裝教程,而是一個「破解軟體」製作教程,要靠自己用程式碼一點點寫出來,你需要有一定的程式設計基礎,這裡用的是

python實現跳一跳輔助工具

說明 1.windows上安裝安卓模擬器,安卓版本5.1以上 2.模擬器裡下載安裝最新的微信6.6.1 3.最好使用python2.7,python3的pyhook包有bug,解決比較麻煩 步驟

python 實現遠端控制喚醒內網機器和遠端關閉windows 主機!

python 實現微信遠端控制喚醒內網機器和遠端關閉windows 主機! 準備工作 本程式,主要是實現遠端管理 Windows10作業系統的開機和關機: 進群進群:943752371可以獲取Python各類入門學習資料! 這是我的微信公眾號【Python程式設計之家】各位大佬