精华内容
下载资源
问答
  • 微信防撤回
    千次阅读
    2022-03-09 13:20:13

    今天介绍一款PC端开源微信防撤回以及多开工具RevokeMsgPatcher

    gitee仓库RevokeMsgPatchericon-default.png?t=M276https://gitee.com/mirrors/RevokeMsgPatcher

    github仓库

    RevokeMsgPatchericon-default.png?t=M276https://github.com/huiyadanli/RevokeMsgPatcher

     

    介绍

    适用于 Windows 下 PC 版微信/QQ/TIM的防撤回补丁。

    微信 实际效果:对方撤回消息后,将在当前聊天记录最下方显示“xxxx 撤回了一条消息”(正常情况下是显示在撤回的那条消息下方的),但是实际消息仍旧存在。

    QQ/TIM 实际效果:对方撤回消息后,你的聊天界面不会有任何变化(无撤回提示),你仍旧能看到对方撤回的消息。

    使用说明

    环境

    用法

    1. 使用本程序前,先关闭微信/QQ/TIM。

    2. 以管理员身份运行本程序,等待右下角获取最新的补丁信息。

    3. 选择微信/QQ/TIM的安装路径。如果你用的安装版的微信/QQ/TIM,正常情况下本程序会自动从注册表中获取安装路径,绿色版需要手动选择路径。

    4. 点击防撤回。界面可能会出现一段时间的无响应,耐心等待即可。

    卸载

    纯绿色程序,直接删除相关文件即可。


     顺便介绍一款手机版微信QQ放防撤回软件Anti-recall

       这是一款免root用于安卓手机的微信QQ防撤回工具,原理是记录手机屏幕记录,因为在撤回之前便记录了一下,故可以回看之前记录。效果与上面介绍的PC版本效果不同,PC版本为对面撤回,但你这里的电脑微信仍然显示;手机版为对面撤回,手机微信也显示撤回,但你可以进去此APP看到撤回的消息记录。

    github仓库

    Anti-recallicon-default.png?t=M276https://github.com/JasonQS/Anti-recall​​​​

    仓库为老版本,已不再更新。最新版本已经商用,订阅费用为每月6元。

    新版本地址防撤回神器 -- Android 免root 查看撤回消息和闪照 !QQ防撤回-QQ查看撤回消息怎么查看-闪照怎么保存-防撤回神器「Anti-recall」微信防撤回-Tim防撤回-自定义通知提醒-防止复读https://anti-recall.com/

    更多相关内容
  • PC端微信防撤回dll组件
  • PC版微信防撤回

    2018-12-21 14:40:44
    PC版微信防撤回版,对方撤回的消息仍然会显示在消息列表中
  • 微信上突然看到“XXX撤回一条消息”的时候,心里痒不痒?现在就教你如何使用python实现消息防撤回的功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
  • 微信防撤回2.7.1.88

    2019-12-28 23:59:23
    微信防撤回,我看最近版本的都没有人投稿,我就发出来试试看看 客户端微信防撤回工具,找见微信安装目录,将文件覆盖即可 客户端微信防撤回工具,找见微信安装目录,将文件覆盖即可 客户端微信防撤回工具,找见...
  • 本文实例为大家分享了python实现微信防撤回神器的具体代码,供大家参考,具体内容如下 手写辛苦,希望给赞 #!/usr/local/bin/python3 # coding=utf-8 import os import re import time import _thread import ...
  • 适用于 Windows 下 PC 版微信/QQ/TIM的防撤回补丁。支持最新版微信/QQ/TIM,其中微信能够选择安装多开功能。
  • 当你用微信和对方聊天时,对方突然撤回了几条消息,你会好奇吗?你会很想知道对方撤回了什么吗? Python实现的微信防撤回小程序,让你轻松获取对方撤回的消息内容
  • 微信防撤回插件

    2019-04-11 17:24:45
    微信防撤回插件,好用不得了,兼容最新版微信,基本不会因为更新微信导致失效。
  • 微信防撤回补丁.zip

    2020-04-28 00:36:48
    防撤回补丁最新版,支持最新版2.9.0.114客户端防撤回工具,找见安装目录,将文件覆盖即可.
  • 微信防撤回补丁

    2019-04-28 19:38:33
    破解教程地址:http://www.bilibili.com/video/av ... oc&ts=1556448077032
  • C#语言PC版微信防撤回源码 在线获取最新版补丁信息 纯C#语言源码
  • 微信防撤回工具

    2018-10-24 17:08:29
    客户端微信防撤回工具,找见微信安装目录,将文件覆盖即可
  • 如果你不想错过消息,又怕别发出来撤回,有不用怕腾讯发现封号。就有这个补丁吧
  • 微信防撤回2.6.x1.rar

    2019-05-23 16:45:37
    一款微信pc版防撤回的补丁,正常安装微信后,再安装这个补丁,
  • 【Python实现】微信防撤回

    千次阅读 2022-03-23 16:43:23
    他总是微信撤回,是有什么东西不能给我看吗?我得想一个法子治治他,看看是不是在外面有人了,哈哈哈…资料点我、点我、点我 2 有微信联想起的哲思 2.1 哲学思维开始冒头 在这个信息量大增的信息时代,每天脑袋要...

    1.前言

    他总是微信撤回,是有什么东西不能给我看吗?我得想一个法子治治他,看看是不是在外面有人了,哈哈哈…资料点我、点我、点我

    在这里插入图片描述

    2 有微信联想起的哲思

    2.1 哲学思维开始冒头

    在这个信息量大增的信息时代,每天脑袋要处理很大的信息量,还是需要了解一点底层逻辑。

    你看中国的名家,它甚至把的问题基本都提到了,也就是中国在前神学时代,它压制不住人类思维向高层开,所以它的神学思脉、哲学思脉都不断地要冒头,但最终部没有冒成典型状态而是一个滞碍状态。

    2.2 哲学期

    再下来哲学期,叫理性思辨淬炼,奠基科学前瞻。它兴起于古希腊,然后成为文艺复兴之后科学时代得以生长的基因。它式微于哥白尼、伽利略和牛顿,也就是以哥白尼、 伽利略和牛顿为标志哲学时代衰微,科学时代兴起,但它们是一个自然衔接过程。

    我举一个例子,牛顿的书名叫《自然哲学的数学原理》,他认为他在做哲学,他不认为他在研究科学。他认为他研究的问题就是古希腊人早期研究的自然哲学问题。

    在这里插入图片描述

    而且你在他的书里不仅看到整个哲学思辨的那个基础,你还看到一个东西神学, 它的God,他认为人类逻辑思境的极致是深入不下去的,那个地方的起点、归原点是God。但是你今天读牛顿的书,你绝读不出宗教和哲学的味道,它已经在其中淡出这个意趣,也就是神
    学哲学意趣淡出,突出的是整个科学第一次系统化宇宙观的表述。所以我们看牛顿学说就能知道,哲学期跟神学期的衔接关系。

    2.3 科学时代

    在这里插入图片描述

    科学时代,大信息量之分化处理,这就是科学时代。

    我在前面一再讲所谓人类文明过程, 就是信息增量过程。我这句话不准确,严格讲,整个宇宙物演进程,就是信息增益进程,也就是整个宇宙一百三十 七亿年的增长过程、发育过程,就是信息量不断增大的过程。

    人类文明只不过继承了这个宇宙物演进程,所以人类文明一路表达为信息增量过程。

    由于信息量越来越大,原来的哲学思辨,从博物学状态,也就是一个人可以掌握所有知识,到信息量太大,任何一个人无法处理如此之大的信息量。

    于是成分科之学,每一个人只能研究一个专业,而且分科越来越细,它表达的是人类智力的分化,继续表达宇宙物演分化进程,这个信息量越来越大,处理越来越精深,任何个人无法承担,于是大家分科处理。我们把这个大信息量分化处理的高精阶段,叫科学阶段。

    以至于像英国鸦片战争,居然开来几十余破船,就把农业文明最发达的大国中国打得惨败,它是一一个极为暴烈的文化代偿形态,它因此也将给自身带来严重的戕害效应,同时也给它自身带来未来紧迫的转型需要。

    文化一定是维护载体生存的。如果一个文化最终显现出越来越大的戕害效应,怀志着这个文化行将衰落了,因此科学的强大力度反而是它快速转型的内在驱动力。

    在这里插入图片描述

    2.4 后科学时代

    最后就是后科学时代,它以超大信息量的维护生存筛选处理为基本方式。什么意思?科学时代任何信息整理理成知识只要能为我所用,都是人类力量的表达。

    3 微信防撤回完整代码奉上

    在这里插入图片描述

    Github项目地址:https://github.com/pig6/wxrobot
    
    #=======导入相关库========
    import reimport tuling_robot
    #========自动接受好友=====
    def auto_accept_friends(msg):    
    #接受好友请求    
    new_friend = msg.card.accept()   
     # 向新的好友发送消息   
     new_friend.send('我已自动接受了你的好友请求')
    
    #=========自动回复=========
    def auto_reply(msg):    
    #关键字回复 or 机器人回复    
    #handle_withdraw_msg(msg)    
    keyword_reply(msg) or tuling_reply(msg)
    #=====关键字回复================
    def keyword_reply(msg):    
    if '你叫啥' in msg.text or '你叫啥名字' in msg.text:        
    return msg.reply('沃德天·维森莫·拉莫帅·帅德布耀')    pass
    
    
    ```python
    #======机器人回复===========
    def tuling_reply(msg):    tuling_robot.auto_reply(msg)
    
    #=======处理系统消息===========
    def handle_system_msg(msg):   
     raw = msg.raw    
     # 4表示消息状态为撤回   
      if raw['Status'] == 4 and msg.bot.is_forward_revoke_msg:        
      # 转发撤回的消息        
      forward_revoke_msg(msg)
    #========转发撤回的消息========
    def forward_revoke_msg(msg):    
    #获取被撤回消息的ID   
     revoke_msg_id = re.search('<msgid>(.*?)</msgid>', msg.raw['Content']).group(1)    
     # bot中有缓存之前的消息,默认200条 
        for old_msg_item in msg.bot.messages[::-1]:       
         # 查找撤回的那条      
           if revoke_msg_id == str(old_msg_item.id):  
                     # 判断是群消息撤回还是好友消息撤回           
                      if old_msg_item.member:               
                       sender_name = '群「{0}」中的「{1}」'.format(old_msg_item.chat.name, old_msg_item.member.name)        
                           else:   
                                        sender_name = '「{}」'.format(old_msg_item.chat.name)    
       # 名片无法转发            
       if old_msg_item.type == 'Card':               
        sex = '男' if old_msg_item.card.sex == 1 else '女' or '未知'                
        msg.bot.master.send('「{0}」撤回了一张名片:\n名称:{1},性别:{2}'.format(sender_name, old_msg_item.card.name, sex))            
        else: 
     # 转发被撤回的消息  
     old_msg_item.forward(msg.bot.master, 
      prefix='{}撤回了一条消息:'.format(sender_name, get_msg_chinese_type(old_msg_item.type)))            return None
    #===============转中文类型名===========
    def get_msg_chinese_type(msg_type):   
     if msg_type == 'Text':        return '文本'    if msg_type == 'Map':       
      return '位置'    if msg_type == 'Card':        return '名片'    if msg_type == 'Note':        
      return '提示'    if msg_type == 'Sharing':        return '分享'    if msg_type == 'Picture':       
       return '图片'    if msg_type == 'Recording':        return '语音'    if msg_type == 'Attachment':       
        return '文件'    if msg_type == 'Video':        return '视频'    if msg_type == 'Friends':       
         return '好友请求'    if msg_type == 'System':       
          return '系统'
    
    #coding: utf-8 -*-
    #=====导入相关库==========
    #import osfrom itchat.content import *import itchat
    
    info = Nonefriend_id = Noneinfo_type = Nonename = Nonecot = Nonerev_tmp_dir = r'E:\科研\跑代码\跑代码\python\微信防测回' + '\\'if not os.path.exists(rev_tmp_dir):    
    os.mkdir(rev_tmp_dir)itchat.login()
    
    @itchat.msg_register([TEXT,RECORDING,PICTURE])def resever_info(msg):   
     global info    global friend_id    global info_type    global name    name = msg['FileName']    info_type = msg['Type']    info = msg['Text']    friend_id = msg['FromUserName']    print(msg)    print(info)
    
    @itchat.msg_register(NOTE)def chehui_info(chehui_msg):    
    global info    global friend_id    global name
        print(chehui_msg)   
         if '撤回了一条消息' in chehui_msg['Text']:       
         if info_type == 'Text':          
           with open(rev_tmp_dir+"文本撤回.txt",'a') as f:                
           f.write(info+'\n')           
            itchat.send(msg=chehui_msg['Text'] + ":" + info, toUserName=friend_id)        
            elif info_type == 'Recording':            
            info(rev_tmp_dir + name)            
            file = '@fil@%s' % (rev_tmp_dir + name)           
             itchat.send(msg=chehui_msg['Text']+":", toUserName='friend_id')          
               itchat.send(msg=file, toUserName='filehelper')       
                elif info_type == 'Picture':            
                info(rev_tmp_dir + name)           
                 file = '@fil@%s' % (rev_tmp_dir + name)           
                  itchat.send(msg=chehui_msg['Text']+":", toUserName='friend_id')           
                   itchat.send(msg=file, toUserName='filehelper')
    
    itchat.run()
    

    今天就到这里,知识嘎嘎增长,下一篇见。

    在这里插入图片描述

    展开全文
  • 当前使用的微信版本:3.6.0.18 可以随便更新微信程序,已经使用了一年多了,也多次升级过电脑版微信,一直可以使用。 使用方法:压缩文件中是一个dll文件,winmm.dll,可直接解压到微信的程序目录中。重新打开就可以...
  • 一个通过终端打开微信并在打开前自动安装微信防撤回插件的命令行工具
  • qq微信防撤回插件qq微信防撤回插件
  • Python3.5+PyQt5多线程+itchat实现微信防撤回桌面版(一)-附件资源
  • 有时候经常有人给你发消息后撤回的,故想着怎么样才能防撤回。防撤回的原理大概就是:在别人点击撤回的时候,他的微信会发送...也可以把微信把撤回的信息变成“xxx撤回了一条信息"代码改掉微信防撤回补丁适用:Win...

    有时候经常有人给你发消息后撤回的,故想着怎么样才能防撤回。

    0499712989d367b930c312026d8ff41b.png

    防撤回的原理大概就是:在别人点击撤回的时候,他的微信会发送“指令“给服务器,服务器会发送“撤回指令"到我们的微信上,这时我们的微信,会把撤回的信息变成“xxx撤回了一条信息" 我们如果想实现防撤回,可以拦截服务器发送“撤回指令”,也可以把微信把撤回的信息变成“xxx撤回了一条信息"代码改掉

    ccf6b55aa801f083c2d99e61c38c9cbf.gif

    微信防撤回补丁

    bd3be974e08458e6f2fb0f04a6638f92.gif

    适用:Windows

    今天给大家分享一个防撤回的补丁,对电脑版微信有效!不需要更改微信配置,即可实现!

    这款新出的防撤回补丁由吾爱破解论坛总版主:云在天大佬编译的小补丁,可以实现防撤回+多开,而且撤回以后还会有提示。

    该插件不足1M的大小,使用起来十分的方便,具体的使用教程可以参考北忘山博客中写好的教程!

    503cf5d9bd17219378d25115f6d71ac0.png

    打不开就直接复制:https://www.beiwangshan.com/2536.html

    到浏览器打开即可

    f18998d89a56b7a63b8cbeff058ff612.gif

    写在最后

    c4d2512bd2c45964266bba79f44c8ccb.gif

    尽管网上有很多关于微信防撤回的软件和方法,但就个人体验而言,今天这个这个方法是最稳妥也是最简单的,感兴趣的小伙伴们可以自行下载,

    免责声明:以上资源皆来源于互联网公开分享的内容,仅用于个人学习使用,请禁止用于商业用途和倒卖,如真正需要,请支持版权方。

    公众号回复“防撤回”获取下载

    如有疑问加QQ群“950136846”进行讨论 」

    展开全文
  • QQ微信防撤回补丁

    2018-04-13 17:48:47
    下载两个文件解压覆盖到qq/bin里面,注意做好备份
  • 现在就教你如何实现消息防撤回的功能。不限手机型号、手机无需root,只要微信号可以登上网页版就可以了(部分不常用和新申请的账号会登不上网页版)。 环境 Centos7 python2.7 itchat 源码 ​ # coding:utf-8...

    导语:

    哈喽吖铁汁萌~不知道大家在wei信上突然看到“XXX撤回一条消息”的时候,心里痒不痒?现在就教你如何实现消息防撤回的功能。不限手机型号、手机无需root,只要微信号可以登上网页版就可以了(部分不常用和新申请的账号会登不上网页版)。

    环境

    Centos7

    python2.7

    itchat 

    源码

    ​
    # coding:utf-8
    
    import itchat
    
    from itchat.content import TEXT
    
    from itchat.content import *
    
    import sys
    
    import time
    
    import re
    
    
    
    reload(sys)
    
    sys.setdefaultencoding('utf8')
    
    import os
    
    
    
    msg_information = {}
    
    face_bug = None  # 针对表情包的内容
    
    
    
    
    
    @itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO], isFriendChat=True,
    
                        isMpChat=True)
    
    def handle_receive_msg(msg):
    
       global face_bug
    
       msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  # 接受消息的时间
    
       msg_from = itchat.search_friends(userName=msg['FromUserName'])['NickName']  # 在好友列表中查询发送信息的好友昵称
    
       msg_time = msg['CreateTime']  # 信息发送的时间
    
       msg_id = msg['MsgId']  # 每条信息的id
    
       msg_content = None  # 储存信息的内容
    
       msg_share_url = None  # 储存分享的链接,比如分享的文章和音乐
    
       print msg['Type']
    
       print msg['MsgId']
    
       if msg['Type'] == 'Text' or msg['Type'] == 'Friends':  # 如果发送的消息是文本或者好友推荐
    
           msg_content = msg['Text']
    
           print msg_content
    
    
    
       # 如果发送的消息是附件、视屏、图片、语音
    
       elif msg['Type'] == "Attachment" or msg['Type'] == "Video" \
    
               or msg['Type'] == 'Picture' \
    
               or msg['Type'] == 'Recording':
    
           msg_content = msg['FileName']  # 内容就是他们的文件名
    
           msg['Text'](str(msg_content))  # 下载文件
    
           # print msg_content
    
       elif msg['Type'] == 'Card':  # 如果消息是推荐的名片
    
           msg_content = msg['RecommendInfo']['NickName'] + '的名片'  # 内容就是推荐人的昵称和性别
    
           if msg['RecommendInfo']['Sex'] == 1:
    
               msg_content += '性别为男'
    
           else:
    
               msg_content += '性别为女'
    
    
    
           print msg_content
    
       elif msg['Type'] == 'Map':  # 如果消息为分享的位置信息
    
           x, y, location = re.search(
    
               "<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg['OriContent']).group(1, 2, 3)
    
           if location is None:
    
               msg_content = r"纬度->" + x.__str__() + " 经度->" + y.__str__()  # 内容为详细的地址
    
           else:
    
               msg_content = r"" + location
    
       elif msg['Type'] == 'Sharing':  # 如果消息为分享的音乐或者文章,详细的内容为文章的标题或者是分享的名字
    
           msg_content = msg['Text']
    
           msg_share_url = msg['Url']  # 记录分享的url
    
           print msg_share_url
    
       face_bug = msg_content
    
    
    
       ##将信息存储在字典中,每一个msg_id对应一条信息
    
       msg_information.update(
    
           {
    
               msg_id: {
    
                   "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec": msg_time_rec,
    
                   "msg_type": msg["Type"],
    
                   "msg_content": msg_content, "msg_share_url": msg_share_url
    
               }
    
           }
    
       )
    
    
    
    
    
    ##这个是用于监听是否有friend消息撤回
    
    @itchat.msg_register(NOTE, isFriendChat=True, isGroupChat=True, isMpChat=True)
    
    def information(msg):
    
       # 这里如果这里的msg['Content']中包含消息撤回和id,就执行下面的语句
    
       if '撤回了一条消息' in msg['Content']:
    
           old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)  # 在返回的content查找撤回的消息的id
    
           old_msg = msg_information.get(old_msg_id)  # 得到消息
    
           print old_msg
    
           if len(old_msg_id) < 11:  # 如果发送的是表情包
    
               itchat.send_file(face_bug, toUserName='filehelper')
    
           else:  # 发送撤回的提示给文件助手
    
               msg_body = "【" \
    
                          + old_msg.get('msg_from') + " 撤回了 】\n" \
    
                          + old_msg.get("msg_type") + " 消息:" + "\n" \
    
                          + old_msg.get('msg_time_rec') + "\n" \
    
                          + r"" + old_msg.get('msg_content')
    
               # 如果是分享的文件被撤回了,那么就将分享的url加在msg_body中发送给文件助手
    
               if old_msg['msg_type'] == "Sharing":
    
                   msg_body += "\n就是这个链接➣ " + old_msg.get('msg_share_url')
    
    
    
               # 将撤回消息发送到文件助手
    
               itchat.send_msg(msg_body, toUserName='filehelper')
    
               # 有文件的话也要将文件发送回去
    
               if old_msg["msg_type"] == "Picture" \
    
                       or old_msg["msg_type"] == "Recording" \
    
                       or old_msg["msg_type"] == "Video" \
    
                       or old_msg["msg_type"] == "Attachment":
    
                   file = '@fil@%s' % (old_msg['msg_content'])
    
                   itchat.send(msg=file, toUserName='filehelper')
    
                   os.remove(old_msg['msg_content'])
    
               # 删除字典旧消息
    
               msg_information.pop(old_msg_id)
    
    
    
    
    
    @itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO], isGroupChat=True)
    
    def handle_receive_msg(msg):
    
       global face_bug
    
       msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  # 接受消息的时间
    
       # groupid = msg['FromUserName']
    
       # chatroom = itchat.search_chatrooms(userName=groupid)
    
       msg_Actual_from = msg['ActualNickName']
    
       # msg_Actual_from = msg['User']
    
       # msg_from = msg_Actual_from['Self']['NickName']
    
       msg_from = msg_Actual_from
    
       msg_time = msg['CreateTime']  # 信息发送的时间
    
       msg_id = msg['MsgId']  # 每条信息的id
    
       msg_content = None  # 储存信息的内容
    
       msg_share_url = None  # 储存分享的链接,比如分享的文章和音乐
    
       print msg['Type']
    
       print msg['MsgId']
    
       if msg['Type'] == 'Text' or msg['Type'] == 'Friends':  # 如果发送的消息是文本或者好友推荐
    
           msg_content = msg['Text']
    
           print msg_content
    
    
    
       # 如果发送的消息是附件、视屏、图片、语音
    
       elif msg['Type'] == "Attachment" or msg['Type'] == "Video" \
    
               or msg['Type'] == 'Picture' \
    
               or msg['Type'] == 'Recording':
    
           msg_content = msg['FileName']  # 内容就是他们的文件名
    
           msg['Text'](str(msg_content))  # 下载文件
    
           # print msg_content
    
       elif msg['Type'] == 'Card':  # 如果消息是推荐的名片
    
           msg_content = msg['RecommendInfo']['NickName'] + '的名片'  # 内容就是推荐人的昵称和性别
    
           if msg['RecommendInfo']['Sex'] == 1:
    
               msg_content += '性别为男'
    
           else:
    
               msg_content += '性别为女'
    
    
    
           print msg_content
    
       elif msg['Type'] == 'Map':  # 如果消息为分享的位置信息
    
           x, y, location = re.search(
    
               "<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg['OriContent']).group(1, 2, 3)
    
           if location is None:
    
               msg_content = r"纬度->" + x.__str__() + " 经度->" + y.__str__()  # 内容为详细的地址
    
           else:
    
               msg_content = r"" + location
    
       elif msg['Type'] == 'Sharing':  # 如果消息为分享的音乐或者文章,详细的内容为文章的标题或者是分享的名字
    
           msg_content = msg['Text']
    
           msg_share_url = msg['Url']  # 记录分享的url
    
           print msg_share_url
    
       face_bug = msg_content
    
    
    
       ##将信息存储在字典中,每一个msg_id对应一条信息
    
       msg_information.update(
    
           {
    
               msg_id: {
    
                   "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec": msg_time_rec,
    
                   "msg_type": msg["Type"],
    
                   "msg_content": msg_content, "msg_share_url": msg_share_url
    
               }
    
           }
    
       )
    
    
    
    
    
    ##这个是用于监听是否有Group消息撤回
    
    @itchat.msg_register(NOTE, isGroupChat=True, isMpChat=True)
    
    def information(msg):
    
    
    
       # 这里如果这里的msg['Content']中包含消息撤回和id,就执行下面的语句
    
       if '撤回了一条消息' in msg['Content']:
    
           old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)  # 在返回的content查找撤回的消息的id
    
           old_msg = msg_information.get(old_msg_id)  # 得到消息
    
           print old_msg
    
           if len(old_msg_id) < 11:  # 如果发送的是表情包
    
               itchat.send_file(face_bug, toUserName='filehelper')
    
           else:  # 发送撤回的提示给文件助手
    
               msg_body = "【" \
    
                          + old_msg.get('msg_from') + " 群消息撤回提醒】\n" \
    
                          + " 撤回了 " + old_msg.get("msg_type") + " 消息:" + "\n" \
    
                          + old_msg.get('msg_time_rec') + "\n" \
    
                          + r"" + old_msg.get('msg_content')
    
               # 如果是分享的文件被撤回了,那么就将分享的url加在msg_body中发送给文件助手
    
               if old_msg['msg_type'] == "Sharing":
    
                   msg_body += "\n就是这个链接➣ " + old_msg.get('msg_share_url')
    
    
    
               # 将撤回消息发送到文件助手
    
               itchat.send_msg(msg_body, toUserName='filehelper')
    
               # 有文件的话也要将文件发送回去
    
               if old_msg["msg_type"] == "Picture" \
    
                       or old_msg["msg_type"] == "Recording" \
    
                       or old_msg["msg_type"] == "Video" \
    
                       or old_msg["msg_type"] == "Attachment":
    
                   file = '@fil@%s' % (old_msg['msg_content'])
    
                   itchat.send(msg=file, toUserName='filehelper')
    
                   os.remove(old_msg['msg_content'])
    
               # 删除字典旧消息
    
               msg_information.pop(old_msg_id)
    
    
    
    
    
    # Main (enableCmdQr = True 时,将会生成二维码图片,如 =2 时二维码乱码的话 改为1 即可
    
    itchat.auto_login(enableCmdQR=2, hotReload=True)
    
    itchat.run()
    
    ​

    如果想看懂代码的话,在有python一点基础的前提下搞懂 Python 中的 装饰器 概念。下面是用到itchat中主要的一段代码​​​​​​​

    def msg_register(self, msgType, isFriendChat=False, isGroupChat=False, isMpChat=False):
    
       ''' a decorator constructor
    
           return a specific decorator based on information given '''
    
       if not (isinstance(msgType, list) or isinstance(msgType, tuple)):
    
           msgType = [msgType]
    
       def _msg_register(fn):
    
           for _msgType in msgType:
    
               if isFriendChat:
    
                   self.functionDict['FriendChat'][_msgType] = fn
    
               if isGroupChat:
    
                   self.functionDict['GroupChat'][_msgType] = fn
    
               if isMpChat:
    
                   self.functionDict['MpChat'][_msgType] = fn
    
               if not any((isFriendChat, isGroupChat, isMpChat)):
    
                   self.functionDict['FriendChat'][_msgType] = fn
    
           return fn
    
       return _msg_register

    运行

    1.连接云服务器,安装pip

     2.使用pip 安装 itchat库 (一个利用微信网页版api接口写的,有兴趣的话可以鼓捣鼓捣)

     3.将脚本文件上传到云服务器

     4.运行代码 1)扫码登录

     2.登录成功.

     效果

    发送消息

     收到信息

      开始撤回

    撤回通知

     可能好多人会说,我没有服务器,该怎么办!其实我放在服务器上是为了二十四小时都在运行,这样可以一直都在防撤回状态了。

    end

    好了这期就分享到这结束了~希望对你们有一些帮助!喜欢的话记得给小编个三连再走噢~🤞🤞

    想领取完整源码跟Python学习资料可点击这行字体

    展开全文
  • Android 免root 微信防撤回神器 Android 免root 微信防撤回神器 Android 免root 微信防撤回神器 Android 免root 微信防撤回神器 Android 免root 微信...
  • Mac微信防撤回安装教程——已失效

    千次阅读 2022-03-27 13:30:27
    安装防撤回插件 在安装好brew后,彻底关闭微信,在终端输入以下代码(可能要挂梯子): brew install sunnyyoung/repo/wechattweak-cli 打开微信-偏好设置查看是否有Tweak插件 如果有Tweak则安装成功。 如果没有安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,101
精华内容 440
关键字:

微信防撤回