Windows10微信防撤回python3.6脚本运用最强大的itchat模块详细教程一招搞定被撤回的重要信息

Windows10微信防撤回python3.6脚本运用最强大的itchat模块详细教程一招搞定被撤回的重要信息

此脚本需要使用到itchat库请先安装 itchat
命令行快速安装:
pip3 install itchat
下面是源码

import os
import re
import time
import itchat
from itchat.content import *
# 导入各种包
"""
1.创建字典存放撤回的消息
2.创建临时存储消息的目录文件
3.定义消息接收函数来接收消息,放入字典
4.定义函数捕获发送撤回的消息给文件助手

"""
msg_dict = {}
temp_store_file_path = "./TempStorePath/" # 注意文件夹末尾要跟/ 不然不会存入文件中
if not os.path.exists(temp_store_file_path):
    os.mkdir(temp_store_file_path)

# 注册信息捕获,只有信息发生才会执行的函数
@itchat.msg_register([TEXT, MAP, CARD, NOTE, RECORDING, PICTURE, VIDEO, SHARING, ATTACHMENT]) # 注意传入的是列表
def handler_receive_msg(msg):
    """定义函数记录注册响应信息的字典,图片,录音,视频需要先下载"""
    msg_time_wit = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
    msg_id = msg['MsgId']
    msg_time = msg['CreateTime']
    msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickkName"] # nickname是用户自己的昵称,remark是你的备注
    msg_content = None
    msg_share_url = None
    if msg['Type'] == 'Text' or msg['Type'] == 'Map' or msg['Type'] == 'Note':
        msg_content = msg['Text']
    elif msg['Type'] == 'Recording' or msg['Type'] == 'Picture' or msg['Type'] == 'Video' or msg['Type'] == 'Attachment':
        # msg['Text'](msg['FileName'])是一个下载函数
        msg_content = r"" + msg['FileName']  # r"" 表示后面的字符串是不用转义的真实字符串,msg['FileName']就是一个文件名itchat自己定义的
        msg['Text'](temp_store_file_path + msg['FileName'])
    elif msg['Type'] == 'Card':
        msg_content = msg['RecommendInfo']['NickName'] + r" 的名片"
    elif msg['Type'] == 'Sharing':
        msg_content = msg['Text']
        msg_share_url = msg['Url']
    msg_dict.update(
        {msg_id: {
            "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec"
            : msg_time_wit, "msg_type": msg['Type'], "msg_content": msg_content,
            "msg_share_url": msg_share_url
        }}
    )

@itchat.msg_register([NOTE])
def send_msg_helper(msg):
    if re.search(r"\<\!\[CDATA\[.*撤回了一条消息\]\]\>",msg['Content']) is not None: # 进行切片
        old_msg_id =re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)
        old_msg = msg_dict.get(old_msg_id,{})
        msg_send = ("Master~" + "\n" +old_msg.get('msg_from') + "\n" + "刚撤回了一条消息!" + "\n" + old_msg.get('msg_time_rec')+"\n"+ r""+ old_msg.get('msg_content'))
        if old_msg['msg_type'] == 'Sharing':
            msg_send += "\n" + old_msg.get('msg_share_url')
        itchat.send(msg_send,toUserName="filehelper")
        if old_msg['msg_type'] == 'Recording' or old_msg['msg_type']=='Picture' or old_msg['msg_type']=='Video' or old_msg['msg_type']=='Attachment':
            file = '@fil@%s' % (temp_store_file_path + old_msg['msg_content']) # 如果是文件,也要将文件发给助手
            # 易错点不要把send 写成sendfile()
            itchat.send(msg=file,toUserName="filehelper")
        os.remove(temp_store_file_path + old_msg['msg_content'])
        msg_dict.pop(old_msg_id)



if __name__ == '__main__':
    itchat.auto_login(hotReload=True) # hotreload 可以持续登陆,不用每次都扫码
    itchat.run()









  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qls7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值