天天看點

Python 技術篇-利用itchat微信機器人檢視好友已撤回消息執行個體示範!

原理很簡單,每一條消息都是有 id 的,我們把所有消息都存儲在 dict 字典裡,就存儲 id 和對應的消息内容。

itchat.content.TEXT

:消息

itchat.content.NOTE

:通知

撤回消息就屬于通知了,每次有通知,我們都檢測一下,如果是撤回消息,就把撤回的消息發送出去。

return 就是在哪個聊天框裡檢測到,發送到那裡。

# -*- coding: UTF8 -*-
import itchat
import requests
import re

data = {}   # 用于存儲所有消息的dict字典

# 當接收到消息會觸發
@itchat.msg_register(itchat.content.TEXT,isFriendChat=True,isGroupChat=True)
def record(msg):
    content = msg['Content']
    id = msg['MsgId']
    data[id] = content 
    
# 當收到通知會觸發
@itchat.msg_register(itchat.content.NOTE,isFriendChat=True,isGroupChat=True)
def reply(msg):
    if '撤回了一條消息' in msg['Content']:
        old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)   # 用正規表達式比對出最近一次撤回消息的id
        old_msg = data.get(old_msg_id)   # 讀取存儲在字典中對應id的消息
    
    if old_msg != None:
        return "你撤回了消息:" + str(old_msg)      

當然我們有點不足之處就是如果消息存儲過多的話,會占用我們的很多的記憶體。

當然我們有改進方法:

方法1: 就是把消息存儲到本地用的時候讀取,當然這樣存儲的檔案也會越來越大。

方法2: 每個消息都有對應的發送時間,我們擷取到并且和目前時間對比,當時間超過 2 分鐘就把消息删除,正好消息本身超過2分鐘也不能撤回了。

程式運作效果圖:

Python 技術篇-利用itchat微信機器人檢視好友已撤回消息執行個體示範!

喜歡的點個贊❤吧!