大家在使用微信过程中,有时候消息还没看到,就被撤回了。毕竟好奇心大家都有,明知到消息被撤回了,就更想去看一下是什么内容。

心里想着万一是女神给我表白了呢… 今天的Python学习教程就教大家用Python来做个微信防撤回的小功能。支持文本、图片、语音、视频、名片的防撤回。

思路:

利用itchat库将每次接收到的消息进行缓存。监听撤回事件,当有消失被撤回时,通过msgId去缓存中取到信息再发送给文件传输助手。这样就实现了一个简单的防撤回功能。

效果图

Python学习教程操作:将接收的消息缓存

import itchatfrom itchat.content import *import datetimeimport reimport os# 微信接受的信息存储路径FILE_PATH = '/home/wechat/'# 存放微信消息的缓存字典MSG_DICT = {}# 微信消息类型字典MSG_MESSAGE = {'Text': '文本', 'Map': '位置分享', 'Sharing': '分享链接','Picture': '图片', 'Video': '视频', 'Card': '名片','Attachment': '附件', 'Recording': '语音'}"""监听消息"""# 监听的消息类型 为TEXT, MAP, SHARING, PICTURE, VIDEO, CARD, RECORDING, ATTACHMENT@itchat.msg_register([TEXT, MAP, SHARING, PICTURE, VIDEO, CARD, RECORDING, ATTACHMENT])def wechat_msg(msg):# 获取消息idmsg_id = msg['MsgId']# 当前时间msg_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')# 发送人msg_from = itchat.search_friends(userName=msg['FromUserName'])['RemarkName']# 备注为空 获取昵称if not msg_from:msg_from = itchat.search_friends(userName=msg['FromUserName'])['NickName']# 内容msg_text = msg['Text']# 消息类型msg_type = msg['Type']msg_url = None# 消息为视频、照片、语音、附件的时候需要进行保存save_type = [VIDEO, PICTURE, RECORDING, ATTACHMENT]if msg_type in save_type:# 保存文件msg['Text'](FILE_PATH + msg['FileName'])msg_text = msg['FileName']# 消息类型为地图、分享链接时 记录urlurl_type = [MAP, SHARING]if msg_type in url_type:msg_url = msg['msg_url']# 名片if msg_type == CARD:sex = msg['RecommendInfo']['Sex']if sex == 1:sex = '小哥哥'elif sex == 2:sex = '小姐姐'else:sex = 'ladyBoy'msg_text = f'来自{msg["RecommendInfo"]["Province"]} { msg["RecommendInfo"]["City"]}的 {msg["RecommendInfo"]["NickName"]} {sex} 的名片.'# 消息放入字典中MSG_DICT[msg_id] = {'msg_from': msg_from, 'msg_time': msg_time, 'msg_text': msg_text, 'msg_url': msg_url, 'msg_type': MSG_MESSAGE[msg_type]}print({'msg_from': msg_from, 'msg_time': msg_time, 'msg_text': msg_text, 'msg_url': msg_url, 'msg_type': MSG_MESSAGE[msg_type]})

我们将微信接收到的文本、视频、语音、图像、附件等消息类型都缓存到了MSG_DICT这个字典当中。下面我们就可以对 撤回 事件进行监听

Python学习教程:监听撤回、发送撤回内容

# 监听微信事件,@itchat.msg_register([NOTE])def get_withdraw_message(msg):# 文本消息content = msg['Content']print('监听事件...')# result = re.search(r"\<\!\[CDATA\[.*撤回了一条消息]\]\>", msg['Content'])# 判断是否是撤回消息pattern = re.compile(r"\<\!\[CDATA\[.*撤回了一条消息]\]\>")match = pattern.findall(content)"""msg 内容'<sysmsg type="revokemsg"><revokemsg><session>wxid_ajl8ccgq8ehf22</session><oldmsgid>1671792812</oldmsgid><msgid>3341430144853335059</msgid><replacemsg><![CDATA["初一丶" 撤回了一条消息]]></replacemsg></revokemsg></sysmsg>'"""# 有撤回的消息if match:# 获取撤回消息的msg_idwithdraw_msg_id = re.search(r"\<msgid>(.*?)\<\/msgid", content).group(1)if MSG_DICT:# 获取撤回消息的内容withdraw_msg = MSG_DICT.get(withdraw_msg_id)# 构建消息文本semd_msg = withdraw_msg.get('msg_from') + '撤回了他在' + withdraw_msg.get('msg_time') + \'发送的' + withdraw_msg.get('msg_type') + '消息。' + '内容为:' + withdraw_msg.get('msg_text')print(semd_msg)# 撤回信息的消息类型type = withdraw_msg['msg_type']# 如果是地图、或者分享信息的时候 拼接urlif type in [MAP, SHARING]:semd_msg += "信息链接为:" + withdraw_msg.get('msg_url')# 将文本信息发送至文件传输助手result = itchat.send(semd_msg, toUserName='filehelper')# 如果是['视屏', '图片', '语音', '附件'] 发送相应文件file = FILE_PATH + withdraw_msg['msg_text']if type in ['视频', '图片', '语音', '附件']:# 发送文件至传输助手result = itchat.send_file(file, toUserName='filehelper')# 发送图片也可以# result = itchat.send_image(file, toUserName='filehelper')# 发送视频# result = itchat.send_video(file, toUserName='filehelper')# 将已发送的文件 从硬盘上删除os.remove(file)# 从字典中删除已发送的文件del MSG_DICT[withdraw_msg_id]if __name__ == '__main__':# 微信热登录itchat.auto_login(True)# 启动itchat.run()

有兴趣的伙伴可以试一下的,这篇关于微信防撤回的教程,去年就在琢磨跟大家出了。库存啦哈哈哈!更多的Python学习教程和Python实用小技巧也会继续为大家更新!

一篇关于微信防撤回(文本、图片、语音、视频、名片等...)的Python学习教程相关推荐

  1. 关于微信防撤回(文本、图片、语音、视频、名片等...)的Python学习教程

    大家在使用微信过程中,有时候消息还没看到,就被撤回了.毕竟好奇心大家都有,明知到消息被撤回了,就更想去看一下是什么内容. 心里想着万一是女神给我表白了呢- 今天的Python学习教程就教大家用Pyth ...

  2. python web微信应用(五) 自动下载接收的图片/语音/视频/普通文件

    文章目录 前言 一.webwx 模块介绍 二.自动下载接收的图片/语音/视频/普通文件到本地 前言 本篇文章作为系列第五篇文章,将实现自动下载接收到的图片.语音.视频.普通文件的功能: 系列其它文章请 ...

  3. python接收微信消息_【Python写微信防撤回脚本】02 接收记录聊天信息

    上一期我们安装好了ItChat,并且学会用它登录微信.想知道它还能做什么?往下滑吧~ 接收好友信息 利用ItChat登录微信之后,我们就可以自动记录好友发来的信息. 话不多说,直接上代码: impor ...

  4. python微信库wxpy_python wxpy微信防撤回功能

    python使用wxpy轻松实现微信防撤回的方法 最近比较闲就随便瞎看,看到了微信防撤回就顺便跟着学着实现一下 使用的是wxpy,安装方法pip install wxpy(我使用的是python2.7 ...

  5. 微信防撤回python代码_python实现微信防撤回神器

    本文实例为大家分享了python实现微信防撤回神器的具体代码,供大家参考,具体内容如下 手写辛苦,希望给赞 #!/usr/local/bin/python3 # coding=utf-8 import ...

  6. python 基于itchat详解微信防撤回程序

    itchat学习笔记请见另一文章 文章目录 0. 选题背景 1. 发现问题 2. 提炼问题 3. 解决方案 4. 分析设计 4.0 准备 问题4.1 : 如何用程序登录自己的微信账号? 问题4.2 : ...

  7. 信息时代——微信防撤回(Python实现)

    目录 1 前言 2 有微信联想起的哲思 2.1 哲学思维开始冒头 2.2 哲学期 2.3 科学时代 2.4 后科学时代 3 微信防撤回完整代码奉上 1 前言 她总是微信撤回,我得想一个法子治治她,哈哈 ...

  8. 手把手教会你Android手机QQ和微信防撤回

    如今QQ和微信都能撤回消息,当对方撤回了消息,想看又看不了,是不是很想知道对方撤回了什么?接下来我就来教会大家阻止对方QQ撤回的消息和查看微信撤回的消息. 1.首先,手机需要获取root权限(目前有很 ...

  9. GitHub上这个微信防撤回的开源项目,99%的程序员不知道

    我知道你知道很多种微信消息的撤回方式,如果你一种都不知道,那么请你往下看. 关于微信发错消息的尴尬,估计大家都有不堪回首的历史. 开个玩笑 假如你是这个老板? 画面引起极度不适,[手动捂脸] 你想想, ...

  10. 自制PC微信防撤回补丁教程

    转自:源1 前两天看 GitHub 发现一个有趣的项目,PC微信防撤回补丁,本着研究学习的目的,在看过源码,一顿疯狂操作之后,了解了其原理是基于修改 wechatwin.dll 达到防撤回的. 于是乎 ...

最新文章

  1. 一年暴涨近20倍,比特币是郁金香泡沫还是庞氏骗局?
  2. 这就是那个feature map256 256向量
  3. 6年Microsoft MVP,是否还能坚持4年?
  4. CentOS 6.5 搭建NFS文件服务器
  5. C语言之加入头文件<stdbool.h>可以使用true和false
  6. 一份从 0 到 1 的 Java 项目实践清单
  7. Python调用API接口的几种方式
  8. PDO NOsuch file 将DNHOST修改
  9. 朱福喜 java_与朱福喜的教科同步JAVA实验指导书
  10. 计算机遥感毕设选题,遥感硕士毕业论文题目
  11. Multisim10.0.1汉化时没有stringfiles问题
  12. apicloud中阿里云推送使用
  13. 【测试】11月11日的测试
  14. java中cbrt_JavaScript中带有示例的Math.cbrt()方法
  15. 自媒体账号如何快速涨粉?
  16. Python工程师需要学习的知识总结,送给需要的人
  17. IDEA导入scala详解
  18. 大数据学习中虚拟机准备工作(centos基础配置)
  19. 2022-04-01每日刷题打卡
  20. 【Android】Activity详解

热门文章

  1. 商城购物系统设计与实现(Java毕业设计-SSM项目)
  2. 音频编解码介绍(最全v1.0)
  3. 通过python操作GeoLite2-City.mmdb库将nginx日志访问IP转换为城市写入数据库
  4. 浅谈对JAVA堆栈的理解
  5. 校园智能安防监控解决方案
  6. 二阶有源带通滤波器滤波原理
  7. python炫彩界面_炫彩界面库和火花脚本编辑框scintilla制作python IDE框架
  8. 工科数学分析 MA_12 Vectors and the Geometry of Space (下篇)
  9. 存储基础知识--存储网络
  10. 膜拜高手!Python竟然开发命令行版网易云音乐!