用Python实现微信撤回消息还原

在使用微信过程中,有时候我们会撤回一些发错或者不该发的一些信息,今天我就用一段代码实现将撤回的消息还原。。。

从此再也不怕别人撤回消息,自己不能看的尴尬了

import os
import re
import shutil
import time
import itchat
from itchat.content import *

# 说明:可以撤回的有文本文字、语音、视频、图片、位置、名片、分享、附件
# {msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}
msg_dict = {}

# 文件存储临时目录
rev_tmp_dir = "/home/worker/Desktop/wechat"
if not os.path.exists(rev_tmp_dir): os.mkdir(rev_tmp_dir)

# 表情有一个问题 | 接受信息和接受note的msg_id不一致 巧合解决方案
face_bug = None

# 将接收到的消息存放在字典中,当接收到新消息时对字典中超时的消息进行清理 | 不接受不具有撤回功能的信息 # [TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO, FRIENDS, NOTE]
@itchat.msg_register([TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO])
def handler_receive_msg(msg):
    global face_bug
    # 获取的是本地时间戳并格式化本地时间戳 e: 2017-04-21 21:30:08
    msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 消息ID
    msg_id = msg['MsgId']
    # 消息时间
    msg_time = msg['CreateTime']
    # 消息发送人昵称 | 这里也可以使用RemarkName备注 但是自己或者没有备注的人为None
    msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickName"]
    # 消息内容
    msg_content = None
    # 分享的链接
    msg_share_url = None
    if msg['Type'] == 'Text' \
            or msg['Type'] == 'Friends':
        msg_content = msg['Text']
    elif msg['Type'] == 'Recording' \
            or msg['Type'] == 'Attachment' \
            or msg['Type'] == 'Video' \
            or msg['Type'] == 'Picture':
        msg_content = r"" + msg['FileName']
        # 保存文件
        msg['Text'](rev_tmp_dir + msg['FileName'])
    elif msg['Type'] == 'Card':
        msg_content = msg['RecommendInfo']['NickName'] + r" 的名片"
    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']
        face_bug = msg_content
    # 更新字典
    msg_dict.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
            }
        }
    )


# 收到note通知类消息,判断是不是撤回并进行相应操作
@itchat.msg_register([NOTE])
def send_msg_helper(msg):
    global face_bug
    if re.search(r"\<\!\[CDATA\[.*撤回了一条消息\]\]\>", msg['Content']) is not None:
        # 获取消息的id
        old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)
        old_msg = msg_dict.get(old_msg_id, {})
    if len(old_msg_id) < 11:
        itchat.send_file(rev_tmp_dir + face_bug, toUserName='filehelper')
        os.remove(rev_tmp_dir + face_bug)
    else:
        msg_body = "告诉你一个秘密~" + "\n" \
                   + old_msg.get('msg_from') + " 撤回了 " + old_msg.get("msg_type") + " 消息" + "\n" \
                   + old_msg.get('msg_time_rec') + "\n" \
                   + "撤回了什么 ⇣" + "\n" \
                   + r"" + old_msg.get('msg_content')
    # 如果是分享存在链接
    if old_msg['msg_type'] == "Sharing": msg_body += "\n就是这个链接➣ " + old_msg.get('msg_share_url')


    # 将撤回消息发送到文件助手
    itchat.send(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' % (rev_tmp_dir + old_msg['msg_content'])
    itchat.send(msg=file, toUserName='filehelper')
    os.remove(rev_tmp_dir + old_msg['msg_content'])
    # 删除字典旧消息
    msg_dict.pop(old_msg_id)

if __name__ == '__main__':

    #登陆使用的是itchat提供了auto_login方法,调用即可完成登录

    #通过以下命令可以在登陆的时候使用命令行显示二维码

    itchat.auto_login(hotReload=True)
    itchat.run()

代码直接复制,就能用,只不过,要自己先把包自己安装一下

下面展示一下效果:

撤回的消息会在文件助手里还原给你






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19831.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习 -对象把微信消息撤回后好慌,有了这个你就能看到撤回的消息了(超详解)

目录​​​​​​​ 一.简介 普通人 python技术人员 1、准备环境 2、itchat介绍 3、itchat使用 4、pycharm解释器写入代码 一.简介 当我们与朋友&#xff0c;亲人&#xff0c;爱人聊天的时候&#xff0c;我估计每个人都经理过&#xff0c;那就是微信撤回功能中所提到的…

微信能自定义“撤回消息”? QQ 笑了!

大家有没有遇到过和小伙伴聊天&#xff0c;结果输入法突然崛起&#xff0c;等到你撤回的时候尴尬到不行的窘境&#xff1f; 没办法&#xff0c;只好撤回...&#xff08;咳咳&#xff0c;只能说我的输入法已经妖魔化了 但是小伙伴的&#xff1f;号已经紧随其后&#xff0c;要是…

Telegram防撤回工具(Windows)

使用方法 Telegram v2.8.5 及之后版本 使用最新版本补丁将 TAR-Resources文件夹 、TAR-Launcher-x64.exe 、TAR-Launcher-x86.exe 全部解压到Telegram根目录 通过 TAR-Launcher-x64.exe 或 TAR-Launcher-x86.exe&#xff08;取决于你安装的Telegram版本&#xff0c;如果不知道…

用python实现监听微信撤回消息

import itchat from itchat.content import * import os import time import xml.dom.minidom temp d:/itchat / 撤回的消息 if not os.path.exists(temp):os.mkdir(temp)itchat.auto_login(True) dict {} itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, …

Git回退已经提交commit的(还未推送push的)代码及撤回代码回退

1.Git回退已经提交的代码 原文链接&#xff08;原文写的是已经推送push的代码&#xff09; http://t.csdn.cn/CDjgq 已经开始难过了&#xff0c;我提交后没有推送就按照上文提示进行了代码回退&#xff0c;结果idea里面没得我最后一次提交的代码。。。然后我开始了第二轮操作…

用Python找回微信撤回信息,(来自程序员的小骄傲)就算你撤回我也看的到~

微信&#xff08;WeChat&#xff09; 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序&#xff0c;由张小龙所带领的腾讯广州研发中心产品团队打造 。在互联网飞速发展的下、民众的需求下&#xff0c;微信已经更新到2.6.2.31版本&#xff0c;全民…

微信PC版防撤回

人总是有好奇心的&#xff0c;好友发了微信消息&#xff0c;然后撤回了&#xff0c;就很想知道&#xff0c;但是又不好意思问。。。。 万一是女神表白呢&#xff1f;哈哈~~~~ 网上也有很多教程。这里仅为记录一下。用别人放网上的又感觉不安全。。遂自己折腾一下。。 好了言…

Mac版本QQ消息防撤回

1、完全退出QQ 2、已安装git 3、打开应用程序-实用工具-Terminal(终端) 4、执行以下命令并根据提示输入密码即可 输入 cd ~/Downloads && rm -rf QQPlugin && git clone https://github.com/dmcdark/QQPlugin --depth1 && ./QQPlugin/Other/Instal…

QQ消息 pc端防撤回

易语言编写的 QQ消息防撤回 理论上支持这个版本的上下区间&#xff0c;大家可以自己测试&#xff0c;不行的话可以恢复&#xff01; 原理是通过定位码修改IM.DLL数据 源码仅调用了精易模块7.1.1版本&#xff0c;自己下载 源码下载地址 链接: https://pan.baidu.com/s/13MW…

如何用Python查看微信好友撤回的消息?

首先声明&#xff0c;本文主要就是在试图复现这篇文档中所说的&#xff1a; https://cloud.tencent.com/developer/article/1701130 因此要是下文中有什么讲的不清楚的地方&#xff0c;大家也可以参考上面这篇文档。 一、pip Install itchat 既然都用python解决问题了&#xff…

想查看微信好友撤回的消息?Python帮你搞定

要说微信最让人恶心的发明&#xff0c;消息撤回绝对能上榜。 比如你现在正和女朋友用微信聊着天&#xff0c;或者跟自己喜欢的女孩子聊着天&#xff0c;一个不留神&#xff0c;你没注意到对方发的消息就被她及时撤回了&#xff0c;这时你很好奇&#xff0c;好奇她到底发了什么…

【神器出炉】微信/QQ/TIM,如何查看对方撤回的消息?

Ⅰ、对方撤回消息看不到&#xff1f;&#xff1f;&#xff1f; 你是否经常遇到朋友发了消息又撤回的情况&#xff1f;感觉错过了一个亿&#xff1f; 想要知道撤回了啥&#xff0c;怎么办&#xff1f;&#xff1f; 别慌&#xff0c;这样的工具又双叒叕地来了&#xff01;&…

如何用Python记录微信撤回的消息

首先声明&#xff0c;本文主要就是在试图复现这篇文档中所说的&#xff1a; 想查看微信好友撤回的消息&#xff1f;Python帮你搞定 因此要是下文中有什么讲的不清楚的地方&#xff0c;大家也可以参考上面这篇文档。&#xff08;总感觉腾讯云里面抓来一篇教自动化爬微信的工具的…

人工智能公司Adept完成3.5亿美元融资 要抓住ChatGPT热潮

雷递网 乐天 3月15日 人工智能初创公司Adept日前宣布&#xff0c;公司已经完成了3.5亿美元的B轮融资&#xff0c;由General Catalyst和Spark Capital领投。Adept希望利用竞争对手OpenAI的ChatGPT引发的聊天机器人热潮机会。 当前&#xff0c;Adept正在构建可以在数字世界中采取…

chatgpt赋能python:如何正确删掉Python代码

如何正确删掉Python代码 介绍 在编写Python代码时&#xff0c;难免会出现一些多余或者错误的代码。为了保持代码的整洁和高效&#xff0c;我们需要学会如何正确地删掉Python代码。本文将介绍一些实用的方法和技巧&#xff0c;帮助您轻松删除不必要的代码。 方法 1. 手动删除…

新手小白如何使用Laf免费接入Claude,并快速拥有一个属于自己的AI助手

一、关于Claude 1.什么是Claude&#xff1f; Claude是一款人工智能聊天机器人。它可以像朋友一样和你自然地互动聊天。和Claude聊天体验很像跟人聊天&#xff0c;你可以讨论任何话题&#xff0c;问各种各样的问题。Claude会尽量理解你说的每一句话&#xff0c;并给出合适的回…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 思维链

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 思维链 在本节中,我们将重点讨论要处理输出的任务,这些任务通常通过一系列步骤来获取输入并生成有用的输出。有时,在回答特定问题之前,模型详细推理问题是很重要的。如果你参加了我们之前为开发人…

使用 Python 的ChatGPT API 的简单指南

OpenAI 刚刚发布了 ChatGPT API.这是一个调用 GPT-3.5-Turbo 的 API&#xff0c;与 ChatGPT 产品中使用的模型相同。 对于那些已经熟悉 Python 中的 OpenAI API 的人来说&#xff0c;学习如何使用 ChatGPT API 应该很简单&#xff0c;但仍有一些概念是该 API 独有的&#xff0…

AI 绘图新玩法:「艺术风二维码」保姆级中文教程,一分钟出图,定制你专属微信二维码!...

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; ​最近AI绘图界又出了一个现象级的玩法&#xff0c;「艺术化二维码」生成&#xff0c;先看个网上比较火的图了解一下。 上面这个图就是今天介绍的这个「艺术化二维码」生成网站&…

华为联手“北斗”、4年打磨昆仑玻璃……揭秘 Mate 50 背后的技术故事!

整理 | 朱珂欣 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 近年来&#xff0c;华为总是自带“热搜”的体质。年初时&#xff0c;“华为又给员工分红了”的话题&#xff0c;引发不少网友的讨论热潮。 1 月 31 日&#xff0c;《品牌强国之路》纪录片华为篇上…