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就可以在电脑运行。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。