昨天在群里,看到小伙伴发了一个 ”不可描述“ 的图片,我刚准备点开看,就发现TA撤回了,该死的撤回。看我怎么整治你。前端
本项目的防撤回,实际上的原理是这个微信和你聊天的对象同处再一个群里,它会实时监控聊天记录,检测到消息状态为撤回,就会从撤回以前的保存的记录里,拿出这条数据,转发给出去,从而达到一个防撤回的效果。通俗的讲就是实时备份你的聊天记录,而后提取出来撤回的那条。bash
一、若是你想要防撤回效果,本微信号必定要和你当前的微信号再同一个群里。微信
二、简单的说就是你的机器人微信 和 你的主微信有着一样的群聊,以达到防撤回的目的ide
三、暂不支持单人撤回,只能对群防撤回。工具
获取你要检测的群对象,若是你想监听全部对象,则不须要post
Test = bot.groups().search(u'Test')
复制代码
将撤回的消息 转发到特定的群里,以供再其余微信查看,能够是单个好友或者文件传输助手学习
recallNotice = ensure_one(bot.groups().search('recallNotice'))
复制代码
# 文本 TEXT = 'Text'
# 位置 MAP = 'Map' 1
# 名片 CARD = 'Card' 2
# 分享 SHARING = 'Sharing' 3
# 图片 PICTURE = 'Picture' 4
# 语音 RECORDING = 'Recording' 5
# 文件 ATTACHMENT = 'Attachment' 6
# 视频 VIDEO = 'Video' 7
复制代码
注册事件,全部群的消息开发工具
@bot.register(Group)
复制代码
主要代码测试
def handleReceiveMsg(msg):
'''
监听消息
:param msg:
:param chats:
:return:
'''
ra = msg.raw
mss = msg.bot.messages
le = len(mss)
if ra['Status'] == 4:
# 获取消息ID
oldmsgid = re.search(re.compile('<msgid>(.*?)</msgid>', re.S),ra['Content']).group(1)
for i in range(le-1,-1,-1):
if oldmsgid == str(mss[i].id):
name = msg.chat.name // 获取群名
username = msg.member.nick_name // 获取撤回消息的人名
if name == None or name == '':
name = msg.chat.nick_name
username = msg.member.nick_name
// 根据不一样的消息类型进行撤回提示
if mss[i].type == 'Text':
recallNotice.send('来自【'+ name + '】的【' + username
+'】撤回了一条消息:'+ mss[i].text)
bot.file_helper.send('来自【'+ name + '】的【' + username
+'】撤回了一条消息:'+ mss[i].text)
break
复制代码
完美经过测试,看你还怎么撤回。spa
微信公众号 【小夭同窗】回复 【防撤回】
小夭同窗,页面切图仔。
想体验机器人的小伙伴能够加下面二维码,验证信息 【py】 自动经过拉你入群体验机器人其余功能。
欢迎小伙伴关注个人微信 【小夭同窗】 一块儿学习前端相关知识。