最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用wxpy輕松實(shí)現(xiàn)微信防撤回的方法

 更新時(shí)間:2019年02月21日 14:57:41   作者:qq_41864652  
今天小編就為大家分享一篇python使用wxpy輕松實(shí)現(xiàn)微信防撤回的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧

最近比較閑就隨便瞎看,看到了微信防撤回就順便跟著學(xué)著實(shí)現(xiàn)一下

使用的是wxpy,安裝方法pip install wxpy(我使用的是python2.7),這樣實(shí)現(xiàn)起來(lái)比較快,反正也只是練手

首現(xiàn)看了兩個(gè)別人實(shí)現(xiàn)的代碼,然后看了看wxpy的文檔:http://wxpy.readthedocs.io/zh/latest/utils.html(萌新,順便鍛煉下看文檔)

我實(shí)現(xiàn)的代碼:

import wxpy
import re
 
# 實(shí)例化微信對(duì)象
bot = wxpy.Bot(cache_path=True)
 
# 啟用puid 并指定puid所需映射數(shù)據(jù)保存的路徑
bot.enable_puid(path='wxpy_puid.pkl')
 
# 用于存放每個(gè)用戶最近發(fā)送的消息
msgs = dict()
 
# 信息的類型
msg_types = {
 'Text': '文本',
 'Map': '位置',
 'Picture': '圖片',
 'Video': '視頻',
 'Attachment': '文件',
 'Sharing': '分享',
 'Card': '名片',
 'Recording': '語(yǔ)音',
}
 
 
@bot.register()
def handle_receive_msg(msg):
 """
 監(jiān)聽消息
 :param msg: 接收到的消息
 :return:
 """
 # 原信息數(shù)據(jù)
 raw = msg.raw
 
 # 如果消息的狀態(tài)碼是4 即撤回消息
 if raw.get('Status') == 4:
  # 如果是群消息
  if isinstance(msg.chat, wxpy.api.chats.group.Group):
   # 獲取群成員的puid
   puid = msg.member.puid
   # 獲取發(fā)送者的昵稱
   name = msg.member.nick_name
  # 如果是好友消息
  elif isinstance(msg.chat, wxpy.api.chats.friend.Friend):
   # 獲取好友的puid
   puid = msg.chat.puid
   # 獲取好友的昵稱
   name = msg.chat.nick_name
  else:
   puid = None
   name = None
  if puid:
   # 被撤回消息的msgid的匹配規(guī)則
   msg_id_regex = re.compile('<msgid>(\d+)</msgid>')
   # 獲取被撤回消息的msgid
   old_msg_id = msg_id_regex.findall(raw.get('Content'))[0]
   # 獲取該發(fā)送者的最后5次的消息記錄
   chat_msgs = msgs.get(puid)
   # 遍歷消息記錄
   for chat_msg in chat_msgs[::-1]:
    # 跳過不是被撤回的信息
    if str(chat_msg.id) != old_msg_id:
     continue
    chat = chat_msg.chat
    # 如果被撤回的信息是文本信息
    if chat_msg.type == "Text":
     # 如果消息長(zhǎng)度過長(zhǎng) 則不予處理
     if len(chat_msg.text) >= 150:
      warning = "【您撤回的消息過長(zhǎng),有炸群嫌疑,不予處理?。?!】"
      bot.file_helper.send('%s撤回了一條文本消息--【%s】'.decode('utf-8') % (name, warning))
      break
     # 將此消息轉(zhuǎn)發(fā)出來(lái)
     chat_msg.forward(chat, prefix='%s撤回了一條文本消息,消息內(nèi)容為:'.decode('utf-8') % name)
    # 如果被撤回的是位置信息
    elif chat_msg.type == "Map":
     # 位置信息的匹配規(guī)則
     map_regex = re.compile(r'label="(.+?)"')
     # 獲取位置信息中的位置
     map = map_regex.findall(chat_msg.raw.get("OriContent"))[0]
     # 將位置信息發(fā)出來(lái)
     msg.reply('%s撤回了一條位置消息,位置信息為:【%s】'.decode('utf-8') % (name, map))
    else:
     # 獲取信息的類型
     msg_type = msg_types.get(chat_msg.type).decode('utf-8')
     # 將信息轉(zhuǎn)發(fā)出來(lái)
     chat_msg.forward(chat, prefix='%s撤回了一條%s消息, 消息內(nèi)容為:'.decode('utf-8') % (name, msg_type))
    break
 else:
  # 如果是群消息
  if isinstance(msg.chat, wxpy.api.chats.group.Group):
   # 獲取群成員的puid
   puid = msg.member.puid
  # 如果是好友消息
  elif isinstance(msg.chat, wxpy.api.chats.friend.Friend):
   # 獲取好友的puid
   puid = msg.chat.puid
  else:
   puid = None
  if puid:
   # 記錄消息
   msgs.setdefault(puid, []).append(msg)
   # 截取消息 保留最大5條記錄
   msgs[puid] = msg[puid][-5:]
 
# 使機(jī)器人后臺(tái)運(yùn)行,并進(jìn)入交互模式
wxpy.embed()

也未做過多的測(cè)試和優(yōu)化,測(cè)試了文本、圖片、語(yǔ)音、位置信息,視頻、名片、分享、文件消息未做測(cè)試

ps:這里語(yǔ)音消息撤回后發(fā)出來(lái)的是語(yǔ)音文件,位置信息發(fā)出來(lái)的是地址的文本

======================割======================

如果想要添加聊天機(jī)器人 可以加入:

# 指定一個(gè)好友
friend = bot.friends().search('您對(duì)朋友的備注')
# 指定一個(gè)群
group = bot.groups().search('群名')
 
# 實(shí)例化圖靈機(jī)器人 免費(fèi)申請(qǐng)圖靈機(jī)器人: http://www.tuling123.com/
tu_ling = wxpy.Tuling(api_key="自行注冊(cè)")
# chats指定對(duì)哪些用戶起作用, 如果chats=None(默認(rèn)值)對(duì)所有用戶起作用
@bot.register(chats=[friend, group]) 
def reply_msg(msg):
 """
 自動(dòng)回復(fù)消息
 :param msg: 接收到的信息數(shù)據(jù)
 :return: 回復(fù)文本
 """
 # do_reply會(huì)自動(dòng)回復(fù)消息并返回消息文本
 tu_ling.do_reply(msg)

以上這篇python使用wxpy輕松實(shí)現(xiàn)微信防撤回的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)批量下載文件的示例代碼

    Python實(shí)現(xiàn)批量下載文件的示例代碼

    下載文件是我們?cè)谌粘9ぷ髦谐3R龅囊患虑?當(dāng)我們需要從互聯(lián)網(wǎng)上批量下載大量文件時(shí),手動(dòng)一個(gè)一個(gè)去下載顯然不夠高效,所以本文為大家介紹一下如何利用python批量下載文件吧
    2023-11-11
  • 淺談python迭代器

    淺談python迭代器

    這篇文章主要介紹了淺談python迭代器,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Python 壓縮打包文件/文件夾的方法

    Python 壓縮打包文件/文件夾的方法

    本文主要介紹了Python?壓縮打包文件/文件夾的方法,分兩種類型處理,打包文件是需要傳入文件的路徑,打包文件夾是傳入文件夾的路徑,感興趣的可以了解一下
    2023-12-12
  • python中的__slots__使用示例

    python中的__slots__使用示例

    這篇文章主要介紹了python中的__slots__使用示例,__slots__用來(lái)限制class能添加的屬性,需要的朋友可以參考下
    2015-02-02
  • python 指定源路徑來(lái)解決import問題的操作

    python 指定源路徑來(lái)解決import問題的操作

    這篇文章主要介紹了python 指定源路徑來(lái)解決import問題的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-03-03
  • Python中類的創(chuàng)建和實(shí)例化操作示例

    Python中類的創(chuàng)建和實(shí)例化操作示例

    這篇文章主要介紹了Python中類的創(chuàng)建和實(shí)例化操作,涉及Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、實(shí)例化、方法調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • Visual Studio Code搭建django項(xiàng)目的方法步驟

    Visual Studio Code搭建django項(xiàng)目的方法步驟

    這篇文章主要介紹了Visual Studio Code搭建django項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python爬蟲基礎(chǔ)之selenium庫(kù)的用法總結(jié)

    Python爬蟲基礎(chǔ)之selenium庫(kù)的用法總結(jié)

    今天帶大家來(lái)學(xué)習(xí)selenium庫(kù)的使用方法及相關(guān)知識(shí)總結(jié),文中非常詳細(xì)的介紹了selenium庫(kù),對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • pytorch程序異常后刪除占用的顯存操作

    pytorch程序異常后刪除占用的顯存操作

    今天小編就為大家分享一篇pytorch程序異常后刪除占用的顯存操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-01-01
  • python中的round()函數(shù)用法詳解

    python中的round()函數(shù)用法詳解

    這篇文章主要給大家介紹了關(guān)于python中round()函數(shù)用法的相關(guān)資料,round()函數(shù)是Python內(nèi)置函數(shù)之一,用于對(duì)數(shù)字進(jìn)行四舍五入操作,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

中牟县| 临沭县| 资兴市| 太谷县| 垦利县| 宿迁市| 抚顺市| 赞皇县| 长阳| 沽源县| 镇坪县| 湾仔区| 紫阳县| 东方市| 新建县| 莆田市| 天祝| 南澳县| 汝州市| 凌源市| 博野县| 汨罗市| 运城市| 钟山县| 庄河市| 河东区| 丹棱县| 泰和县| 盖州市| 南雄市| 竹北市| 仙桃市| 张家口市| 华宁县| 鸡东县| 璧山县| 隆尧县| 灌南县| 钟山县| 通渭县| 博客|