本文实例讲述了Python实现微信中找回好友,群聊用户撤回的消息功能。分享给大家供大家参考,具体如下:
还在好奇好友撤回了什么消息吗?群里撤回了什么消息?下面的代码实现了:即使群,好友撤回了文本消息,表情,图片等消息,自己也能知道撤回的什么。
#=utf - 8编码 进口itchat 从itchat。内容导入文本 从itchat。内容导入* 导入系统 导入的时间 进口再保险 进口操作系统 msg_information={} face_bug=#针没有对表情包的内容 @itchat.msg_register([文本、图片、朋友、卡、地图、分享、记录、附件、视频),isFriendChat=True, isGroupChat=True) def receive_msg(味精): 全球face_bug msg_time_rec= strftime (“% - % - % d % H: % m: % S”, time.localtime()) #接收消息的时间 如果“ActualNickName”味精: from_user=味精[' ActualUserName '] #群消息的发送者,用户的唯一标识 msg_from=味精[' ActualNickName '] #发送者群内的昵称 朋友=itchat.get_friends(更新=True) #获取所有好友 f的朋友: 如果from_user==f(“用户名”):#如果群消息是好友发的 如果f [' RemarkName ']: #优先使用好友的备注名称,没有则使用昵称 msg_from=f (“RemarkName”) 其他: msg_from=f(“昵称”) 打破 组=itchat.get_chatrooms(更新=True) #获取所有的群 在g组: 如果味精(“FromUserName”)==g(“用户名”):#根据群消息的FromUserName匹配是哪个群 group_name=g(“昵称”) group_menbers=g (“MemberCount”) 打破 group_name=group_name +”(“+ str (group_menbers) +”)” 其他: 如果itchat.search_friends(用户名=味精[' FromUserName ']) [' RemarkName ']: #优先使用备注名称 msg_from=itchat.search_friends(用户名=味精[' FromUserName ']) (“RemarkName”) 其他: msg_from=itchat.search_friends(用户名=味精[' FromUserName '])(“昵称”)#在好友列表中查询发送信息的好友昵称 group_name=" " msg_time=味精[' CreateTime '] #信息发送的时间 msg_id=味精(“是否”)#每条信息的id msg_content=没有#储存信息的内容 msg_share_url=没有#储存分享的链接,比如分享的文章和音乐 如果味精('类型']==谋尽蛭毒?'类型']=='朋友的:#如果发送的消息是文本或者好友推荐 msg_content=味精(“文本”) #如果发送的消息是附件,视频,图片,语音 elif味精('类型']==案郊被蛭毒?'类型']==\“视频” 或味精['类型']==\“照片” 或味精['类型']==凹锹肌? msg_content=味精(“文件名”)#内容就是他们的文件名 味精(“文本”)(str (msg_content)) #下载文件 elif味精('类型']==暗赝肌?#如果消息为分享的位置信息 x, y,位置=re.search ( “& lt;位置x=\”(* & # 63;) \ " y=\”(* & # 63;) \”。*标签=\”(* & # 63;)\”。*”,味精[' OriContent '])。组(1、2、3) 如果位置没有: msg_content=r“纬度→”+ x.__str__() +“经度→”+ y.__str__() #内容为详细的地址 其他: msg_content=r " +位置 elif味精('类型']==胺窒怼?#如果消息为分享的音乐或者文章,详细的内容为文章的标题或者是分享的名字 msg_content=味精(“文本”) msg_share_url=味精(“Url”) #记录分享的Url face_bug=msg_content #将信息存储在字典中,每一个msg_id对应一条信息 time . sleep (2) msg_information.update ( { msg_id: { “msg_from”: msg_from, “msg_time”: msg_time, “msg_time_rec”: msg_time_rec, “msg_type”:味精(“类型”), “msg_content”: msg_content, “msg_share_url”: msg_share_url, “group_name”: group_name } } ) del_info=[] 在msg_information k: m_time=msg_information [k] [' msg_time '] #取得消息时间 如果int (time.time ()) - m_time比;130:#如果消息时间是130秒甚至更久之前的,则删除。 del_info.append (k) 如果del_info: 因为我在del_info: msg_information.pop(我) #监听是否有消息撤回 @itchat.msg_register(注意,isFriendChat=True, isGroupChat=True, isMpChat=True) def信息(味精): #如果这里的味精(“内容”)中包含消息撤回和id,就执行下面的语句 如果“撤回了一条消息的味精(“内容”): old_msg_id=re.search (“\ & lt;是否\祝辞(* & # 63;)\ & lt; \/是否\祝辞”,味精(“内容”)).group(1) #在返回查的内容找撤回的消息的id old_msg=msg_information.get (old_msg_id) #获取到消息原文,类型:字典 打印(old_msg) 如果len (old_msg_id) & lt; 11: #如果发送的是表情包 itchat.send_file (face_bug toUserName=癴ilehelper”) 其他:#发送撤回的提示给文件助手 msg_body=old_msg [' group_name '] + old_msg (“msg_from”) +“\ n”+ old_msg \“msg_time_rec” + "撤回了:" + " \ n " + r " + old_msg (“msg_content”) #如果是分享的文件被撤回了,那么就将分享的url加在msg_body中发送给文件助手 如果old_msg msg_type”==肮蚕怼? msg_body +=" \ n链接是:”+ old_msg.get (“msg_share_url”) #打印(msg_body) itchat。send_msg (msg_body toUserName=filehelper) #将撤回消息发给文件助手 #有文件的话也要将文件发送回去 如果old_msg“msg_type”==\“照片” (“msg_type”)或old_msg==\“记录” (“msg_type”)或old_msg==\“视频” (“msg_type”)或old_msg==案郊? 文件=' @fil@ % s % (old_msg [' msg_content ']) itchat。发送(味精=文件,toUserName=癴ilehelper”) os.remove (old_msg [' msg_content ']) msg_information.pop (old_msg_id) #删除字典旧消息 itchat.auto_login (hotReload=True, enableCmdQR=1) itchat.run ()Python实现微信中找回好友,群聊用户撤回的消息功能示例