亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 撤回我也能看到!教你用Python制作微信防撤回腳本

撤回我也能看到!教你用Python制作微信防撤回腳本

熱門標簽:打電話機器人營銷 騰訊地圖標注沒法顯示 南陽打電話機器人 商家地圖標注海報 聊城語音外呼系統 海外網吧地圖標注注冊 地圖標注自己和別人標注區別 ai電銷機器人的優勢 孝感營銷電話機器人效果怎么樣

一、之前解決方案

大概是這樣:短時間內同一位好友發送了多條消息,當他隨便撤回一條消息時,我們不能確定他到底撤回的到底是哪一條消息。只能猜他可能是撤回了最近的一條消息,然后將其他消息貼出來作為備選。代碼如下:

target_msg_pattern = '"{}" 撤回了一條消息'.format(sender_name)
if content == target_msg_pattern:
    return_msg = '【{}】撤回了一條消息:\n'.format(sender_name)
    if len(log[sender_name].items()) == 0:
        return_msg = '緩存信息列表為空!'
    else:
        return_msg += log[sender_name].items()[-1][-1] + '\n'
        if len(log[sender_name].items()) > 1:
            msgs = [msg for timestamp, msg in log[sender_name].items()[:-1]]
            return_msg += '也有可能是下列信息中的某一條:\n' + '\n'.join(msgs)

實際效果是這樣:


 

我這個強迫癥簡直受不了這么不確定的說法。

二、分析msg信息

要想確定撤回了哪一條信息,就必須先熟悉普通msg和撤回的msg里面都有哪些信息,他們的相同點和不同點。下面就來看看這兩種情況下msg都是怎么樣的,不需要仔細的看每一行,后面會作具體分析。

先是用機器人“小幫幫”發送過來的信息得到的msg信息:

{
	'MsgId': '2018511155698964390',
	'FromUserName': '@**********f511363f8200853d724137bb31236a7ea81e5183cc06cb4ec978e3',
	'ToUserName': '@**********c2e61fdb47b5c241553a2f',
	'MsgType': 1,
	'Content': 'msg里面到底有什么?',
	'Status': 3,
	'ImgStatus': 1,
	'CreateTime': 1578069291,
	'VoiceLength': 0,
	'PlayLength': 0,
	'FileName': '',
	'FileSize': '',
	'MediaId': '',
	'Url': '',
	'AppMsgType': 0,
	'StatusNotifyCode': 0,
	'StatusNotifyUserName': '',
	'RecommendInfo': {
		'UserName': '',
		'NickName': '',
		'QQNum': 0,
		'Province': '',
		'City': '',
		'Content': '',
		'Signature': '',
		'Alias': '',
		'Scene': 0,
		'VerifyFlag': 0,
		'AttrStatus': 0,
		'Sex': 0,
		'Ticket': '',
		'OpCode': 0
	},
	'ForwardFlag': 0,
	'AppInfo': {
		'AppID': '',
		'Type': 0
	},
	'HasProductId': 0,
	'Ticket': '',
	'ImgHeight': 0,
	'ImgWidth': 0,
	'SubMsgType': 0,
	'NewMsgId': 2018511155698964390,
	'OriContent': '',
	'EncryFileName': '',
	'User':  User: {
		'MemberList':  ContactList: [] > ,
		'Uin': 0,
		'UserName': '@**********f511363f8200853d724137bb31236a7ea81e5183cc06cb4ec978e3',
		'NickName': '小幫幫',
		'HeadImgUrl': '/cgi-bin/mmwebwx-bin/webwxgeticon?seq=699837854username=@**********f511363f8200853d724137bb31236a7ea81e5183cc06cb4ec978e3skey=@crypt_****c00c_92668c8ba7d285c221a85e**********',
		'ContactFlag': 2049,
		'MemberCount': 0,
		'RemarkName': '小幫幫',
		'HideInputBarFlag': 0,
		'Sex': 2,
		'Signature': '',
		'VerifyFlag': 0,
		'OwnerUin': 0,
		'PYInitial': 'XBB',
		'PYQuanPin': 'xiaobangbang',
		'RemarkPYInitial': 'XBB',
		'RemarkPYQuanPin': 'xiaobangbang',
		'StarFriend': 0,
		'AppAccountFlag': 0,
		'Statues': 0,
		'AttrStatus': 33658937,
		'Province': '浙江',
		'City': '臺州',
		'Alias': '',
		'SnsFlag': 17,
		'UniFriend': 0,
		'DisplayName': '',
		'ChatRoomId': 0,
		'KeyWord': '',
		'EncryChatRoomId': '',
		'IsOwner': 0
	} > ,
	'Type': 'Text',
	'Text': 'msg里面到底有什么?'
}

下面是機器人撤回剛才的信息得到的msg信息:

{
	'MsgId': '4056955577161654067',
	'FromUserName': '@**********f511363f8200853d724137bb31236a7ea81e5183cc06cb4ec978e3',
	'ToUserName': '@**********c2e61fdb47b5c241553a2f',
	'MsgType': 10002,
	'Content': 'sysmsg type="revokemsg">revokemsg>session>wxid_4gngrr04aqjn21/session>oldmsgid>1123721956/oldmsgid>msgid>2018511155698964390/msgid>replacemsg>![CDATA["小幫幫" 撤回了一條消息]]>/replacemsg>/revokemsg>/sysmsg>',
	'Status': 4,
	'ImgStatus': 1,
	'CreateTime': 1578069381,
	'VoiceLength': 0,
	'PlayLength': 0,
	'FileName': '',
	'FileSize': '',
	'MediaId': '',
	'Url': '',
	'AppMsgType': 0,
	'StatusNotifyCode': 0,
	'StatusNotifyUserName': '',
	'RecommendInfo': {
		'UserName': '',
		'NickName': '',
		'QQNum': 0,
		'Province': '',
		'City': '',
		'Content': '',
		'Signature': '',
		'Alias': '',
		'Scene': 0,
		'VerifyFlag': 0,
		'AttrStatus': 0,
		'Sex': 0,
		'Ticket': '',
		'OpCode': 0
	},
	'ForwardFlag': 0,
	'AppInfo': {
		'AppID': '',
		'Type': 0
	},
	'HasProductId': 0,
	'Ticket': '',
	'ImgHeight': 0,
	'ImgWidth': 0,
	'SubMsgType': 0,
	'NewMsgId': 4056955577161654067,
	'OriContent': '',
	'EncryFileName': '',
	'User':  User: {
		'MemberList':  ContactList: [] > ,
		'Uin': 0,
		'UserName': '@**********f511363f8200853d724137bb31236a7ea81e5183cc06cb4ec978e3',
		'NickName': '小幫幫',
		'HeadImgUrl': '/cgi-bin/mmwebwx-bin/webwxgeticon?seq=699837854username=@**********f511363f8200853d724137bb31236a7ea81e5183cc06cb4ec978e3skey=@crypt_****c00c_92668c8ba7d285c221a85e**********',
		'ContactFlag': 2049,
		'MemberCount': 0,
		'RemarkName': '小幫幫',
		'HideInputBarFlag': 0,
		'Sex': 2,
		'Signature': '',
		'VerifyFlag': 0,
		'OwnerUin': 0,
		'PYInitial': 'XBB',
		'PYQuanPin': 'xiaobangbang',
		'RemarkPYInitial': 'XBB',
		'RemarkPYQuanPin': 'xiaobangbang',
		'StarFriend': 0,
		'AppAccountFlag': 0,
		'Statues': 0,
		'AttrStatus': 33658937,
		'Province': '浙江',
		'City': '臺州',
		'Alias': '',
		'SnsFlag': 17,
		'UniFriend': 0,
		'DisplayName': '',
		'ChatRoomId': 0,
		'KeyWord': '',
		'EncryChatRoomId': '',
		'IsOwner': 0
	} > ,
	'Type': 'Note',
	'Text': '"小幫幫" 撤回了一條消息'
}

得到了兩種類型的msg,下面是對比(高亮的部分是不同處,省略了部分相同內容。可以點擊放大查看大圖

現在來分析幾條關鍵信息:

  • MsgId(與下面的NewMsgId同)
  • 消息編號。這個很好理解,每條消息都是通過一個獨一無二的編號來與其他消息區分,所以這兩條消息的編號不同很正常。如果我們能拿到好友撤回消息的編號,也就能鎖定這條消息了。
  • MsgType(與下面的Type同)
  • 消息類型。如下圖,左邊是普通的對話消息,右邊類似于系統提示消息。是不是可以根據這條信息來判斷是不是有好友撤回了消息?

Content

消息內容,注意與下面的Text區分,這兩種消息類型在內容上最大的區別可能就在這里了。

來看一下撤回消息的Content是怎么樣的(為了便于查看,已經經過格式化)

sysmsg type="revokemsg">
    revokemsg>
        session>wxid_4gngrr04aqjn21/session>
        oldmsgid>1123721956/oldmsgid>
        msgid>2018511155698964390/msgid>
        replacemsg>![CDATA["小幫幫" 撤回了一條消息]]>/replacemsg>
    /revokemsg>
/sysmsg>

一眼就能發現關鍵點:撤回的那條消息屬于系統消息(sysmsg),類型是撤回消息(revokemsg),對應的消息編號是2018511155698964390

細心的讀者已經發現,這個消息編號正好就是左邊那條消息的編號。

通過這個推理,猜測Content字段是系統內部傳輸的內容,而Text字段則是用戶看到的內容。

三、確定消息類型

根據上述分析,有三個地方幫助確定收到的某條信息是否是撤回的消息:

1.MsgType

1就是普通消息,是10002則可能為撤回消息。

2.Content

如果Content里有包含type="revokemsg"則可能為撤回消息,否則不是撤回消息。

3.Type

是Text就是普通消息,是Note則可能為撤回消息。

精確起見,消息還要同時滿足上面三種情況才可認定為撤回消息。

四、鎖定撤回的消息

由于要鎖定撤回消息必須要MsgId才能確定,所以在存儲臨時消息時需要加上這一字段。

log[sender_name][cur_timestamp] = msg['MsgId'] + '|||' + content

為了簡化數據復雜度,我通過分隔符|||直接把MsgId加在前面。

于是,鎖定并發送撤回消息的代碼就時這樣:

content = str(msg['Text'])
revoke_info = msg['Content']
print('{}, {} 發來消息: {}'.format(formatted_timestamp, sender_name, content))
target_msg_pattern = '"{}" 撤回了一條消息'.format(sender_name)
if target_msg_pattern == content and msg['Type'] == 'Note' and str(msg['MsgType']) == '10002' and 'type="revokemsg"' in revoke_info:
    return_msg = ''
    return_msg_head = '{},【{}】撤回了一條消息:\n'.format(formatted_timestamp, sender_name)
    revoke_msg_id = revoke_info.split('msgid>')[-1].split('/msgid>')[0]
    for _, value in log[sender_name].items():
        if value.split('|||')[0] == revoke_msg_id:
            return_msg = value.split('|||')[1]
    if return_msg == '':
        return_msg = '緩存信息列表為空!'
    return_msg = return_msg_head + return_msg
    print(return_msg)
    itchat.send_msg(return_msg, 'filehelper')

測試一下,為便于查看,將撤回提醒直接發給機器人“小幫幫”

 

一個完美的微信防撤回腳本大功告成!

五、結語

Python有很多好用好玩的庫,可以慢慢發掘。本期我們利用ItChat庫編寫了一個微信防撤回腳本。其實ItChat功能遠遠不止這些,它還可以處理微信群消息以及各種其他類型的消息,我們講到的只是九牛一毛,更多的還要大家自己去探索。

到此這篇關于撤回我也能看到!教你用Python制作微信防撤回腳本的文章就介紹到這了,更多相關Python微信防撤回腳本內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python使用wxpy實現微信消息防撤回腳本
  • Python找出微信上刪除你好友的人腳本寫法
  • 微信跳一跳python輔助腳本(總結)
  • 微信跳一跳小游戲python腳本
  • 黑科技 Python腳本幫你找出微信上刪除你好友的人

標簽:六盤水 聊城 楊凌 撫州 牡丹江 南寧 迪慶 揚州

巨人網絡通訊聲明:本文標題《撤回我也能看到!教你用Python制作微信防撤回腳本》,本文關鍵詞  撤回,我,也能,看到,教,你用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《撤回我也能看到!教你用Python制作微信防撤回腳本》相關的同類信息!
  • 本頁收集關于撤回我也能看到!教你用Python制作微信防撤回腳本的相關信息資訊供網民參考!
  • 推薦文章
    国产视频一区二区在线播放| 国产成+人+综合+亚洲不卡| 黄视频网站免费看| 午夜家庭影院| 午夜在线影院| 久久99欧美| 精品国产亚洲一区二区三区| 日韩在线观看视频免费| 青青久久精品| 国产成人啪精品| 日本特黄特黄aaaaa大片| 九九精品久久| 欧美一区二区三区在线观看| 午夜激情视频在线观看 | 久久国产一久久高清| 精品国产一区二区三区久久久蜜臀| 国产一区二区精品| 你懂的福利视频| 毛片高清| 午夜家庭影院| 999久久狠狠免费精品| 日韩av成人| 免费一级片在线| 精品国产亚洲一区二区三区| 欧美激情中文字幕一区二区| 久久福利影视| 国产成人精品影视| 久久精品店| 久久久成人网| 国产91精品一区二区| 一级毛片视频播放| 香蕉视频久久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 九九干| 色综合久久久久综合体桃花网| 尤物视频网站在线| 久久99欧美| 美女被草网站| 美女免费精品高清毛片在线视 | 可以免费在线看黄的网站| 青青青草影院 | 精品毛片视频| 久久精品店| 午夜在线影院| 久久福利影视| 日韩专区第一页| 欧美1区2区3区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 99久久精品国产高清一区二区| 一级毛片视频播放| 久草免费在线视频| 国产激情一区二区三区| 精品久久久久久综合网| 久久99中文字幕久久| 国产a毛片| 久久久成人网| 日韩欧美一及在线播放| 99热精品在线| 麻豆污视频| 午夜激情视频在线观看 | 国产激情一区二区三区| 精品视频一区二区三区免费| 尤物视频网站在线| 久久99欧美| 久久精品店| 日韩欧美一及在线播放| 亚洲天堂免费| 亚洲第一页乱| 日韩欧美一及在线播放| 一级女人毛片人一女人| 国产视频一区二区在线播放| 免费一级片在线| 国产视频一区二区在线播放| 亚洲 激情| 深夜做爰性大片中文| 国产一区二区精品久久91| 日韩av成人| 国产美女在线一区二区三区| 久久99中文字幕久久| 国产成人啪精品| 亚洲天堂免费| 日韩中文字幕一区二区不卡| 91麻豆精品国产片在线观看| 99久久精品国产高清一区二区| 国产麻豆精品| 日韩在线观看视频免费| 日韩免费在线视频| 日韩在线观看视频免费| 国产美女在线一区二区三区| 国产麻豆精品免费视频| 国产成+人+综合+亚洲不卡| 青青青草影院 | 久久国产精品自线拍免费| 日本伦理片网站| 欧美激情中文字幕一区二区| 青草国产在线| 99热精品在线| 精品视频在线观看一区二区| 国产激情一区二区三区| 久久99中文字幕久久| 亚洲天堂免费| 亚洲天堂免费| 久久99欧美| 青草国产在线| 四虎影视库| 99热精品在线| 91麻豆国产| 午夜家庭影院| 日日夜人人澡人人澡人人看免| 欧美一级视频高清片| 精品在线观看国产| 欧美一区二区三区在线观看| 九九干| 欧美日本免费| 亚洲 激情| 日本在线不卡视频| 99热精品在线| 成人免费一级纶理片| 亚洲精品影院| 日韩中文字幕一区二区不卡| 国产视频久久久久| 日本免费乱理伦片在线观看2018| 九九精品久久| 香蕉视频久久| 成人免费观看男女羞羞视频| 久久99欧美| 国产一区二区精品久久91| 美女免费精品高清毛片在线视 | 精品国产一区二区三区久久久蜜臀| 日韩专区第一页| 亚洲精品影院| 亚洲 激情| 香蕉视频久久| 久久福利影视| 国产伦久视频免费观看 视频| 欧美日本免费| 成人免费观看男女羞羞视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产成人精品影视| 欧美一级视频高清片| 国产亚洲男人的天堂在线观看| 美女被草网站| 高清一级毛片一本到免费观看| 韩国三级一区| 亚洲第一页乱| 999久久狠狠免费精品| 亚飞与亚基在线观看| 韩国三级一区| 色综合久久久久综合体桃花网| 四虎论坛| 久草免费在线视频| 在线观看成人网 | 九九干| 成人a大片在线观看| 国产一区二区精品久久91| 精品毛片视频| 亚洲 激情| 美女免费精品高清毛片在线视 | 久久久久久久男人的天堂| 999精品视频在线| 香蕉视频久久| 久久久久久久男人的天堂| 999久久狠狠免费精品| 久久久久久久男人的天堂| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 四虎论坛| 国产美女在线一区二区三区| 色综合久久久久综合体桃花网| 国产麻豆精品| 国产亚洲男人的天堂在线观看| 国产美女在线一区二区三区| 九九精品久久| 国产a毛片| 四虎论坛| 免费国产在线视频| 成人免费观看男女羞羞视频| 91麻豆精品国产片在线观看| 日本伦理片网站| 91麻豆国产| 国产亚洲男人的天堂在线观看| 欧美大片aaaa一级毛片| 999久久狠狠免费精品| 99久久精品国产高清一区二区| 天天做日日爱夜夜爽| 欧美一级视频高清片| 99色视频| 久久福利影视| 91麻豆国产| 在线观看成人网 | 欧美一区二区三区在线观看| 九九干| a级黄色毛片免费播放视频| 日韩一级黄色| 一级女人毛片人一女人| 色综合久久天天综合绕观看| 国产一区二区精品久久91| 国产精品自拍在线观看| 日本特黄特黄aaaaa大片| 国产91精品一区二区|