Python骚操作 | 还原已撤回的微信消息

作者:pk哥 公众号:brucepk

一大早醒来,发现女神昨晚发来三条消息,但是显示都已撤回,OMG,我错过了什么?群里有一个漂亮妹纸的爆照照片撤回了,想看又看不到!群里大佬分享的经典语录被撤回了,感觉错过一个亿!怎么办?用无所不能的 Python 就可以将这些撤回的消息发给你的微信,让你从此走上人生巅峰

项目环境

语言:Python3 编辑器:Pycharm

导包

itchat:控制微信的第三方库

这个库相信大家不陌生了,之前写的 Python 机器人陪你聊天 Python 定时给女神发早安 两篇文章里用的 wxpy 库就是在 itchat 库的基础上封装的。

效果展示

以下截图显示的撤回消息类型依次是文字消息、微信自带表情、图片、语音、定位地图、名片、公众号文章、音乐、视频。有群里撤回的,也有个人号撤回的。

程序思路

主要由两部分组成: handler_receive_msg():处理接收到的消息,将消息临时放在字典中。 send_msg_helper():将撤回的消息自动发给文件传输助手。

程序分析

首先,我们定义一个字典来储存消息,定义消息储存的临时路径。

接收信息处理

先将我们需要处理的消息用 msg_register 装饰器进行注册,格式化本地时间,定义消息 ID 和消息时间。如果是群成员而且是自己微信好友撤回消息,则显示撤回消息的名称是你备注的名字,如果没有备注名字,则显示名称为微信昵称。

获取你的所有群的消息,判断出撤回的消息来自哪个群,显示出群名称。

个人消息处理

如果为个人聊天信息,也是优先显示备注名称,没有备注名就显示昵称。

各类型消息处理

用判断语句对各种类型的消息进行处理,包括文字消息、微信自带的表情和收藏的表情、图片、语音、位置、名片、分享、附件、视频。多条件时这里用了 in 的用法,还记得之前讲 Python 优雅的写法 文章里把用 or 连接条件改成用 in,代码更简洁,这样我们通过项目不断的巩固之前学到的知识点,这样才能不断进步。

更新信息字典

处理撤回消息

先判断是否是撤回消息,将撤回消息发送到你的文件传输助手里,把上面函数储存的消息的发送人、发送类型、发送时间、撤回的内容发出来。以下是部分代码。

主函数

最后用主函数执行微信的登录和运行。第一次需要扫码登录微信,登录时加上 hotReload 参数,为 True 时,短时间内再次运行会保存上次微信的登录态,不需要再次扫码登录。

if __name__ == '__main__':
    itchat.auto_login(hotReload=True)
    itchat.run()

如果你电脑中有安装 Python 环境,在编辑器中直接运行源码或者在 cmd 中运行 py 文件即可。源码获取方式在文末给出。有需要的话以后可以做成界面化工具,挂在服务器上,支持做成界面化工具的点个赞

看看,我看看需求量,哈哈。

写在最后

今天的分享就到这里了,需要优化的地方:撤回的视频只支持查看微信自带拍的视频,非微信自带拍的视频打开无法查看。长时间运行时会报 ConnectionError 提示的错误,但是不影响发送撤回消息的功能,后期加个异常捕捉机制优化下。

赶紧动手试试吧,把你朋友撤回的消息发给 TA 看看,看看他是什么反应,有趣的撤回消息发到朋友圈去提高逼格,奈斯!

在公众号后台回复「撤回」获取本项目的源码。

原创不易,觉得有意思的点赞

原文发布于微信公众号 - 日常学python(daily_learn)

原文发表时间:2018-09-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木头编程 - moTzxx

PHP 网站应用微信登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1K30
来自专栏余林丰

MyBatis之级联小结

在这之前我们知道了MyBatis为我们提供了三种级联:一对一关系(assocation)、一对多关系(collection)、鉴别器(discriminator...

20780
来自专栏blackpiglet

如何在 Kubernetes 环境中搭建 MySQL (一):简介

  最近因为工作上的需求,搭建了一套部署在 Kubernetes 环境中的 MySQL,可能听起来就是让 MySQL 的 docker image 跑在 Kub...

17250
来自专栏Golang语言社区

数据库集群技术漫谈

简介 当今世界是一个信息化的世界,我们的生活中无论是生活、工作、学习都离不开信息系统的支撑。而信息系统的背后用于保存和处理最终结果的地方就是数据库。因此...

35350
来自专栏Timhbw博客

小白搭建博客教程之流程

2016-03-1209:03:37 发表评论 431℃热度 搭建个人博客其实说简单也简单,说难也难,当初我一个独自探索,到现在也差不多摸清门路了,因此写一个...

478100
来自专栏智能计算时代

在裸机与虚拟机上运行容器:性能和优点

根据最近的研究,Docker正在像野火一样蔓延,特别是在企业中,它的采用率从2015年的13%上升到了27%以上;另有35%的公司计划使用Docker。根据这些...

92640
来自专栏idealclover的填坑日常

从零开始折腾博客(1):服务器,购买和配置

独立服务器:顾名思义,就是一个躺在机房的实实在在的物理服务器,专属于你,和你家的主机没啥区别,除了24小时运行。不过既然是专属的,价格嘛...

87340
来自专栏腾讯大讲堂的专栏

别了,我的App?我的小程序来了!

19830
来自专栏算法channel

BAT面试14: 谈谈 docker 在深度学习任务中的应用

Docker是一种容器技术,它就像一个沙盒把应用程序隔离开来,不管有没有遇到过你至少听到某些应用程序不能兼容,最常见的就是升级某个系统,老版本跟新版本不能兼容,...

33130
来自专栏云计算D1net

Docker中运行的Java 9将能调整内存限制

OpenJDK 9中首次新增了一项实验性功能,JVM可借助该功能检测到自己运行在容器中,进而酌情调整内存限制。尽管过去几年来容器技术日渐流行,但包括JVM在内的...

36970

扫码关注云+社区

领取腾讯云代金券