python撤销_【Python】查看微信撤回消息内容

# coding:utf-8

import itchat

from itchat.content import TEXT

from itchat.content import *

import sys

import time

import re

reload(sys)

sys.setdefaultencoding('utf8')

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 #储存分享的链接,比如分享的文章和音乐

print msg['Type']

print msg['MsgId']

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)) #下载文件

# print 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'] #记录分享的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) #在返回的content查找撤回的消息的id

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.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 #储存分享的链接,比如分享的文章和音乐

print msg['Type']

print msg['MsgId']

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)) #下载文件

# print 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'] #记录分享的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

}

}

)

##这个是用于监听是否有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\>", msg['Content']).group(1) #在返回的content查找撤回的消息的id

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)

# Main

itchat.auto_login(enableCmdQR=True, hotReload=True)

itchat.run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值