python撤销上一步_Python:女神撤回的消息是啥?轻松查看撤回消息只需要这几步...

#!/usr/bin/env python3

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

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

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

'''

Created on 2019-7-10

@author: 北京-宏哥 QQ交流群:707699217

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(

"

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\\>", 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()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值