微信号:Reboot51

介绍:专注于互联网运维开发分享、交流,让更多的运维工程师更加专注于自动化,为国内公有云开发、监控、运维贡献自己的力量.这里聚集着国内一线互联网工程师,乐于分享与交流 .

Python 神操作,还原已撤回的微信消息

2018-11-05 18:01 PK 哥


项目环境


语言:Python3

编辑器:Pycharm

导包效果展示

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

图文来源:http://kks.me/aULmF


图文来源:http://kks.me/aULmF


程序思路



主要由两部分组成:

handler_receive_msg():处理接收到的消息,将消息临时放在字典中。

send_msg_helper():将撤回的消息自动发给文件传输助手。


程序分析


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


接收信息处理


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


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


个人消息处理

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


各类型消息处理

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



更新信息字典


处理撤回消息


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


主函数


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


写在最后


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

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

觉得不错,点赞、转发朋友圈都是一种支持。


第20期 Python零基础入门班

51Reboot 第20期 Python 零基础运维自动化【入门班】正在火热招生中,详情扫码咨询课程顾问




 
Reboot 更多文章 Nginx 配置 fastcgi cache 无监控不运维——使用 Python 写一个小小的项目监控 给对方发个邮箱就可以使对方自动关机,鬼知道你干了什么? 如何用 Python 实时监控文件?方法有三种你喜欢哪一种? 只要学好这4步,Python入门不是事,轻松入门一天搞定
猜您喜欢 不可思议的“黑科技”就在南京软博会 如何在 iOS 中实现一个可展开的 Table View" 程序员如何快速达到月薪3万 Android性能测试(三)内存检测工具--DDMS 百度咋做长文本去重(一分钟系列)