python使用wxpy輕鬆實現微信防撤回
最近比較閒就隨便瞎看,看到了微信防撤回就順便跟著學著實現一下
使用的是wxpy,安裝方法pip install wxpy(我使用的是python2.7),這樣實現起來比較快,反正也只是練手
首現看了兩個別人實現的程式碼,然後看了看wxpy的文件:http://wxpy.readthedocs.io/zh/latest/utils.html(萌新,順便鍛鍊下看文件)
我實現的程式碼:
import wxpy import re # 例項化微信物件 bot = wxpy.Bot(cache_path=True) # 啟用puid 並指定puid所需對映資料儲存的路徑 bot.enable_puid(path='wxpy_puid.pkl') # 用於存放每個使用者最近傳送的訊息 msgs = dict() # 資訊的型別 msg_types = { 'Text': '文字', 'Map': '位置', 'Picture': '圖片', 'Video': '視訊', 'Attachment': '檔案', 'Sharing': '分享', 'Card': '名片', 'Recording': '語音', } @bot.register() def handle_receive_msg(msg): """ 監聽訊息 :param msg: 接收到的訊息 :return: """ # 原資訊資料 raw = msg.raw # 如果訊息的狀態碼是4 即撤回訊息 if raw.get('Status') == 4: # 如果是群訊息 if isinstance(msg.chat, wxpy.api.chats.group.Group): # 獲取群成員的puid puid = msg.member.puid # 獲取傳送者的暱稱 name = msg.member.nick_name # 如果是好友訊息 elif isinstance(msg.chat, wxpy.api.chats.friend.Friend): # 獲取好友的puid puid = msg.chat.puid # 獲取好友的暱稱 name = msg.chat.nick_name else: puid = None name = None if puid: # 被撤回訊息的msgid的匹配規則 msg_id_regex = re.compile('<msgid>(\d+)</msgid>') # 獲取被撤回訊息的msgid old_msg_id = msg_id_regex.findall(raw.get('Content'))[0] # 獲取該傳送者的最後5次的訊息記錄 chat_msgs = msgs.get(puid) # 遍歷訊息記錄 for chat_msg in chat_msgs[::-1]: # 跳過不是被撤回的資訊 if str(chat_msg.id) != old_msg_id: continue chat = chat_msg.chat # 如果被撤回的資訊是文字資訊 if chat_msg.type == "Text": # 如果訊息長度過長 則不予處理 if len(chat_msg.text) >= 150: warning = "【您撤回的訊息過長,有炸群嫌疑,不予處理!!!】" bot.file_helper.send('%s撤回了一條文字訊息--【%s】'.decode('utf-8') % (name, warning)) break # 將此訊息轉發出來 chat_msg.forward(chat, prefix='%s撤回了一條文字訊息,訊息內容為:'.decode('utf-8') % name) # 如果被撤回的是位置資訊 elif chat_msg.type == "Map": # 位置資訊的匹配規則 map_regex = re.compile(r'label="(.+?)"') # 獲取位置資訊中的位置 map = map_regex.findall(chat_msg.raw.get("OriContent"))[0] # 將位置資訊發出來 msg.reply('%s撤回了一條位置訊息,位置資訊為:【%s】'.decode('utf-8') % (name, map)) else: # 獲取資訊的型別 msg_type = msg_types.get(chat_msg.type).decode('utf-8') # 將資訊轉發出來 chat_msg.forward(chat, prefix='%s撤回了一條%s訊息, 訊息內容為:'.decode('utf-8') % (name, msg_type)) break else: # 如果是群訊息 if isinstance(msg.chat, wxpy.api.chats.group.Group): # 獲取群成員的puid puid = msg.member.puid # 如果是好友訊息 elif isinstance(msg.chat, wxpy.api.chats.friend.Friend): # 獲取好友的puid puid = msg.chat.puid else: puid = None if puid: # 記錄訊息 msgs.setdefault(puid, []).append(msg) # 擷取訊息 保留最大5條記錄 msgs[puid] = msg[puid][-5:] # 使機器人後臺執行,並進入互動模式 wxpy.embed()
也未做過多的測試和優化,測試了文字、圖片、語音、位置資訊,視訊、名片、分享、檔案訊息未做測試
ps:這裡語音訊息撤回後發出來的是語音檔案,位置資訊發出來的是地址的文字
===================================割=======================================
如果想要新增聊天機器人 可以加入:
# 指定一個好友 friend = bot.friends().search('您對朋友的備註') # 指定一個群 group = bot.groups().search('群名') # 例項化圖靈機器人 免費申請圖靈機器人: http://www.tuling123.com/ tu_ling = wxpy.Tuling(api_key="自行註冊") # chats指定對哪些使用者起作用, 如果chats=None(預設值)對所有使用者起作用 @bot.register(chats=[friend, group]) def reply_msg(msg): """ 自動回覆訊息 :param msg: 接收到的資訊資料 :return: 回覆文字 """ # do_reply會自動回覆訊息並返回訊息文字 tu_ling.do_reply(msg)
相關推薦
python使用wxpy輕鬆實現微信防撤回
最近比較閒就隨便瞎看,看到了微信防撤回就順便跟著學著實現一下 使用的是wxpy,安裝方法pip install wxpy(我使用的是python2.7),這樣實現起來比較快,反正也只是練手 首現看了兩個別人實現的程式碼,然後看了看wxpy的文件:http://wxpy.r
Python3.5+PyQt5多執行緒+itchat實現微信防撤回桌面版程式碼(二)
weChatThread執行緒類 之前一直不會python多執行緒,寫這個程式的時候,發現不用多執行緒會陷入無限未響應狀態。於是學了半天python多執行緒,但是在主函式裡寫的時候,發現一個問題,Ui主執行緒和工作執行緒沒有分離,使用itchat等庫的時候會堵
Python3.5+PyQt5多執行緒+itchat實現微信防撤回桌面版(一)
前幾日在某乎看到有大神用itchat實現了微信防撤回功能,,覺得很有趣,看到下面評論很多人求桌面版,於是乎,手癢便利用清明節幾天時間做了一個簡陋的桌面程式。廢話不多說,先上圖位敬。 執行環境 win10專業版64位系統1703創造者更新 開發環
Python3.5+PyQt5多執行緒+itchat實現微信防撤回桌面版程式碼
weChatThread執行緒類 之前一直不會python多執行緒,寫這個程式的時候,發現不用多執行緒會陷入無限未響應狀態。於是學了半天python多執行緒,但是在主函式裡寫的時候,發現一個問題,Ui主執行緒和工作執行緒沒有分離,使用itchat等庫的時候會堵塞主執行緒,換句話說PyQt中
Python3.5+PyQt5多線程+itchat實現微信防撤回桌面版代碼
logs rep not cio backup 界面 sel store for weChatThread線程類 之前一直不會python多線程,寫這個程序的時候,發現不用多線程會陷入無限未響應狀態。於是學了半天python多線程,但是在主函數裏寫的時候,發現一個問題,
Python 實現微信防撤回功能
在微信上突然看到“XXX撤回一條訊息”的時候,心裡癢不癢?現在就教你如何實現訊息防撤回的功能。不限手機型號、手機無需root,只要微訊號可以登上網頁版就可以了(部分不常用和新申請的賬號會登不上網頁版)。 環境 Centos7 python2.
微信防撤回
con rev hand sts location end pat msg alt 1 # -*-encoding:utf-8-*- 2 import os 3 import re 4 import shutil 5 import time
用Python教你微信防撤回(文字、圖片、語音、視訊、名片等...)
大家在使用微信過程中,有時候訊息還沒看到,就被撤回了。畢竟好奇心大家都有,明知到訊息被撤回了,就更想去看一下是什麼內容心裡想著萬一是女神給我表白了呢.. 今天就用Python來做個微信防撤回的小功能。支援文字、圖片、語音、視訊、名片的防撤回。 思路:利用itchat庫將每次接收到的訊息進行快取。監
Mac微信多開與微信防撤回分享
一、關閉Mac上微信 二、開啟應用程式-實用工具-Terminal(終端) 執行下面的命令 輸入curl -o- -L https://raw.githubusercontent.com/lm
手把手教會你Android手機QQ和微信防撤回
如今QQ和微信都能撤回訊息,當對方撤回了訊息,想看又看不了,是不是很想知道對方撤回了什麼?接下來我就來教會大家阻止對方QQ撤回的訊息和檢視微信撤回的訊息。 1.首先,手機需要獲取root許可權(目前有很多app支援手機一鍵root);然後下載安裝Xpoesd框架並激活(Xp
基於wxpy的微信防撤回
目前存在的問題是圖片或者檔案大小有限制,圖片可以先擇先壓縮,在傳送,但是壓縮之後感覺太小,就沒有加入這個功能。# -*- coding:utf-8 -*- from wxpy import * import re import os import ctypes bot =
ImageViewer:打造萬能圖片瀏覽器,輕鬆實現微信朋友圈、今日頭條、橫向列表、縱向列表等圖片瀏覽效果
ImageViewer 關於 圖片預覽器,支援圖片手勢縮放、拖拽等操作,自定義View的模式顯示,自定義圖片載入方式,更加靈活,易於擴充套件,同時也適用於RecyclerView、ListView的
Python輕鬆檢視微信撤回訊息,祕密無處可藏
一個基於python的微信開源庫:itchat,接著我做了一個程式,可以把微信好友撤回的資訊收集起來,然後會自動傳送到我的個人微信的檔案傳輸助手。 程式碼瞭解一下: 將接收到的訊息存放在字典中,當接收到新訊息時對字典中超時的訊息進行清理 | 不接受不具有撤回功能的資訊。 收到note通知類訊
女神把微信訊息撤回後好慌, Python幾十行程式碼輕鬆檢視撤回訊息!
曾幾何時Python對我說:"時日已不多,速度學Python"。於是乎上天讓我看到了一個基於python的微信開源庫:itchat,玩的不亦樂乎,接著我做了一個程式,可以把微信好友撤回的資訊收集起來,然後會自動傳送到我的個人微信的檔案傳輸助手。小夥伴需要Python學習資料的話私信我回復01,會自
python實現檢視微信訊息撤回
娛樂(windows系統) 1.安裝itchat itchat是一個開源的python微信庫,支援傳送訊息、圖片、視訊、地圖、名片、檔案等,還可以實現自動回覆等多種功能。 看到的一個文件還不錯 https://segmentfault.com/a/1190000
微信內如何實現域名防封,微信防封跳轉系統
com 最好 返回 nsf nbsp ans 可用 lose 微信 來源分析 我們常常遇到自己正規的網站鏈接,無端被微信攔截,大家都為這問題苦惱不已,網絡上流傳很多域名防封、二維碼防封、微信防紅的技術,但效果並不理想,因為太多是坑人的無良商家,不可能用代碼就能實現域名防封
Android實戰簡易教程-第二十六槍(基於ViewPager實現微信頁面切換效果)
stat addview data android tid des viewpage 聊天 == 1.頭部布局文件top.xml:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and
cacti實現微信告警功能
cacti 微信告警 背景近來受朋友所托,為他實現cacti的微信告警功能,但是在印象之中,cacti的thold插件貌似只有郵件告警功能吧?於是花了點時間在網絡上搜索了相關信息,發現cacti的微信告警的信息著實很少,唯一看似可用的文章嘗試了下卻無法成功,在那篇文章的基礎上,我修改了一下微信腳本的代
SwipeListView 具體解釋 實現微信,QQ等滑動刪除效果
span 點擊 tor 支持 position pad edi find htm QQ或者微信出現過滑動,近期聯系人列表,能夠刪去當前選中的聯系人,這個功能玩起來非常爽 , 就是試著做了下。事實上是使用了開源框架SwipeListView 。