目录

一.简介

普通人

python技术人员

1、准备环境

2、itchat介绍

3、itchat使用

4、pycharm解释器写入代码


一.简介

当我们与朋友,亲人,爱人聊天的时候,我估计每个人都经理过,那就是微信撤回功能中所提到的,对方撤回一条消息。

俗话说,说出口的话,如泼出去的水,是收不回的。但今天可以了,在微信和QQ上,你可以撤回你刚刚说的话。当你的手机发出“嘀”的提示音,表示你收到了一条消息。忙打开,迫不及待地看看,是谁又在与自己说话。还没来得及看,或还没有看完,那句话却忽然没了,屏幕上显示“对方撤回了一条消息”。这个时候,我们都会有所感受

每天,我们的手机都会收到大量的信息,包括别人与你说的话,其中的绝大多数,都属于可有可无的话,即垃圾信息。你也许为此不胜其烦,但有一条消息,一定能够引起你的关注,那就是“对方撤回了一条消息”。

一条撤回的消息,就像一个秘密,让你迫切地想去一探究竟;或如一个诱饵,瞬间勾起你强烈的兴趣。你想知道,那是怎样的一句话?是对方不慎讲出的真话,还是一句发错了对象的话?

总之,这个撤回的消息,让人顿生×××。这个时候,就是技术人员出马的时候了,哪门子技术人员?如:Python程序员!

看了上边这种那个图片想必大家都不是很陌生吧。
你是不是遇到过这样的情况,一个微信群,某个臭小子或者女神、男神发了条消息,等到自己有时间去看的时候却被撤回了……总感觉自己突然成为了唯一的吃瓜群众……
又或者你的女神、男神发了个消息,结果没来急看就这样了……
比如......下面这个

内心独白:好想知道对面跟我说了什么了?
内心独白:我要不要直接打电话过去?
内心独白:还是直接问问刚才你发的什么(屁话,人家想让你知道还撤回啊?)

想要知道那条消息是啥,想的心里痒痒?今天就给大家透露一个方法,嘿嘿嘿,接着看吧:
哈哈哈!

普通人

此方法只针对iPhone用户,且只能查看文字消息(Android 用户可以试一下,成不成功吗,这里还是个问号,因为宏哥没有实践,没有实践,就没有发言权)。

此方法对图片、视频神马的没办法的呦!具体操作:

1.首先,进入iPhone的设置页面,设置通知栏。

2.在微信的设置页面,允许微信通知,并且其中的所有选项都修改为允许。

3.这么设置以后有啥效果呢?嘿嘿嘿,小伙伴们想想看,你那丰富的通知栏……懂了吧,啥消息都会给你留在那儿了。

PS:如果你按照我的说法做了,但是仍然没有看到消息,可能是微信APP内的设置选项没有打开,可以打开微信设置——新消息通知——打开通知显示消息详情,然后再试试罗!
小伙伴们拿走不谢!

最后有些人说这么简单,哪里用你教,拜托我也是搜集的一些小技巧,没有提醒,咋么想到这个方法呢?

以上方法撑死了只能看到文字信息,图片语音等等就看不到了,下边介绍代码实现得方法:

ps:安卓手机我试过了很好使的,有兴趣的iPhone手机用户也可以试一下哈!!!

python技术人员

1、准备环境

  • python语言环境
  • python解释器-pycharm

2、itchat介绍

itchat是一个开源的微信个人号接口,通过itchat可以实现微信(好友或微信群)的信息处理,包括文本、图片、小视频、地理位置消息、名片消息、语音消息、动画表情、普通链接、音乐链接、群消息、红包消息、系统消息等,可以对微信的消息进行获取和回复。

3、itchat使用

  • itchat库的安装

1

pip install itchat


  • API
    查看地址

4、pycharm解释器写入代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。

'''

Created on 2019-7-10

@author: 测试架构师北凡   QQ交流群:913569736(备注“csdn000”)

Project:学习和使用python

'''

# 3.导入模块

import itchat

from itchat.content import *

import time

import re

import os

msg_information = {}

# 针对表情包的内容

face_bug = None

@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO], isFriendChat=True, isMpChat=True)

def handle_receive_msg(msg):

    global face_bug

    # 接收消息的时间

    msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    # 在好友列表列表中查询发送信息的好友昵称

    msg_from = itchat.search_friends(userName=msg['FromUserName'])['NickName']

    # 信息发送的时间

    msg_time = msg['CreateTime']

    # 每条信息的ID

    msg_id = msg['MsgId']

    # 储存信息的内容

    msg_content = None

    # 储存分享的连接,比如分享的文章和音乐

    msg_share_url = None

    # 如果发送的消息是文本或者好友推荐

    if msg['Type'] == 'Text' or msg['Type'] == 'Friends':

        msg_content = msg['Text']

        print(msg_content)

    # 如果发送的消息是附件,视频,图片,语音

    elif msg['Type'] == 'Attachment' or msg['Type'] == 'Video' \

        or msg['Type'] == 'Picture'\

            or msg['Type'] == 'Recording':

        # 内容为下载文件名

        msg_content = msg['FileName']

        msg['Text'](str(msg_content))

    # 如果消息是推荐的名片

    elif msg['Type'] == 'Card':

        # 内容是推荐人的昵称和性别

        msg_content = msg['RecommendInfo']['NickName'] + '的名片'

        if msg['RecommendInfo']['Sex'] == 1:

            msg_content += '性别为男'

        else:

            msg_content += '性别为女'

        print(msg_content)

    # 如果消息为分享的位置信息

    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']

        print(msg_share_url)

    face_bug = msg_content

    # 将信息存储在字典中,每一个msg_id对应一条消息

    msg_information.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

            }

        }

)

#这个是用于监听是否有friend消息撤回

@itchat.msg_register(NOTE, isFriendChat=True, isGroupChat=True, isMpChat=True)

def information(msg):

    # 这里如果这里的msg['Content']中包含消息撤回和id,就执行下面的语句

    if '撤回了一条消息' in msg['Content']:

        old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)

        # 得到消息

        old_msg = msg_information.get(old_msg_id)

        print(old_msg)

        # 如果发送的是表情

        if len(old_msg_id)<11:

            itchat.send_file(face_bug, toUserName='filehelper')

        # 发送撤回的提示给文件助手

        else:

            msg_body = "【"\

                       + old_msg.get('msg_from') + "撤回了】\n"\

                       + old_msg.get("msg_type") + "消息:" "\n"\

                       + old_msg.get("msg_time_rec") + "\n"\

                       + r"" + old_msg.get("msg_content")

        # 如果分享的文件被撤回了,那么就将分享的url加在msg_body中发送给文件助手

        if old_msg['msg_type'] == "Sharing":

            msg_body += "\n就是这个链接>" + old_msg.get('msg_share_url')

        # 将撤回消息发送到文件助手

        itchat.send_msg(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" % (old_msg['msg_content'])

            itchat.send(msg=file, toUserName='filehelper')

            os.remove(old_msg['msg_content'])

        # 删除字典旧信息

        msg_information.pop(old_msg_id)

itchat.auto_login(hotReload=True)

itchat.run()

 

运行之后需要扫描二维码登录,登录后微信手机助手就能监测到对方撤回的消息

扫码登录日志撤回测试:

文件传输助手接收到的撤回信息:(你可以在这里查看女神或者男神撤回的信息)

下面介绍.py文件如何生成.exe文件,方便做成exe发送给其他人使用
pycharm编辑器Terminal窗口使用

1

pyinstaller -F .py文件所在绝对路径

成功之后会在python安装路径下的dist文件看到生成的exe文件
PS:python3.6版本下的才能转换成功

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)

可以自助拿走,群号913569736(备注“csdn000”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

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

  1. python控制手机模拟器_Appium+python自动化之连接模拟器并启动淘宝APP(超详解)...

    简介 上一篇讲解完模拟器的安装.配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑 ...

  2. 消息队列超详解(以RabbitMQ和Kafka为例,为何使用消息队列、优缺点、高可用性、问题解决)

    消息队列超详解(以RabbitMQ和Kafka为例) 为什么要用消息队列这个东西? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦.异步.削峰. 解耦:现场画个图来说明一 ...

  3. python学习 -女神或者男神把微信消息撤回后好慌,有了这个妈妈再也不担心你看不到女神或者男神撤回的消息了(超详解)...

    简介 有时候在忙工作,女朋友发了一个消息,就撤回了,但是人天生的都有一颗好奇心,而且在当今这个时代找个女朋友不容易,一个程序猿找一个女朋友更是不容易的.人家好不容易跟你,你还不得把人家当老佛爷侍候着, ...

  4. python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解

    目录 一.安装python(python3.7.4) 1.下载 (1)下载1(32位) (2)下载2(64位) 2.安装 3.配置python环境变量 4.检验python 二.安装anaconda( ...

  5. python菜单怎么做_Python 城市菜单详解(超详解)

    print("--------城市查询系统---------") print("--------按数值进行查询--------") menu={"内蒙 ...

  6. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解

    简介 你有道灵光从天灵盖喷出来你知道吗,年纪轻轻就有一身横练的筋骨,简直百年一见的练武奇才啊,如果有一天让你打通任督二脉,那还不飞龙上天啊.正所谓我不入地狱谁入地狱,警恶惩奸维护世界和平这个任务就交个 ...

  7. Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)

    简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或 ...

  8. Kotlin学习笔记26 协程part6 协程与线程的关系 Dispatchers.Unconfined 协程调试 协程上下文切换 Job详解 父子协程的关系

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1 协程与线程的关系 import kotlinx.coroutines.* import java.util.concu ...

  9. 【学习笔记】【计算机网络【总】】物理层;链路层;网络层;传输层;应用层;详解

    目录 框架 一.计算机网络 1. 层次结构设计 2. 现代互联网拓扑 3. 网络性能指标 二.物理层 三.数据链路层 2.最大传输单元MTU 3.以太网协议详解 四.网络层 - 链接 五.传输层 - ...

最新文章

  1. 独家 | 在Python中使用广义极端学生化偏差(GESD)进行异常检测(附链接)
  2. Swift--逃逸闭包与非逃逸闭包(Swift3.1)
  3. 【BZOJ4720】【NOIP2016】换教室
  4. 研究javascript中的this
  5. Swift extension 扩展实用Tips
  6. JVM的标配参数和X参数
  7. java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...
  8. windows聚焦壁纸不更新_壁纸推荐说 | 爱上你的壁纸,每天更新的免费壁纸软件dynamic theme...
  9. js触发asp.net的Button的Onclick事件
  10. 多人姿态识别框架——AlphaPose
  11. 迎新年\年会背景PSD分层模板
  12. 李飞飞夫妇打造了两件秘密武器,让机器人快速学习人类技能
  13. mysql分组统计查询 张三_MySQL 怎样分组查询
  14. Swift - 属性观察者(willSet与didSet)
  15. paip.提升用户体验------c++ 拖曳使用总结..
  16. Linux CentOS安装增强功能--完整版命令
  17. matlab 一阶微分方程求解,一阶微分方程的matlab数值解法.doc
  18. 摩托罗拉Android 7寸,3.7寸屏600MHz处理器 摩托罗拉MT710评测
  19. 装修新房该不该换电线
  20. 直通车杀手,恶意点击软件开发咨询。 (0)

热门文章

  1. 内外网通过公网IP访问DMZ主机
  2. 思岚APOLLO机器人底盘 助力服务机器人快速实现自主行走
  3. 计算二叉树的深度和叶子结点数
  4. 蚁群算法解决车间调度问题
  5. [Swift通天遁地]八、媒体与动画-(13)CoreText框架实现图文混排
  6. android和ios占有率2018,微博发布2018手机报告:苹果依旧为占有率最高品牌
  7. remix中错误集合
  8. 武汉理工大学新思维研究生英语课文翻译和课后习题答案(1~12单元)
  9. The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit f
  10. (41.1)【JWT-KID漏洞】KID之目录遍历、命令注入、SQL注入