Python之微信消息防撤回
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'jiangwenwen'
import itchat
from itchat.content import *
import time
import re
import os
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()
Python之微信消息防撤回的更多相关文章
- Python实现微信消息防撤回
微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿.在此期间微信也推出了不少的功能如:“摇一摇”.“漂流瓶”.“朋友圈”.“附近的人” ...
- Python_20行代码实现微信消息防撤回(简易版)
学习了一下如何用python实现微信消息的防撤回, 主要思路就是: 时时监控微信,将对方发送的消息缓存下来 如果对方撤回了消息,就将该缓存信息发送给文件传输助手 但其实这功能,基本上毫无意义,看到别人 ...
- PC微信逆向--实现消息防撤回
自从聊天软件消息撤回功能问世后,对于撤回的消息,我们对它一直有种强烈的好奇感."Ta刚撤回了什么?是骂我的话?还是说喜欢我?还是把发给其他人的消息误发给了我?好气呀,都看不到了...&quo ...
- [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
0x00 一点废话 最近因为Mac软件收费的比较多,所以买了几款正版软件,但是有的软件卖的有点贵,买了感觉不值,不买吧,又觉得不方便,用别人的吧,又怕不安全.于是我就买了正版的Hopper Di ...
- python查看微信消息撤回
准备环境 python语言环境 python解释器-pycharm itchat介绍 itchat是一个开源的微信个人号接口,通过itchat可以实现微信(好友或微信群)的信息处理,包括文本.图片.小 ...
- Python发送微信消息
针对此 需要安装itchat第三方模块 采用pip安装就可以了 pip install itchat import itchatimport time#引入时间函数进行测试time_format= ...
- macOS 版微信小助手,支持微信多开、防撤回、远程控制mac、自动回复等等
微信小助手 GitHub大牛提供的微信小助手是一款插件,该插件具备多开.防撤回.免手机认证登录.自动回复.远程控制自己的 macOS.群发等众多功能 GitHub网址:https://github.c ...
- 电脑微信电脑PC 多开/防撤回 补丁
简介 经常使用微信电脑版的用户都会发现一个蛋疼的事情,那就是微信PC版不支持多开,也就是不能同时登陆多个账号,这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便.另外有的时候别人撤回了一些 ...
- 记录实践PC端微信防撤回实现过程(基于3.1.0.67版本)
利用OD实现对PC端微信防撤回功能的实现 文章最后有一键补丁工具哦~ 准备工具 1.OD 2.PC微信客户端(3.1.0.67) 过程 1.运行微信客户端,不需要登录 2.运行OD,左上角选择附加进程 ...
随机推荐
- Java中的集合详解及代码测试
1:对象数组 (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. 2:集合(Collection) (1)集合的由来 我们学习的是Java -- 面向对象 ...
- MTCNN 人脸检测
demo.py import cv2 from detection.mtcnn import MTCNN # 检测图片中的人脸 def test_image(imgpath): mtcnn = MTC ...
- ArrayUtils工具类更加方便的操作数据
不废话,上代码: package com.jxd; import org.apache.commons.lang3.ArrayUtils; public class TestArr { /** * A ...
- jQuery入门、jQuery选择器、jQuery操作
一.什么是jQuery及如何使用 1.1 jQuery 简介 jQuery是一个兼容多浏览器的javascript函数库(把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率.),核心理 ...
- java 关键字volatile
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- struts2+ajax 前后端传值
摘要: 主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的数据,并转换为json类型模式数据 3.配置struts.xml文件 4.页面脚本接受并处理数 ...
- 华为RH2288V3服务器部署指南
一.配置好局域网 首先配置好局域网,将电脑和服务器通过网线直连,服务器默认IP192.168.2.100,因此电脑本地的IP需要设置一下改为和服务器同一网段: 二.登录导控制页面 浏览器中输入服务器的 ...
- HTML基础入门学习准备篇
在学习前端的开始,让我们一起来了解什么是HTML5时代的大前端开发和全栈开发的定义 传统的前端:切图-标签和样式-实现效果 H5时代的前端: 一.需要各端的兼容开发 二.可以用于APP开发和移动站点的 ...
- ResquestInfoServlet类通过访问HttpServletRequest对象的各种方法来读取HTTP请求中的特定信息,并且把它们写入到HTML中
ResquestInfoServlet类通过访问HttpServletRequest对象的各种方法来读取HTTP请求中的特定信息,并且把它们写入到HTML中 ResquestInfoServlet.j ...
- elk+kafka+zookeeper+filebeat安装
ElasticSearch6.0 ElasticSearch6.0安装 #依赖jdk8 rpm -ivh elasticsearch-.rpm vim /etc/elasticsearch/elast ...