這篇文章將為大家詳細(xì)講解有關(guān)python如何使用wxpy輕松實(shí)現(xiàn)微信防撤回,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

實(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)聽(tīng)消息
: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]:
# 跳過(guò)不是被撤回的信息
if str(chat_msg.id) != old_msg_id:
continue
chat = chat_msg.chat
# 如果被撤回的信息是文本信息
if chat_msg.type == "Text":
# 如果消息長(zhǎng)度過(guò)長(zhǎng) 則不予處理
if len(chat_msg.text) >= 150:
warning = "【您撤回的消息過(guò)長(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()也未做過(guò)多的測(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)關(guān)于“python如何使用wxpy輕松實(shí)現(xiàn)微信防撤回”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文標(biāo)題:python如何使用wxpy輕松實(shí)現(xiàn)微信防撤回-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article24/cogsje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站策劃、ChatGPT、移動(dòng)網(wǎng)站建設(shè)、用戶體驗(yàn)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)