最近比较闲就随便瞎看,看到了微信防撤回就顺便跟着学着实现一下

使用的是wxpy,安装方法pip install wxpy(我使用的是python2.7),这样实现起来比较快,反正也只是练手

首现看了两个别人实现的代码,然后看了看wxpy的文档:http://wxpy.readthedocs.io/zh/latest/utils.html(萌新,顺便锻炼下看文档)

我实现的代码:

import wxpy
import re# 实例化微信对象
bot = wxpy.Bot(cache_path=True)# 启用puid 并指定puid所需映射数据保存的路径
bot.enable_puid(path='wxpy_puid.pkl')# 用于存放每个用户最近发送的消息
msgs = dict()# 信息的类型
msg_types = {'Text': '文本','Map': '位置','Picture': '图片','Video': '视频','Attachment': '文件','Sharing': '分享','Card': '名片','Recording': '语音',
}@bot.register()
def handle_receive_msg(msg):"""监听消息:param msg: 接收到的消息:return:"""# 原信息数据raw = msg.raw# 如果消息的状态码是4  即撤回消息if raw.get('Status') == 4:# 如果是群消息if isinstance(msg.chat, wxpy.api.chats.group.Group):# 获取群成员的puidpuid = msg.member.puid# 获取发送者的昵称name = msg.member.nick_name# 如果是好友消息elif isinstance(msg.chat, wxpy.api.chats.friend.Friend):# 获取好友的puidpuid = msg.chat.puid# 获取好友的昵称name = msg.chat.nick_nameelse:puid = Nonename = Noneif puid:# 被撤回消息的msgid的匹配规则msg_id_regex = re.compile('<msgid>(\d+)</msgid>')# 获取被撤回消息的msgidold_msg_id = msg_id_regex.findall(raw.get('Content'))[0]# 获取该发送者的最后5次的消息记录chat_msgs = msgs.get(puid)# 遍历消息记录for chat_msg in chat_msgs[::-1]:# 跳过不是被撤回的信息if str(chat_msg.id) != old_msg_id:continuechat = chat_msg.chat# 如果被撤回的信息是文本信息if chat_msg.type == "Text":# 如果消息长度过长 则不予处理if len(chat_msg.text) >= 150:warning = "【您撤回的消息过长,有炸群嫌疑,不予处理!!!】"bot.file_helper.send('%s撤回了一条文本消息--【%s】'.decode('utf-8') % (name, warning))break# 将此消息转发出来chat_msg.forward(chat, prefix='%s撤回了一条文本消息,消息内容为:'.decode('utf-8') % name)# 如果被撤回的是位置信息elif chat_msg.type == "Map":# 位置信息的匹配规则map_regex = re.compile(r'label="(.+?)"')# 获取位置信息中的位置map = map_regex.findall(chat_msg.raw.get("OriContent"))[0]# 将位置信息发出来msg.reply('%s撤回了一条位置消息,位置信息为:【%s】'.decode('utf-8') % (name, map))else:# 获取信息的类型msg_type = msg_types.get(chat_msg.type).decode('utf-8')# 将信息转发出来chat_msg.forward(chat, prefix='%s撤回了一条%s消息, 消息内容为:'.decode('utf-8') % (name, msg_type))breakelse:# 如果是群消息if isinstance(msg.chat, wxpy.api.chats.group.Group):# 获取群成员的puidpuid = msg.member.puid# 如果是好友消息elif isinstance(msg.chat, wxpy.api.chats.friend.Friend):# 获取好友的puidpuid = msg.chat.puidelse:puid = Noneif puid:# 记录消息msgs.setdefault(puid, []).append(msg)# 截取消息  保留最大5条记录msgs[puid] = msg[puid][-5:]# 使机器人后台运行,并进入交互模式
wxpy.embed()

也未做过多的测试和优化,测试了文本、图片、语音、位置信息,视频、名片、分享、文件消息未做测试

ps:这里语音消息撤回后发出来的是语音文件,位置信息发出来的是地址的文本

===================================割=======================================

如果想要添加聊天机器人 可以加入:

# 指定一个好友
friend = bot.friends().search('您对朋友的备注')
# 指定一个群
group = bot.groups().search('群名')# 实例化图灵机器人    免费申请图灵机器人: http://www.tuling123.com/
tu_ling = wxpy.Tuling(api_key="自行注册")
# chats指定对哪些用户起作用, 如果chats=None(默认值)对所有用户起作用
@bot.register(chats=[friend, group])
def reply_msg(msg):"""自动回复消息:param msg: 接收到的信息数据:return: 回复文本"""# do_reply会自动回复消息并返回消息文本tu_ling.do_reply(msg)

python使用wxpy轻松实现微信防撤回相关推荐

  1. python使用 wxpy 简简单单实现微信防撤回

    import re from wxpy import * bot = Bot(cache_path='xiaohao.pkl')@bot.register() def handleReceiveMsg ...

  2. python 基于itchat详解微信防撤回程序

    itchat学习笔记请见另一文章 文章目录 0. 选题背景 1. 发现问题 2. 提炼问题 3. 解决方案 4. 分析设计 4.0 准备 问题4.1 : 如何用程序登录自己的微信账号? 问题4.2 : ...

  3. python微信库wxpy_python wxpy微信防撤回功能

    python使用wxpy轻松实现微信防撤回的方法 最近比较闲就随便瞎看,看到了微信防撤回就顺便跟着学着实现一下 使用的是wxpy,安装方法pip install wxpy(我使用的是python2.7 ...

  4. 微信防撤回python代码_python实现微信防撤回神器

    本文实例为大家分享了python实现微信防撤回神器的具体代码,供大家参考,具体内容如下 手写辛苦,希望给赞 #!/usr/local/bin/python3 # coding=utf-8 import ...

  5. 关于微信防撤回(文本、图片、语音、视频、名片等...)的Python学习教程

    大家在使用微信过程中,有时候消息还没看到,就被撤回了.毕竟好奇心大家都有,明知到消息被撤回了,就更想去看一下是什么内容. 心里想着万一是女神给我表白了呢- 今天的Python学习教程就教大家用Pyth ...

  6. 用Python写微信防撤回脚本,锁定那些被撤回的消息,就是撤回了也可以看到

    如果好友短时间发送多条消息然后撤回会难以判断究竟撤回的是哪条信息,只能靠猜.后来我觉得"猜"这个事情特别不Pythonic,研究一段时间后找到了解决方案,不得不惊叹ItChat真的 ...

  7. 信息时代——微信防撤回(Python实现)

    目录 1 前言 2 有微信联想起的哲思 2.1 哲学思维开始冒头 2.2 哲学期 2.3 科学时代 2.4 后科学时代 3 微信防撤回完整代码奉上 1 前言 她总是微信撤回,我得想一个法子治治她,哈哈 ...

  8. python接收微信消息_【Python写微信防撤回脚本】02 接收记录聊天信息

    上一期我们安装好了ItChat,并且学会用它登录微信.想知道它还能做什么?往下滑吧~ 接收好友信息 利用ItChat登录微信之后,我们就可以自动记录好友发来的信息. 话不多说,直接上代码: impor ...

  9. GitHub上这个微信防撤回的开源项目,99%的程序员不知道

    我知道你知道很多种微信消息的撤回方式,如果你一种都不知道,那么请你往下看. 关于微信发错消息的尴尬,估计大家都有不堪回首的历史. 开个玩笑 假如你是这个老板? 画面引起极度不适,[手动捂脸] 你想想, ...

  10. 手把手教会你Android手机QQ和微信防撤回

    如今QQ和微信都能撤回消息,当对方撤回了消息,想看又看不了,是不是很想知道对方撤回了什么?接下来我就来教会大家阻止对方QQ撤回的消息和查看微信撤回的消息. 1.首先,手机需要获取root权限(目前有很 ...

最新文章

  1. 一文带你学会基于SpringAop实现操作日志的记录
  2. linux grunt环境,安装 Grunt - Grunt: JavaScript 世界的构建工具 | Grunt 中文网
  3. C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
  4. Centos7安装Python3.6
  5. HDU 5253 最小生成树(kruskal)+ 并查集
  6. gesturedetector.java_android使用gesturedetector手势识别示例分享
  7. Objective-c 程序结构
  8. Python代码实操:详解数据清洗
  9. trimble ux5hp无人机航测_无人机航测:这几件事情你必须知道
  10. 安卓Service完全解析(中)
  11. linux 远程 mysql,linux下mysql远程访问
  12. pandas 批量修改列名_十分钟想搞定pandas?
  13. java中调用 dll 动态库的简洁方法 JNative
  14. 《Perl语言入门》学习笔记
  15. 系统备份恢复 Acronis True Image使用教程
  16. 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
  17. RE:Working outside of application context
  18. PADS的四层板转换成2层板
  19. 【Android】Service管理通知栏通知模板
  20. 实时语音场景下的智能对话

热门文章

  1. HDFView安装及使用教程
  2. MS SQL Server对表的设计修改时不允许保存
  3. 【毫米波雷达】人体目标探测理论
  4. 并行程序设计导论pdf电子书_并行程序设计导论
  5. SwiftyJSON之使用分析
  6. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a
  7. 计算机设备没有音频,计算机上没有音频设备是什么意思?
  8. 位图和矢量图转换工具推荐
  9. VMware16下载与安装
  10. 酷派 CWM Recovery 6.0.1.2 For CoolPad 7728 根据最新源码编译