安装一个库文件 pip install itchat
防撤回
复制代码
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211# coding:utf-8 import itchat from itchat.content import TEXT from itchat.content import * import sys 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'] # 信息发送的时间 msg_id = msg['MsgId'] # 每条信息的id msg_content = None # 储存信息的内容 msg_share_url = None # 储存分享的链接,比如分享的文章和音乐 if msg['Type'] == 'Text' or msg['Type'] == 'Friends': # 如果发送的消息是文本或者好友推荐 msg_content = msg['Text'] # 如果发送的消息是附件、视屏、图片、语音 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)) # 下载文件 # print msg_content elif msg['Type'] == 'Card': # 如果消息是推荐的名片 msg_content = msg['RecommendInfo']['NickName'] + '的名片' # 内容就是推荐人的昵称和性别 if msg['RecommendInfo']['Sex'] == 1: msg_content += '性别为男' else: 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'] # 记录分享的url print(msg_content) 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) # 在返回的content查找撤回的消息的id old_msg = msg_information.get(old_msg_id) # 得到消息 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.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO], isGroupChat=True) def handle_receive_msg(msg): global face_bug msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 接受消息的时间 # groupid = msg['FromUserName'] # chatroom = itchat.search_chatrooms(userName=groupid) msg_Actual_from = msg['ActualNickName'] # msg_Actual_from = msg['User'] # msg_from = msg_Actual_from['Self']['NickName'] msg_from = msg_Actual_from msg_time = msg['CreateTime'] # 信息发送的时间 msg_id = msg['MsgId'] # 每条信息的id msg_content = None # 储存信息的内容 msg_share_url = None # 储存分享的链接,比如分享的文章和音乐 if msg['Type'] == 'Text' or msg['Type'] == 'Friends': # 如果发送的消息是文本或者好友推荐 msg_content = msg['Text'] # 如果发送的消息是附件、视屏、图片、语音 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)) # 下载文件 # print msg_content elif msg['Type'] == 'Card': # 如果消息是推荐的名片 msg_content = msg['RecommendInfo']['NickName'] + '的名片' # 内容就是推荐人的昵称和性别 if msg['RecommendInfo']['Sex'] == 1: msg_content += '性别为男' else: 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'] # 记录分享的url print(msg_content) 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 } } ) ''' 这个是用于监听是否有Group消息撤回 ''' @itchat.msg_register(NOTE, 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) # 在返回的content查找撤回的消息的id old_msg = msg_information.get(old_msg_id) # 得到消息 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) # Main (enableCmdQr = True 时,将会生成二维码图片,如 =2 时二维码乱码的话 改为1 即可 if __name__ == '__main__': itchat.auto_login(enableCmdQR=2, hotReload=True) itchat.run()
自动回复
复制代码
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# coding=utf8 import requests import itchat import json # 去图灵 注册key KEY = Key inputText = {} inputImage = {} selfInfo = { 'location': { 'city': '上海', 'province': '上海', 'street': '张杨路' } } def get_response(msg): apiUrl = 'http://openapi.tuling123.com/openapi/api/v2' inputText['text'] = msg inputImage['url'] = "imageUrl" data = { 'reqType': 0, 'perception': { 'inputText': inputText, 'inputImage': inputImage, 'selfInfo': selfInfo }, 'userInfo': { 'apiKey': KEY, 'userId': 1, }, } print(data) try: r = requests.post(apiUrl, data=json.dumps(data)).json() print(r) result = [v['values']['text'] for v in r.get('results')] print(result) return ','.join(result) except Exception as e: print('error', e) return @itchat.msg_register(itchat.content.TEXT) def tuling_reply(msg): defaultReply = 'I received: ' + msg['Text'] reply = get_response(msg['Text']) return reply or defaultReply if __name__ == '__main__': itchat.auto_login(hotReload=True) itchat.run()
最后
以上就是小巧哈密瓜最近收集整理的关于微信小工具-防撤回、自动聊天(源代码)的全部内容,更多相关微信小工具-防撤回、自动聊天(源代码)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复