10行代碼實現微信群消息同步(wxpy)


目前,微信群成員的人數上限是500人。而現實中,有很多社群、校友群、同事群的成員數量已超過500人,只能分拆在不同的微信群里面。在聊天過程中,不同微信群的成員無法相互溝通。

去年,宏論工作室介紹了基於itchat實現微信群消息同步機器人的方法。現在,我們改用wxpy模塊,以更簡潔的代碼實現微信群消息同步。wxpy模塊是在itchat模塊的基礎上再次封裝,所以使用起來更簡便。利用本文介紹的代碼,每個微信賬號都可以變成“機器人”,在指定的微信群之間自動同步消息,打通了500人上限的阻礙,讓不同微信群的成員互相溝通。

安裝wxpy模塊:

pip install -U wxpy -i "https://pypi.doubanio.com/simple/"  

如果要使用該模塊的其他功能,可以查看wxpy官方文檔

代碼:

下面給出群消息同步的完整代碼(去除注釋文字,只有10行代碼):

from wxpy import *
#導入wxpy模塊的全部內容
bot=Bot()
# 初始化機器人,電腦彈出二維碼,用手機微信掃碼登陸
bot.groups(update=True, contact_only=False)
#微信登陸后,更新微信群列表(包括未保存到通訊錄的群)
my_groups=bot.groups().search('鏟屎官')
#找出名字包括“鏟屎官”的群。假設我們有2個微信群,分別叫“鏟屎官1群”、“鏟屎官2群”。如果有3個或以上的鏟屎群,上面這句代碼也能全部找出來,並在后面的代碼中實現多群同步。
my_groups[0].update_group(members_details=True)
#更新“鏟屎官1群”的成員列表信息
my_groups[1].update_group(members_details=True)
#更新“鏟屎官2群”的成員列表信息
@bot.register(my_groups, except_self=False)
#注冊消息響應事件,一旦收到鏟屎群的消息,就執行下面的代碼同步消息。機器人自己在群里發布的信息也進行同步。
def sync_my_groups(msg):
    sync_message_in_groups(msg, my_groups)
    #同步“鏟屎官1群”和“鏟屎官2群”的消息。包括文字、圖片、視頻、語音、文件、分享、普通表情、地圖等。
bot.join()
#堵塞線程,讓機器人保持運行 

把上述10行代碼保存為文件sync.py,然后在電腦運行,就能開始同步微信群消息了:

python sync.py 

個性化:

我們可以根據具體情境優化代碼,以滿足個性化要求:

1、在Linux服務器運行機器人,需要使用終端二維碼。初始化機器人的代碼改為:

bot=Bot(cache_path=True, console_qr=2)
#console_qr=2,這個整數可以調整。如果終端底色是白色,則改為負數。 

2、如果需要同步的群名字不同,可以用以下命令進行指定:

my_groups[0]=bot.groups().search('鏟屎官群')
my_groups[1]=bot.groups().search('吃貨群')
#指定同步“鏟屎官群”和“吃貨群”的消息 

3、wxpy在同步群消息時,會默認給發消息的群成員添加一個小圖標作為臨時頭像。如果想使用更簡潔的方式,可以改用以下代碼:

@bot.register(my_groups, except_self=False)
def sync_my_groups(msg):
    my_name=msg.member.name+':'
    #給轉發的消息加上前綴,顯示群成員名字和冒號。群成員名字從備注、群昵稱、微信昵稱里面按順序自動獲取。
    sync_message_in_groups(msg, my_groups, prefix=my_name) 

4、在最后增加一條代碼,給機器人發送消息,表示代碼執行成功

bot.file_helper.send('Hello')
#向機器人的文件傳輸助手發送消息“Hello”
bot.join() 

最后,建議用小號做“機器人”,並適當控制同步消息的數量和頻率,以免對群成員造成不必要的騷擾,同時不影響個人大號的正常使用。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com