如何用Python記錄微信撤回的訊息
import itchat
from itchat.content import *
import os
import time
import xml.dom.minidom # 解析 xml 模組
# 這是儲存撤回訊息的檔案目錄 ( 如:圖片、語音等 ) ,這裡已經寫死了,大家可以自行修改
temp = '/Users/yourname/Documents/itchat' + '/' + ' 撤回的訊息 '
if not os.path.exists(temp):
os.mkdir(temp)
itchat.auto_login(True) # 自動登入
dict = {} # 定義一個字典
# 這是一個裝飾器,給下面的函式新增新功能
# 能夠捕獲好友傳送的訊息,並傳遞給函式引數 msg
@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO]) # 文字,語音,圖片
def resever_info(msg):
global dict # 宣告全域性變數
info = msg['Text'] # 取出訊息內容
msgId = msg['MsgId'] # 取出訊息標識
info_type = msg['Type'] # 取出訊息型別
name = msg['FileName'] # 取出訊息檔名
# 取出訊息傳送者標識並從好友列表中檢索
fromUser = itchat.search_friends(userName=msg['FromUserName'])['NickName']
ticks = msg['CreateTime'] # 獲取資訊傳送的時間
time_local = time.localtime(ticks)
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local) # 格式化日期
# 將訊息標識和訊息內容新增到字典
# 每一條訊息的唯一標識作為鍵,訊息的具體資訊作為值,也是一個字典
dict[msgId] = {"info": info, "info_type": info_type, "name": name, "fromUser": fromUser, "dt": dt}
@itchat.msg_register(NOTE) # 監聽系統提示
def note_info(msg):
# 監聽到好友撤回了一條訊息
if ' 撤回了一條訊息 ' in msg['Text']:
# 獲取系統訊息中的 Content 結點值
content = msg['Content']
# Content 值為 xml ,解析 xml
doc = xml.dom.minidom.parseString(content)
# 取出 msgid 標籤的值
result = doc.getElementsByTagName("msgid")
# 該 msgId 就是撤回的訊息標識,透過它可以在字典中找到撤回的訊息資訊
msgId = result[0].childNodes[0].nodeValue
# 從字典中取出對應訊息標識的訊息型別
msg_type = dict[msgId]['info_type']
if msg_type == 'Recording': # 撤回的訊息為語音
recording_info = dict[msgId]['info'] # 取出訊息標識對應的訊息內容
info_name = dict[msgId]['name'] # 取出訊息檔名
fromUser = dict[msgId]['fromUser'] # 取出傳送者
dt = dict[msgId]['dt'] # 取出傳送時間
recording_info(temp + '/' + info_name) # 儲存語音
# 拼接提示訊息
send_msg = ' 【傳送人 : 】 ' + fromUser + '\n' + ' 傳送時間 :' + dt + '\n' + ' 撤回了一條語音 '
itchat.send(send_msg, 'filehelper') # 將提示訊息傳送給檔案助手
# 傳送儲存的語音
itchat.send_file(temp + '/' + info_name, 'filehelper')
del dict[msgId] # 刪除字典中對應的訊息
print(" 儲存語音 ")
elif msg_type == 'Text':
text_info = dict[msgId]['info'] # 取出訊息標識對應的訊息內容
fromUser = dict[msgId]['fromUser'] # 取出傳送者
dt = dict[msgId]['dt'] # 取出傳送時間
# 拼接提示訊息
send_msg = ' 【傳送人 : 】 ' + fromUser + '\n' + ' 傳送時間 :' + dt + '\n' + ' 撤回內容 :' + text_info
# 將提示訊息傳送給檔案助手
itchat.send(send_msg, 'filehelper')
del dict[msgId] # 刪除字典中對應的訊息
print(" 儲存文字 ")
elif msg_type == 'Picture':
picture_info = dict[msgId]['info'] # 取出訊息標識對應的訊息內容
fromUser = 外匯跟單gendan5.comdict[msgId]['fromUser'] # 取出傳送者
dt = dict[msgId]['dt'] # 取出傳送時間
info_name = dict[msgId]['name'] # 取出檔名
picture_info(temp + '/' + info_name) # 儲存圖片
# 拼接提示訊息
send_msg = ' 【傳送人 : 】 ' + fromUser + '\n' + ' 傳送時間 :' + dt + '\n' + ' 撤回了一張圖片 '
itchat.send(send_msg, 'filehelper') # 將圖片傳送給檔案助手
# 傳送儲存的語音
itchat.send_file(temp + '/' + info_name, 'filehelper')
del dict[msgId] # 刪除字典中對應的訊息
print(" 儲存圖片 ")
itchat.run()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2840867/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 女神把微信訊息撤回後好慌,Python幾十行程式碼輕鬆檢視撤回訊息!Python行程
- Python輕鬆檢視微信撤回訊息,祕密無處可藏Python
- Python + Wxpy 實現微信防撤回。Python
- Python這麼頂?搶紅包殺手、訊息撤回也沒得用!Python
- IM撤回訊息-iOS客戶端實現iOS客戶端
- 訊息通知系統記錄
- 教你如何用vbs實現微信自動傳送訊息功能
- 微信開發中的訊息驗證與訊息回覆
- 在python中使用itchat傳送微信訊息Python
- 微信轉錯賬撤回設定方法 微信轉錯了錢怎麼撤回?
- 這個Python指令碼牛逼了,秒搶紅包就算了,還能無視撤回訊息Python指令碼
- RestCloud MQ訊息整合平臺,實現訊息自動記錄及重發RESTCloudMQ
- 微信怎麼群發訊息?微信群發助手群發訊息圖文教程
- 使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息Laravel
- 解析微信xml訊息使用的jar包XMLJAR
- 微信開發推送訊息案例
- golang 封裝 rabbitmq,正常訊息,延時訊息,非炫技,僅記錄(golang新人)Golang封裝MQ
- 微信多開和防撤回工具
- 如何用 Golang 的 channel 實現訊息的批次處理Golang
- 如何用 Golang 的 channel 實現訊息的批量處理Golang
- 記一次接收微信公眾平臺推送訊息的例項
- 給微信伺服器發訊息伺服器
- 微信小程式模板訊息詳解微信小程式
- 微信多開小助手WeChatTweak Mac(微信防撤回)Mac
- 教你如何用python實現學生通訊錄管理系統Python
- 使用pushplus+python實現亞馬遜到貨訊息推送微信Python亞馬遜
- 一篇文章教你如何用 Python 記錄日誌Python
- 微信伴侶WechatTweak for mac(微信防撤回、多開助手)Mac
- PHP微信開發之模板訊息回覆PHP
- 微信小程式開發(十七)模板訊息微信小程式
- Python自制微信機器人:群發訊息、自動接收好友Python機器人
- Python構建企業微信自動訊息轉發服務端Python服務端
- 【玩具】使用Python自動化傳送微信訊息進行訂水Python
- iOS仿微信小視訊功能開發優化記錄iOS優化
- 微信小程式 傳送模板訊息的功能實現微信小程式
- iOS 微信聊天訊息的圖片氣泡實現iOS
- Java微信公眾號推送模版訊息的方法示例Java
- 微信公眾號開發之客服訊息