python基于itchat模块实现微信防撤回


Posted in Python onApril 29, 2019

有时候,女神发来一条消息,说约你看电影,她考虑了一下,又撤回了,不约你了…而你又想知道她究竟发了什么,该怎么办?微信防撤回了解一下。

环境要求

Python3
电脑

安装itchat

pip install itchat

使用代码

新建chehui.py,拷贝以下代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = 'jiangwenwen'

import itchat
from itchat.content import *
import time
import re
import os

print("该程序由里客云资源站开发,网址:likeyunba.com")
print("作者:TANKING")
print("打开程序会弹出一个二维码,微信扫码")
print("如果二维码弹不出,那就在你这个程序的同一个目录下找到QR.png双击打开扫码")
print("扫码后,出现Start auto replying就可以实时监控消息了...")

msg_information = {}
# 针对表情包的内容
face_bug = None

@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO], isFriendChat=True, isMpChat=True)
def handle_receive_msg(msg):
 global face_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

 # 如果发送的消息是文本或者好友推荐
 if msg['Type'] == 'Text' or msg['Type'] == 'Friends':
 msg_content = msg['Text']
 print(msg_content)

 # 如果发送的消息是附件,视频,图片,语音
 elif msg['Type'] == 'Attachment' or msg['Type'] == 'Video' \
 or msg['Type'] == 'Picture'\
  or msg['Type'] == 'Recording':
 # 内容为下载文件名
 msg_content = msg['FileName']
 msg['Text'](str(msg_content))

 # 如果消息是推荐的名片
 elif msg['Type'] == 'Card':
 # 内容是推荐人的昵称和性别
 msg_content = msg['RecommendInfo']['NickName'] + '的名片'
 if msg['RecommendInfo']['Sex'] == 1:
  msg_content += '性别为男'
 else:
  msg_content += '性别为女'

 print(msg_content)

 # 如果消息为分享的位置信息
 elif msg['Type'] == 'Map':
 x, y, location = re.search(
  "<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg['OriContent']).group(1, 2, 3)
 if location is None:
  # 内容为详细地址
  msg_content = r'纬度->' + x.__str__() + "经度->" + y.__str__()
 else:
  msg_content = r"" + location

 # 如果消息是分享的音乐或者文章,详细的内容为文章的标题或者分享的名字
 elif msg['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)
def information(msg):
 # 这里如果这里的msg['Content']中包含消息撤回和id,就执行下面的语句
 if '撤回了一条消息' in msg['Content']:
 old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)
 # 得到消息
 old_msg = msg_information.get(old_msg_id)
 print(old_msg)

 # 如果发送的是表情
 if len(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中发送给文件助手
 if old_msg['msg_type'] == "Sharing":
  msg_body += "\n就是这个链接>" + old_msg.get('msg_share_url')

 # 将撤回消息发送到文件助手
 itchat.send_msg(msg_body, toUserName="filehelper")

 # 有文件的话也要将文件发送回去
 if old_msg["msg_type"] == "Picture"\
  or old_msg["msg_type"] == "Recording"\
  or old_msg["msg_type"] == "Video"\
  or old_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就可以在电脑运行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python+selenium开发环境搭建图文教程
Aug 11 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
python实现人机猜拳小游戏
Feb 03 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
详解python中的lambda与sorted函数
Sep 04 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 Python
Elasticsearch 数据类型及管理
Apr 19 Python
手把手教你使用Python创建微信机器人
Apr 29 #Python
python实现微信防撤回神器
Apr 29 #Python
python实现文件助手中查看微信撤回消息
Apr 29 #Python
Python实现微信消息防撤回功能的实例代码
Apr 29 #Python
python控制nao机器人身体动作实例详解
Apr 29 #Python
python实现nao机器人身体躯干和腿部动作操作
Apr 29 #Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 #Python
You might like
用PHP读取IMAP邮件
2006/10/09 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
javascript实现链接单选效果的方法
2015/05/13 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
2013年保送生自荐信格式
2013/11/20 职场文书
土木工程师岗位职责
2013/11/24 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
音乐器材管理制度
2014/01/31 职场文书
五一劳动节活动记录
2014/03/23 职场文书
反邪教警示教育方案
2014/05/13 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书