服务器之家

服务器之家 > 正文

python基于itchat模块实现微信防撤回

时间:2021-06-21 00:46     来源/作者:TANKING-

有时候,女神发来一条消息,说约你看电影,她考虑了一下,又撤回了,不约你了…而你又想知道她究竟发了什么,该怎么办?微信防撤回了解一下。

环境要求

python3
电脑

安装itchat

?
1
pip install itchat

使用代码

新建chehui.py,拷贝以下代码

?
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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
__author__ = 'jiangwenwen'
 
import itchat
from itchat.content import *
import time
import re
import os
 
print("该程序由里客云资源站开发,网址:likeyunba.com")
print("作者:tanking")
print("打开程序会弹出一个二维码,微信扫码")
print("如果二维码弹不出,那就在你这个程序的同一个目录下找到qr.png双击打开扫码")
print("扫码后,出现start auto replying就可以实时监控消息了...")
 
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()

cmd运行即可。

考虑到有一些人没有python环境,我已经打包成可执行文件了,直接双击exe就可以在电脑运行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/weixin_39927850/article/details/88874350

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部