Python如何撤回,python微信防撤回

  Python如何撤回,python微信防撤回

  本文实例为大家分享了大蟒实现微信防撤回神器的具体代码,供大家参考,具体内容如下

  手写辛苦,希望给赞

  #!/usr/local/bin/python3

  #编码=utf-8

  导入操作系统

  进口是

  导入时间

  导入线程

  导入itchat

  从itchat.content导入*

  # 可以撤回的消息格式:文本、语音、视频、图片、位置、名片、分享、附件

  # 存储收到的消息

  # 格式:{消息id:{消息发件人,消息收件人,消息时间,消息时间记录,消息类型,消息内容,消息共享url}}

  msg_dict={}

  # 存储消息中文件的临时目录,程序启动时,先清空

  rev _ tmp _ dir=/用户/陈龙/D1/微信/rev/

  如果不是os.path.exists(版本_临时目录):

  os.mkdir(版本_临时_目录)

  否则:

  对于os.listdir(版本_临时目录)中的女:

  path=os.path.join(rev_tmp_dir,f)

  如果os.path.isfile(路径):

  os.remove(路径)

  # 表情有一个问题:消息和撤回提示的消息标识不一致

  face_bug=无

  # 监听微信消息(只限可撤回的消息类型),存储到本地,并清除超时的消息

  # 可撤回的消息类型:文本、图片、地图、卡片、分享、记录、附件、视频、朋友、笔记

  @ itchat。消息_寄存器([文字,图片,地图,卡片,分享,录音,附件,视频,好友,备注],

  isFriendChat=True,isGroupChat=True,isMpChat=True)

  定义处理程序_接收_消息(消息):

  全局face_bug

  消息时间版本=时间。strftime( % Y-% M-% d % H:% M:% S ,time.localtime())

  msg_id=msg[MsgId]

  msg_time=msg[CreateTime]

  邮件共享网址=无

  group_name=无

  # 获取发送人

  如果消息中有"实际昵称":

  发件人信息=设置发件人群组聊天

  msg _ from=sender _ info[ msg _ from ]

  group _ name=sender _ info[ group _ name ]

  否则:

  msg _ from=(it聊天。search _ friends(userName=msg[ from userName ])[ remak name ]#优先使用备注

  如果msg_from为无:

  消息来源=消息来源用户名]

  # 获取消息内容

  如果msg[ Type ]= Text 或msg[ Type ]= Friends :

  msg_content=msg[Text]

   否则如果消息[类型]==记录或消息[类型]==附件\

  或消息[类型]==视频或msg[类型]==图片:

  msg_content=r msg[FileName]

  消息[文本](版本_临时_目录消息[文件名])

  elif msg[Type]==Card :

  msg _ content=msg[推荐信息][昵称] r 的名片

  elif msg[Type]==Map :

  x,y,location=re.search(

  2,

  3)

  如果位置为无:

  msg_content=r 维度- x 经度是吗

  否则:

  msg_content=r 位置

  elif msg[Type]==Sharing :

  msg_content=msg[Text]

  msg_share_url=msg[Url]

  face_bug=msg_content

  # 缓存消息

  msg_dict.update({

  消息id: {

  消息来源:消息来源,

  消息时间:消息时间,

  消息时间版本:消息时间版本,

   msg_type: msg[Type],

  消息内容:消息内容,

  消息共享url :消息共享url,

  组名:组名

  }

  })

  # 遍历本地消息字典,清除2分钟之前的消息,并删除缓存的消息对应的文件

  极好的清除超时消息():

  need_del_msg_ids=[]

  对于消息_字典中的男:

  msg _ time=msg _ dict[m][ msg _ time ]

  if int(time.time()) - msg_time 120:

  need_del_msg_ids.append(m)

  if len(need_del_msg_ids) 0:

  给我需要的人:

  old_msg=msg_dict.get(i)

  if old_msg[msg_type]==图片或旧消息[消息类型]==录像或旧消息[消息类型]==视频\

  或旧消息[消息类型]==附件:

  OS。remove(rev _ tmp _ dir old _ msg[ msg _ content ])

  msg_dict.pop(一)

  # 设置发送人,当消息是群消息的时候

  def set_sender_group_chat(消息):

  msg_from=msg[ActualNickName]

  # 查找用户备注名称

  朋友=it聊天。get _ friends(更新=真)

  from_user=msg[实际用户名]

  对于《老友记》中的女:

  if from_user==f[UserName]:

  msg _ from=f[ remakname ]或f[昵称]

  破裂

  群组=it聊天。获取聊天室(更新=真)

  对于分组中的g:

  如果消息[来自用户名]==g[用户名]:

  group_name=g[昵称]

  破裂

  返回{ 邮件发件人:邮件发件人,组名:组名}

  # 监听通知,判断是撤回通知,则将消息发给文件助手

  @ it聊天。消息_寄存器([注意],isFriendChat=True,isGroupChat=True,isMpChat=True)

  定义发送消息助手(消息):

  全局face_bug

  如果重新搜索(r ,消息[内容])不为无:

  old_msg_id=re.search(\(.*?),msg[Content]).组(1)

  旧_消息=消息_字典。get(旧消息id,{})

  if len(old_msg_id) 11:

  它聊天。send _ file(rev _ tmp _ dir face _ bug,toUserName=filehelper )

  os.remove(rev_tmp_dir face_bug)

  否则:

  msg_body=old_msg.get(msg_from )撤回了old_msg.get(msg_type) \

  消息\n \

  old _ msg。get(消息时间版本) \ n \

  old_msg.get(msg_content )

  如果old_msg.get(group_name )不为无:

  msg _ body=old _ msg。get(组名) 邮件正文

  if old _ msg[ msg _ type ]= Sharing :

  msg _ body= \ n old _ msg。get( msg _ share _ URL )

  # 将撤回的消息发给文件助手

  itchat.send(msg_body,toUserName=filehelper )

  if old_msg[msg_type]==图片或旧消息[消息类型]==录像或旧消息[消息类型]==视频\

  或旧消息[消息类型]==附件:

  file= @ fil @ % s %(rev _ tmp _ dir old _ msg[ msg _ content ])

  itchat.send(msg=file,toUserName=filehelper )

  OS。remove(rev _ tmp _ dir old _ msg[ msg _ content ])

  msg_dict.pop(old_msg_id)

  if __name__==__main__ :

  它聊天。auto _ log in(热重载=True,enableCmdQR=2)

  itchat.run()

  # 子线程清除超时消息

  _线程。开始新线程(清除超时消息)

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: