如何通過(guò)Python用表情包自動(dòng)回復(fù)微信拍一拍?
作者:5pyx5oOf5oG6
https://zhuanlan.zhihu.com/p/149912352
前不久微信上線了拍一拍功能,剛推出就被有才的網(wǎng)友玩壞了。

還有更多沒(méi)有節(jié)操的拍法這里就不展示了。
但拍一拍屬于弱提示,只有在聊天界面才能感受到。如果不在微信界面,被人拍了沒(méi)辦法及時(shí)回應(yīng),這里給大家介紹一下如何使用PyWeChatSpy(https://github.com/veikai/PyWeChatSpy)來(lái)用表情包回應(yīng)拍一拍。
1、首先我們準(zhǔn)備一些表情圖,這里我選了沙雕熊貓頭

2、安裝2.8.0.133版本的PC微信客戶端(https://share.weiyun.com/5AwuXRG)
3、安裝Python3.8.3_x64 32位系統(tǒng)(https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe)的同學(xué)可以去官網(wǎng)自行下載32位安裝包

4、打開(kāi)cmd輸入pip install PyWeChatSpy回車執(zhí)行

5、這時(shí)候需要我們編碼了,先新建一個(gè)app.py文件
先引入PyWeChatSpy模塊、正則re模塊和隨機(jī)random模塊 re用于匹配消息內(nèi)容,random用于隨機(jī)選取回復(fù)圖片
from?PyWeChatSpy?import?WeChatSpy
import?random
import?re
接著定義一個(gè)回復(fù)處理函數(shù)my_parser
def?my_parser(data):
????pass
然后實(shí)例化一個(gè)WeChatSpy類
spy?=?WeChatSpy(parser=my_parser)
最后編寫my_parser函數(shù)處理邏輯
if?data["type"]?==?5:?#?判斷是微信消息數(shù)據(jù)
????for?msg?in?data["data"]:?#?遍歷微信消息
????????if?msg["msg_type"]?==?10000:??#?判斷是微信拍一拍系統(tǒng)提示
????????????#?因?yàn)槲⑿畔到y(tǒng)消息很多?因此需要用正則匹配消息內(nèi)容進(jìn)一步過(guò)濾拍一拍提示
????????????#?{'self':?0,?'msg_type':?10000,?'wxid1':?'179xxxxxx72@chatroom',?'content':?'"Mandy的小腦袋"?拍了拍你'}
????????????m?=?re.search('".*"?拍了拍你',?msg["content"])
????????????if?m:??#?搜索到了匹配的字符串?判斷為拍一拍
????????????????image_path?=?f"images/{random.randint(1,?7)}.jpg"??#?隨機(jī)選一張回復(fù)用的圖片
????????????????spy.send_file(msg["wxid1"],?image_path)??#?發(fā)送圖片
運(yùn)行代碼
if?__name__?==?'__main__':
????spy.run()??#?運(yùn)行代碼
大功告成,這時(shí)候如果再有人拍你,無(wú)論是群聊還是私聊都會(huì)自動(dòng)回復(fù)設(shè)置好的圖片。

整體代碼如下:
from?PyWeChatSpy?import?WeChatSpy
import?random
import?re
def?my_parser(data):
????if?data["type"]?==?5:?#?判斷是微信消息數(shù)據(jù)
????????for?msg?in?data["data"]:??#?遍歷微信消息
????????????if?msg["msg_type"]?==?10000:??#?判斷是微信拍一拍系統(tǒng)提示
????????????????#?因?yàn)槲⑿畔到y(tǒng)消息很多?因此需要用正則匹配消息內(nèi)容進(jìn)一步過(guò)濾拍一拍提示
????????????????#?{'self':?0,?'msg_type':?10000,?'wxid1':?'179xxxxxx72@chatroom',?'content':?'"Mandy的小腦袋"?拍了拍你'}
????????????????m?=?re.search('".*"?拍了拍你',?msg["content"])
????????????????if?m:??#?搜索到了匹配的字符串?判斷為拍一拍
????????????????????image_path?=?f"images/{random.randint(1,?7)}.jpg"??#?隨機(jī)選一張回復(fù)用的圖片
????????????????????spy.send_file(msg["wxid1"],?image_path)??#?發(fā)送圖片
spy?=?WeChatSpy(parser=my_parser)??#?實(shí)例化WeChatSpy類
if?__name__?==?'__main__':
????spy.run()??#?運(yùn)行代碼
app.py存放的地方要和圖片文件夾一致,否則無(wú)法正確回復(fù),如圖片路徑D:\images,app.py存放路徑為D:\app.py,暫不支持中文路徑。
推薦書籍《趣學(xué)Python算法100例》
本書專為Python算法初學(xué)者量身打造,詳解100個(gè)趣味編程算法實(shí)例,內(nèi)容涵蓋Python編程的基礎(chǔ)知識(shí)和常用算法。

