Python實(shí)現(xiàn)微信消息防撤回功能的實(shí)例代碼
微信(WeChat)是騰訊公司于2011年1月21日推出的一款社交軟件,8年時(shí)間微信做到日活10億,日消息量450億。在此期間微信也推出了不少的功能如:“搖一搖”、“漂流瓶”、“朋友圈”、“附近的人”、“公眾平臺(tái)”、“小程序”等等,涵蓋了我們生活的方方面面,微信正在慢慢踐行著他們的口號(hào):微信,是一個(gè)生活方式
一、背景介紹
產(chǎn)品的更新迭代必然會(huì)伴隨著功能的推出和下線,今天我們要講的便是微信在2014年推出的一個(gè)小小的新功能:撤回消息,使用此功能者提神醒腦、神清氣爽,但被施用者卻可能會(huì)抓耳撓腮、咬牙切齒的想知道你到底撤回了啥,這就是所謂的好奇害死貓(Curiosity kills the cat),今天我們就來用Python實(shí)現(xiàn)防微信消息撤回,滿足一下大家的好奇心!
二、功能設(shè)計(jì)
我們希望當(dāng)有好友或者群中有人撤回消息的時(shí)候,第一時(shí)間能把原消息、發(fā)送者信息轉(zhuǎn)發(fā)到文件助手中(當(dāng)然你也可以把消息發(fā)回給他,哈哈),這樣方便我們查看。
給大家來演示一下實(shí)現(xiàn)的功能。
三、功能實(shí)現(xiàn)
1.微信撤回消息實(shí)現(xiàn)原理
我們先來了解一下微信撤回消息的原理:
其實(shí)微信撤回消息原理就是操作者在點(diǎn)擊撤回的時(shí)候,客戶端會(huì)自動(dòng)發(fā)一條系統(tǒng)消息:“xxx撤回了一條消息”,然后對(duì)方app端收到消息后解析,替換原消息,改個(gè)顯示的樣式即可
豬哥給大家演示一下正常消息和撤回消息的內(nèi)容到底有什么區(qū)別:
正常消息:Content='你好騷啊',大家留意一下MsgId='8784390488772995470'
撤回消息:Content是一串xml格式的內(nèi)容
我們在下面把它格式化看看
<sysmsg type="revokemsg"> <revokemsg> <session>xxx</session> <oldmsgid>1090336364</oldmsgid> <msgid>8784390488772995470</msgid> <replacemsg><![CDATA["豬哥" 撤回了一條消息]]></replacemsg> </revokemsg> </sysmsg>
分析上面撤回的Content字段我們發(fā)現(xiàn)<msgid>8784390488772995470</msgid>
的id與我們之前發(fā)送消息的id是一致的,而<replacemsg>這個(gè)標(biāo)簽也驗(yàn)證了我的猜想,確實(shí)是用新消息替換原消息。
2.找到被撤回消息
根據(jù)抓取正常消息和撤回消息的內(nèi)容我們發(fā)現(xiàn)規(guī)則:撤回消息中會(huì)包含之前被撤回的那條消息的msgid,那我們只要找到之前那條消息就可以了,而wxpy模塊默認(rèn)為我們緩存了最近的200條消息,所以我們只要遍歷這些歷史消息然后比較msgid就可以找到被撤回的那條消息啦!
如果你微信消息太過頻繁,2分鐘之內(nèi)消息數(shù)量超過200,則可以將max_history設(shè)置大些。
3.轉(zhuǎn)發(fā)被撤回消息
原理也搞懂了,被撤回的消息也找到了,就差最后一步轉(zhuǎn)發(fā)消息了,如果你之前玩過wxpy肯定會(huì)了吧,只要一行代碼就可以將消息轉(zhuǎn)發(fā):
msg.forward(bot.file_helper)
4.代碼
原理和過程講完了,代碼貼出來給大家看看,注釋還是比較詳細(xì),有不懂得話可以在學(xué)習(xí)群中問我。
四、功能驗(yàn)證
五、總結(jié)
微信消息防撤回功能實(shí)現(xiàn)簡單,但實(shí)用性很好,目前項(xiàng)目的唯一缺點(diǎn)就是易用性差,簡單說就是我們還沒有將項(xiàng)目部署服務(wù)器,每次使用都得打開電腦然后運(yùn)行還得一直開著,豬哥考慮后面將項(xiàng)目部署在云服務(wù)器上或者打包成apk,這樣就使用起來就非常方便了,而且還可以把a(bǔ)pk發(fā)給朋友,讓朋友也體驗(yàn)此功能!
學(xué)會(huì)這招,再也不用好奇對(duì)方到底撤回了啥消息,快下載項(xiàng)目試試吧!下載項(xiàng)目后可直接運(yùn)行不需要修改代碼!
Github項(xiàng)目地址:https://github.com/pig6/wxrobot
wxpy官方文檔:https://wxpy.readthedocs.io/zh/latest
總結(jié)
以上所述是小編給大家介紹的Python實(shí)現(xiàn)微信消息防撤回功能的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
- Python查看微信撤回消息代碼
- python如何查看微信消息撤回
- 使用Python微信庫itchat獲得好友和群組已撤回的消息
- 78行Python代碼實(shí)現(xiàn)現(xiàn)微信撤回消息功能
- python使用wxpy實(shí)現(xiàn)微信消息防撤回腳本
- Python 實(shí)現(xiàn)還原已撤回的微信消息
- python實(shí)現(xiàn)文件助手中查看微信撤回消息
- Python實(shí)現(xiàn)的微信公眾號(hào)群發(fā)圖片與文本消息功能實(shí)例詳解
- 使用Python制作自動(dòng)推送微信消息提醒的備忘錄功能
- python實(shí)現(xiàn)微信定時(shí)每天和女友發(fā)送消息
- Python實(shí)現(xiàn)微信中找回好友、群聊用戶撤回的消息功能示例
相關(guān)文章
Python實(shí)現(xiàn)自動(dòng)運(yùn)行代碼的方法詳解
在軟件開發(fā)和數(shù)據(jù)科學(xué)領(lǐng)域,自動(dòng)運(yùn)行代碼是提高效率和確保一致性的關(guān)鍵,本文將深入探討如何使用Python實(shí)現(xiàn)自動(dòng)運(yùn)行代碼的各種方法,希望對(duì)大家有所幫助2023-12-12Python環(huán)境下安裝使用異步任務(wù)隊(duì)列包Celery的基礎(chǔ)教程
這篇文章主要介紹了Python環(huán)境下安裝使用異步任務(wù)隊(duì)列包Celery的基礎(chǔ)教程,Celery的分布式任務(wù)管理適合用于服務(wù)器集群的管理和維護(hù),需要的朋友可以參考下2016-05-05spark: RDD與DataFrame之間的相互轉(zhuǎn)換方法
今天小編就為大家分享一篇spark: RDD與DataFrame之間的相互轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06Ubuntu22.04安裝PyTorch1.12.1 GPU版本全過程
這篇文章主要介紹了Ubuntu22.04安裝PyTorch1.12.1 GPU版本全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06解決Numpy與Pytorch彼此轉(zhuǎn)換時(shí)的坑
這篇文章主要介紹了解決Numpy與Pytorch彼此轉(zhuǎn)換時(shí)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python字符串處理實(shí)現(xiàn)單詞反轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Python字符串處理實(shí)現(xiàn)單詞反轉(zhuǎn)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Python學(xué)習(xí)之集合的常用方法總結(jié)
集合并不是一種數(shù)據(jù)處理類型,而是一種中間類型。集合(set)是一個(gè)無序、不重復(fù)的元素序列,經(jīng)常被用來處理兩個(gè)列表進(jìn)行交并差的處理性。本文將詳細(xì)講解集合的一些常用方法,感興趣的可以了解一下2022-03-03