本文实例为大家分享了python实现微信消息防撤回的具体代码,供大家参考,具体内容如下
使用了sqlite3保存数据,当有人撤回消息时取出数据发送到文件传输助手。
文件的话会先保存到本地,语音会以文件的方式发送。
wxpy和itchat很久没更新了,有些功能没法用了,网络微信也不知道什么时候会凉。
帮助信息在注释里。
# - * -编码:utf - 8 - * #使用sqlite3保存信息,当有人撤回消息时在数据库中通过ID检索该消息是否存在,如果存在则将撤回的消息发送到文件助手里。 #目前只支持文本图共享录制视频附件类型的消息。 进口wxpy 进口sqlite3 进口操作系统 进口再保险 #准备工作 #创建附件目录用于存储图像,地图/位置,分享,语音、视频,文件 如果不是os.path.isdir(附件): os.mkdir(“附件”) attachment_path=os.path.join (os.getcwd(),“附件”) 机器人=wxpy.Bot () #用于获取味精ID 模式=re.compile (r \ d {19}) #测试wxpy能否正常工作 自己=bot.friends () [0] myself.send(“你好# 63;”) #创建数据库和信息表 试一试: 康涅狄格州=sqlite3.connect (“wxpy.db”) 光标=conn.cursor () #光标。执行(“删除表信息”) 游标。执行(““创建表(如果不存在消息id的整数主键自动增量, msg_id整数非空, msg_text文本, create_time日期非空, revoke_time日期, attachment_path文本, msg_sender文本非空, msg_type文本非空, msg_url文本, msg_raw_data文本NOT NULL)”“”) #打印(建立成功) 最后: conn.commit () cursor.close () conn.close () #注册所有消息,在程序运行期间将插入所有支持的信息 @bot.register () def store_data(味精): #打印(msg.raw) #如果消息是支持的类型就将数据插入数据库 如果味精。在[wxpy类型。文本,wxpy。录音,wxpy。图片,wxpy。附件,wxpy。视频,wxpy。分享,wxpy.MAP]: insert_data(味精) #撤回的消息类型是音符 elif味精。类型==wxpy.NOTE: send_revoke(味精) #插入数据 def insert_data(味精): 试一试: 康涅狄格州=sqlite3.connect (“wxpy.db”) 光标=conn.cursor () 如果味精。类型==wxpy.TEXT: 游标。执行(“插入消息(msg_id、msg_text create_time, msg_sender, msg_type, msg_raw_data) \ 值(& # 63;& # 63;& # 63;,& # 63;,& # 63;,& # 63;)”,(味精。id、味精。文本、味精。create_time, str (msg.sender) [9: 1], 味精。类型,str (msg.raw))) #将录音/图像/文件/视频下载到本地,插入保存路径。 elif味精。在[wxpy类型。录音,wxpy。图片,wxpy。附件,wxpy.VIDEO]: save_path=os.path。加入(attachment_path msg.file_name) msg.get_file (save_path) 游标。执行(“插入消息(msg_id、create_time attachment_path, msg_sender, msg_type, \ msg_raw_data)值(& # 63;& # 63;& # 63;,& # 63;,& # 63;,& # 63;)”, (味精。id、味精。create_time save_path, str (msg.sender)[9: 1],味精。类型,str (msg.raw))) #插入分享/位置链接 elif味精。在[wxpy类型。分享,wxpy.MAP]: 游标。执行(“插入消息(msg_id、msg_text create_time, msg_sender, msg_type, msg_url, \ msg_raw_data)值(& # 63;& # 63;& # 63;,& # 63;,& # 63;,& # 63;,& # 63;)”, (味精。id、味精。文本、味精。create_time, str (msg.sender)[9: 1],味精。类型、str (msg.url) str (msg.raw))) #打印(“成功插入数据”) 最后: conn.commit () cursor.close () conn.close () #在数据库中检索消息是否存在,如果存在则将被撤回的消息发送到文件传输助手。 def send_revoke(信息): msg_id=pattern.search (message.raw(“内容”)).group () 试一试: 康涅狄格州=sqlite3.connect (“wxpy.db”) 光标=conn.cursor () 游标。执行(“插入消息(msg_id、create_time msg_sender, msg_type, msg_raw_data) \ 值(& # 63;& # 63;& # 63;,& # 63;,& # 63;)”, (消息。id、消息。create_time, str (message.sender)[9: 1)消息。类型,str (message.raw))) 从消息msg_data=https://www.yisu.com/zixun/cursor.execute (' SELECT * msg_id=& # 63;”, (msg_id)) .fetchall () #打印(“成功取出数据”) 最后: conn.commit () cursor.close () conn.close () 如果msg_data[0][7]==拔谋尽? msg_info='告诉你一个秘密{}在{}撤回了文本\ n {}”。格式(msg_data [0] [6], msg_data [0] [3], msg_data [0] [2]) bot.file_helper.send (msg_info) 其他: send_revoke_nontext (msg_data) #非文本信息发送 def send_revoke_nontext (msg_data): 如果msg_data[0][7]==罢掌? 如果msg_data [0] [5] [4:]==癵if”: #现在wxpy,itchat发不了GIF了 bot.file_helper('很抱歉,暂时不支持表情(gif)的撤回重发。) 其他: msg_info='告诉你一个秘密{}在{}撤回了图像的。格式(msg_data [0] [6], msg_data [0] [3]) bot.file_helper.send (msg_info) bot.file_helper.send_image (msg_data [0] [5]) elif msg_data[0][7]==凹锹肌? msg_info='告诉你一个秘密{}在{}撤回了语音”。格式(msg_data [0] [6], msg_data [0] [3]) bot.file_helper.send (msg_info) bot.file_helper.send_file (msg_data [0] [5]) elif msg_data[0][7]==案郊? msg_info='告诉你一个秘密{}在{}撤回了文件”。格式(msg_data [0] [6], msg_data [0] [3]) bot.file_helper.send (msg_info) bot.file_helper.send_file (msg_data [0] [5]) elif msg_data[0][7]==笆悠怠? msg_info='告诉你一个秘密{}在{}撤回了视频”。格式(msg_data [0] [6], msg_data [0] [3]) bot.file_helper.send (msg_info) bot.file_helper.send_video (msg_data [0] [5]) elif msg_data[0][7]==胺窒怼? msg_info='告诉你一个秘密{}在{}撤回了分享\ n \ n {} {}”。格式(msg_data [0] [6], msg_data [0] [3], msg_data [0] [2], \ msg_data [0] [8]) bot.file_helper.send (msg_info) elif msg_data[0][7]==暗赝肌? msg_info='告诉你一个秘密{}在{}撤回了位置\ n \ n {} {}”。格式(msg_data [0] [6], msg_data [0] [3], msg_data [0] [2], \ msg_data [0] [8]) bot.file_helper.send (msg_info) wxpy.embed ()python使用wxpy实现微信消息防撤回脚本