python基于itchat模块实现微信防撤回
有时候,女神发来一条消息,说约你看电影,她考虑了一下,又撤回了,不约你了…而你又想知道她究竟发了什么,该怎么办?微信防撤回了解一下。
环境要求
Python3
电脑
安装itchat
pipinstallitchat
使用代码
新建chehui.py,拷贝以下代码
#!/usr/bin/envpython3 #-*-coding:utf-8-*- __author__='jiangwenwen' importitchat fromitchat.contentimport* importtime importre importos print("该程序由里客云资源站开发,网址:likeyunba.com") print("作者:TANKING") print("打开程序会弹出一个二维码,微信扫码") print("如果二维码弹不出,那就在你这个程序的同一个目录下找到QR.png双击打开扫码") print("扫码后,出现Startautoreplying就可以实时监控消息了...") msg_information={} #针对表情包的内容 face_bug=None @itchat.msg_register([TEXT,PICTURE,FRIENDS,CARD,MAP,SHARING,RECORDING,ATTACHMENT,VIDEO],isFriendChat=True,isMpChat=True) defhandle_receive_msg(msg): globalface_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 #如果发送的消息是文本或者好友推荐 ifmsg['Type']=='Text'ormsg['Type']=='Friends': msg_content=msg['Text'] print(msg_content) #如果发送的消息是附件,视频,图片,语音 elifmsg['Type']=='Attachment'ormsg['Type']=='Video'\ ormsg['Type']=='Picture'\ ormsg['Type']=='Recording': #内容为下载文件名 msg_content=msg['FileName'] msg['Text'](str(msg_content)) #如果消息是推荐的名片 elifmsg['Type']=='Card': #内容是推荐人的昵称和性别 msg_content=msg['RecommendInfo']['NickName']+'的名片' ifmsg['RecommendInfo']['Sex']==1: msg_content+='性别为男' else: msg_content+='性别为女' print(msg_content) #如果消息为分享的位置信息 elifmsg['Type']=='Map': x,y,location=re.search( "'+x.__str__()+"经度->"+y.__str__() else: msg_content=r""+location #如果消息是分享的音乐或者文章,详细的内容为文章的标题或者分享的名字 elifmsg['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) definformation(msg): #这里如果这里的msg['Content']中包含消息撤回和id,就执行下面的语句 if'撤回了一条消息'inmsg['Content']: old_msg_id=re.search("\ (.*?)\<\/msgid\>",msg['Content']).group(1) #得到消息 old_msg=msg_information.get(old_msg_id) print(old_msg) #如果发送的是表情 iflen(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中发送给文件助手 ifold_msg['msg_type']=="Sharing": msg_body+="\n就是这个链接>"+old_msg.get('msg_share_url') #将撤回消息发送到文件助手 itchat.send_msg(msg_body,toUserName="filehelper") #有文件的话也要将文件发送回去 ifold_msg["msg_type"]=="Picture"\ orold_msg["msg_type"]=="Recording"\ orold_msg["msg_type"]=="Video"\ orold_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就可以在电脑运行。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。