Python如何實現微信群萬人同步直播?
很多人傳言微信網頁版(https://wx.qq.com/)介面已經被封了,所以所有的微信都不能登入網頁版,這是錯誤的。
2019年7月微信對網頁版微信進行了動態安全策略調整,導致一大批微訊號不能登入網頁版,但有些微信老號還是可以登入網頁版的,具體哪些微訊號可以登入哪些又不能登入,這個目前暫不瞭解!
微信機器人專案我們之前已經寫過四篇了:
- [Python建立微信機器人]:詳細講解如何使用
wxpy
庫建立微信機器人。 - [如何用機器人監聽老闆微信?]:監聽群成員聊天資訊做轉發。
- [python實現微信訊息防撤回]:講解微信撤回訊息的原理並實現將撤回訊息轉發。
- [超詳細Pycharm部署專案視訊教程]:詳細講解如何將微信機器人專案部署到Linux伺服器上。
以上文章可關注微信公眾號:裸睡的豬 ,檢視!
今天我們來學習微信機器人系列的第五篇:多群轉發做同步圖文直播!
一、背景介紹
豬哥一年前在建Python學習群的時候就說過,要邀請企業大佬來學習群做直播。
其實文章早就寫好了,但是一直沒有找到好的轉發軟體,所以耽擱了幾個月。
最近豬哥感覺不能再拖了,所以就考慮自己開發一個多群直播專案,使用原來我們做的微信機器人專案。
需求很簡單:能做到24個微信大群(共萬人)同步轉發就可以!
相信很多公司企業也會有同樣的需求吧!
二、功能設計
如何做多群直播呢?簡單的就是用機器人做二級轉發:
- 新建一個直播主講群
- 將三個機器人和主講人拉進群裡
- 主講人發到群裡的訊息機器人都自動轉發到群裡
- 機器人轉發完畢後在主講群回覆
- 繼續發訊息
為了大家便於理解,豬哥畫了一個簡單的設計圖:
根據上圖設計,我們這次功能設計有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.實現轉發訊息
所需要的資訊都載入完畢之後,我們就可以來開始做轉發了。
大概的思路是:
- 定義一個接收群訊息的方法
- 接收到群訊息就判斷這條訊息需不需要轉發,判斷條件是:開啟直播模式+當前訊息是主講群內的+發訊息的人是主講人
- 如果滿足上訴三個條件,則將訊息轉發到群裡
- 轉發完畢在主講群內回覆:一轉發完畢,這時主講人就可以講下一句話
我們來看看程式碼吧
我們再來看看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.測試流程
程式碼寫完我們就可以開始測試了,測試的整體思路就是:
- 新建一個主講群,然後將機器人和主講人拉進去
- 新建 24個測試群,把機器人拉進去
- 啟動專案,讓機器人進入直播模式
- 主講人在群裡模擬真實的直播,注意控制直播速度
- 直播完畢,關閉機器人
2.一個機器人轉發24個群
豬哥在最開始的時候是想的是:用一個機器人,然後轉發到24個群裡,配置檔案大概是這樣:
但是發現這樣會導致訊息發不出去,微信提示訊息傳送過於頻繁。
訊息怎麼發都發不出去,到這裡豬哥幾乎要放棄了,以為不能多群轉發呢。
3.三個微信轉發24個群
豬哥就去網上看看有沒有免費的轉發軟體,然後看了看wetools(一款基於windows的微信運營工具),發現他們付費版的一個微信最多也就可以轉發9個群。
於是豬哥猜想是不是一個微信最多隻能轉發9個群呢?那我用三個微信做轉發不就可以嗎?
上面的配置檔案意味著我需要啟動三次程式,換三個微信,然後每次更換forward_groups
配置。
很多同學還不知道:PyCharm一個專案如何做到同時多次執行?
用三個微信轉發24個微信群,看起來是個不錯的想法,實踐起來是不是可以成功呢?
本次直播測試差不多播了30分鐘,完全正確的執行無訊息丟失和機器人掉線。
期間傳送過:文字、圖片、檔案、語音。
五、實際直播
24個微信大群同步直播,說實話之前很少有一個人能完成的,我諮詢了很多以前做過群直播的同行,他們基本都是人工複製的方式。
但是,直播前一天順利測試,給了豬哥很大的信心!
實際直播的流程大概是:
- 提前幾個小時修改公告發布晚上群直播訊息
- 禁止拉新人入群,防止拉發廣告的進來
- 提前半小時打卡,直播結束後隨機踢出幾名未打卡佔坑的群成員
- 直播前5分鐘停止打卡,開始準備直播
- 晚20:00準時開始直播
- 大概20:40直播結束,收集大家反饋意見
因為當時直播,忘記截圖24個群的未讀訊息圖,只能找點聊天記錄截圖給大家看。
六、遇到的問題
其實直播的程式碼很簡單,也不多,但是因為群多,使用者體量大所以難免會遇到很多問題,下面豬哥就總結一下遇到的問題:
- 最大轉發群數問題:最開始豬哥想的是隻用一個機器人轉發到24個群裡,但是訊息發不出去,被提示訊息過於頻繁,最後是看到wetools上他們的最大轉發群數是9個,所以才考慮到使用三個微信,每個轉發8個群。
- 轉發模式問題:之前是一個機器人,主講人直接發給轉發機器人,後來變成三個機器人,如何傳送訊息給三個機器人呢?在朋友的提示下采用了主講群轉發模式。
- 載入不到群問題:有時候啟動專案後會載入不到你想要的群,這時候需要在群裡傳送任意訊息,再重新開啟直播模式,就可以了,切記!切記!
- 在實際直播中有個機器人掉線問題:測試過程中未出現機器人掉線,但在實際直播中出現過一次,重新登入這個機器人就好了。
- 很多微信都不能登入網頁版微信:這個確實很頭疼,找幾個能登入網頁版的還真不好找。
當然上面講述的都是一些技術上的問題,關於直播過程中出現的操作問題,比如:停止打卡後仍然有人打卡影響閱讀、直播速度過快、內容不夠淺顯等問題就不一一列出了,如果你想詳細瞭解這些細節可以加豬哥微信瞭解。
七、總結
近些年,我們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程式設計之家】各位大佬