昨天在羣裏,看到小夥伴發了一個 」不可描述「 的圖片,我剛準備點開看,就發現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】 自動經過拉你入羣體驗機器人其餘功能。
歡迎小夥伴關注個人微信 【小夭同窗】 一塊兒學習前端相關知識。