Python 实现还原已撤回的微信消息


Posted in Python onJune 18, 2019

导包效果展示

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

Python 实现还原已撤回的微信消息

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

Python 实现还原已撤回的微信消息

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

程序思路

Python 实现还原已撤回的微信消息

主要由两部分组成:

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

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

程序分析

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

接收信息处理

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

Python 实现还原已撤回的微信消息

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

个人消息处理

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

各类型消息处理

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

Python 实现还原已撤回的微信消息

更新信息字典

Python 实现还原已撤回的微信消息 

处理撤回消息

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

Python 实现还原已撤回的微信消息 

主函数

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

写在最后

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

以上所述是小编给大家介绍的Python 实现还原已撤回的微信消息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
Python实现简易Web爬虫详解
Jan 03 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
几种实用的pythonic语法实例代码
Feb 24 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python计算两个地址之间的距离方法
Jun 09 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 #Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 #Python
python实现五子棋游戏
Jun 18 #Python
解决python中使用PYQT时中文乱码问题
Jun 17 #Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 #Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 #Python
python3.6根据m3u8下载mp4视频
Jun 17 #Python
You might like
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
Python实现CET查分的方法
2015/03/10 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
统计每一学生的平均成绩
2014/06/06 面试题
财务务虚会发言材料
2014/10/20 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
js 数组 fill() 填充方法
2021/11/02 Javascript
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript