#{msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}
msg_dict={}
#文件存储临时目录
rev_tmp_dir="/home/alic/RevDir/"
ifnotos.path.exists(rev_tmp_dir):os.mkdir(rev_tmp_dir)
#表情有一个问题|接受信息和接受note的msg_id不一致巧合解决方案
face_bug=None
#将接收到的消息存放在字典中,当接收到新消息时对字典中超时的消息进行清理|不接受不具有撤回功能的信息
#[TEXT,PICTURE,MAP,CARD,SHARING,RECORDING,ATTACHMENT,VIDEO,FRIENDS,NOTE]
@itchat.msg_register([TEXT,PICTURE,MAP,CARD,SHARING,RECORDING,ATTACHMENT,VIDEO])
defhandler_receive_msg(msg):
globalface_bug
msg_time_rec=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())
#消息ID
msg_id=msg['MsgId']
msg_time=msg['CreateTime']
#消息发送人昵称|这里也可以使用RemarkName备注但是自己或者没有备注的人为None
msg_from=(itchat.search_friends(userName=msg['FromUserName']))["NickName"]
#消息内容
msg_content=None
msg_share_url=None
ifmsg['Type']=='Text'\
ormsg['Type']=='Friends':
msg_content=msg['Text']
elifmsg['Type']=='Recording'\
ormsg['Type']=='Attachment'\
ormsg['Type']=='Video'\
ormsg['Type']=='Picture':
msg_content=r""+msg['FileName']
#保存文件
msg['Text'](rev_tmp_dir+msg['FileName'])
elifmsg['Type']=='Card':
msg_content=msg['RecommendInfo']['NickName']+r"的名片"
elifmsg['Type']=='Map':
x,y,location=re.search(
" iflocationisNone: msg_content=r"纬度->"+x.__str__()+"经度->"+y.__str__() else: msg_content=r""+location elifmsg['Type']=='Sharing': msg_share_url=msg['Url'] face_bug=msg_content #更新字典 msg_dict.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 } ) #收到note通知类消息,判断是不是撤回并进行相应操作 @itchat.msg_register([NOTE]) defsend_msg_helper(msg): ifre.search(r"\<\!\[CDATA\[.*撤回了一条消息\]\]\>",msg['Content'])isnotNone: #获取消息的id old_msg_id=re.search("\ old_msg=msg_dict.get(old_msg_id,{}) iflen(old_msg_id)<11: itchat.send_file(rev_tmp_dir+face_bug,toUserName='filehelper') os.remove(rev_tmp_dir+face_bug) msg_body="告诉你一个秘密~"+"\n"\ +old_msg.get('msg_from')+"撤回了"+old_msg.get("msg_type")+"消息"+"\n"\ +old_msg.get('msg_time_rec')+"\n"\ +"撤回了什么"+"\n"\ +r""+old_msg.get('msg_content') ifold_msg['msg_type']=="Sharing":msg_body+="\n就是这个链接"+old_msg.get('msg_share_url')