python微信库wxpy_python wxpy微信防撤回功能

python使用wxpy轻松实现微信防撤回的方法

最近比较闲就随便瞎看,看到了微信防撤回就顺便跟着学着实现一下

使用的是wxpy,安装方法pip install wxpy(我使用的是python2.7),这样实现起来比较快,反正也只是练手

首现看了两个别人实现的代码,然后看了看wxpy的文档:http://wxpy.readthedocs.io/zh/latest/utils.html(萌新,顺便锻炼下看文档)

我实现的代码:

import wxpy

import re

# 实例化微信对象

bot = wxpy.Bot(cache_path=True)

# 启用puid 并指定puid所需映射数据保存的路径

bot.enable_puid(path='wxpy_puid.pkl')

# 用于存放每个用户最近发送的消息

msgs = dict()

# 信息的类型

msg_types = {

'Text': '文本',

'Map': '位置',

'Picture': '图片',

'Video': '视频',

'Attachment': '文件',

'Sharing': '分享',

'Card': '名片',

'Recording': '语音',

}

@bot.register()

def handle_receive_msg(msg):

"""

监听消息

:param msg: 接收到的消息

:return:

"""

# 原信息数据

raw = msg.raw

# 如果消息的状态码是4 即撤回消息

if raw.get('Status') == 4:

# 如果是群消息

if isinstance(msg.chat, wxpy.api.chats.group.Group):

# 获取群成员的puid

puid = msg.member.puid

# 获取发送者的昵称

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的匹配规则

msg_id_regex = re.compile('(\d+)')

# 获取被撤回消息的msgid

old_msg_id = msg_id_regex.findall(raw.get('Content'))[0]

# 获取该发送者的最后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":

# 如果消息长度过长 则不予处理

if len(chat_msg.text) >= 150:

warning = "【您撤回的消息过长,有炸群嫌疑,不予处理!!!】"

bot.file_helper.send('%s撤回了一条文本消息--【%s】'.decode('utf-8') % (name, warning))

break

# 将此消息转发出来

chat_msg.forward(chat, prefix='%s撤回了一条文本消息,消息内容为:'.decode('utf-8') % name)

# 如果被撤回的是位置信息

elif chat_msg.type == "Map":

# 位置信息的匹配规则

map_regex = re.compile(r'label="(.+?)"')

# 获取位置信息中的位置

map = map_regex.findall(chat_msg.raw.get("OriContent"))[0]

# 将位置信息发出来

msg.reply('%s撤回了一条位置消息,位置信息为:【%s】'.decode('utf-8') % (name, map))

else:

# 获取信息的类型

msg_type = msg_types.get(chat_msg.type).decode('utf-8')

# 将信息转发出来

chat_msg.forward(chat, prefix='%s撤回了一条%s消息, 消息内容为:'.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:]

# 使机器人后台运行,并进入交互模式

wxpy.embed()

也未做过多的测试和优化,测试了文本、图片、语音、位置信息,视频、名片、分享、文件消息未做测试

ps:这里语音消息撤回后发出来的是语音文件,位置信息发出来的是地址的文本

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

如果想要添加聊天机器人 可以加入:

# 指定一个好友

friend = bot.friends().search('您对朋友的备注')

# 指定一个群

group = bot.groups().search('群名')

# 实例化图灵机器人 免费申请图灵机器人: http://www.tuling123.com/

tu_ling = wxpy.Tuling(api_key="自行注册")

# chats指定对哪些用户起作用, 如果chats=None(默认值)对所有用户起作用

@bot.register(chats=[friend, group])

def reply_msg(msg):

"""

自动回复消息

:param msg: 接收到的信息数据

:return: 回复文本

"""

# do_reply会自动回复消息并返回消息文本

tu_ling.do_reply(msg)

以上这篇python使用wxpy轻松实现微信防撤回的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值