概述
本篇博客主要介绍如何使用python的wxpy库,在其他博客代码的基础上,通过网页版微信,监听某个好友或微信群中,满足特定要求的消息,并集中转发至制定好友处。
感谢作者”猪哥“(微信号IT--Pig)提供的教程与开源代码!
配置机器介绍
python版本:Python 3.7.3
依赖库:wxpy
安装方法:安装pip后,输入在控制台输入以下代码进行安装
pip3 install -U wxpy -i "https://pypi.doubanio.com/simple/"
常用功能测试
本篇博客在该博客的代码基础上进行更改。作者在文章中给出了开源代码,地址如下:
基于python的微信机器人
该项目已经实现了很多功能,如自动化的好友管理功能、简单的聊天机器人、群聊的消息监听与转发、公众号的自动管理管理功能等。本篇博客主要阐述如何对其中的消息监听功能进行自定义修改以满足不同需求,并介绍个别所遇到问题的解决方法。
刚开始登录微信时就遇到了一个问题,程序不能正确弹出二维码以登录微信,经查阅代码发现,项目的robot.py中的一个参数console_qr使其在控制台打印出了二维码,因此需对其作出修改:
bot = Bot(cache_path=True, console_qr=False)
由于只有一个微信号,无法实现远程控制机器人,因此也不能收到一些反馈消息,因此需要手动设置一些输出来查看每一步的运行过程。
在测试常用的如防撤回模式、转发群@我的消息、群分享监控等功能时遇到了有的群无法找到的问题,暂时尚未查明原因, 由于并不影响监听的进行,就暂时放弃这个难题。这些过程中并未遇到其他问题。
在测试监听某些好友在群聊中的消息时,本来设想监听自己在一些群聊中的消息,这样测试较为方便,可以一人独自完成。测试时发现,监听自己,在查找好友列表时并不会报错,该过程如下:
bot.listen_friends = search_friends(bot, config.listen_friend_names)
if not bot.listen_friends:
bot.listen_friends = []
bot.is_listen_friend = False
print('none1')
return '未在好友中找到备注为「{}」的监听对象!'.format(str(config.listen_friend_names))
因此,就以为该过程可以通过监听自己在一些群聊中的消息实现,但是并不能收到任何监听到的消息。在经过对代码的分析以及运行过程的分析以及更多的测试后终于发现,程序并不能收到自己的消息。在经过对他人的测试后,终于得到了正确的结果。
监听某些好友在群聊中的消息时的参数设置:
# 监听某些好友群聊,如老板
is_listen_friend = True
listen_friend_names = 'ewferhy' # 需要监听的人名称,使用备注名更安全,允许多个用|分隔,如:主管|项目经理|产品狗
listen_friend_groups = '真情' # 在这些群里监听好友说的话,匹配模式:包含“唯一集团工作群”的群
测试的结果:
实现监听群内招聘消息
经过仔细研究思考,最终决定使用监听群转发的已有函数来完成监听群内招聘信息。为了实现这一目标,需要实现对招聘信息的识别。由于之前并不知道本程序收集到的数据类型是什么样的,于是,开始查找wxpy库的信息。最终得到,收集到的text信息数据类型为string,于是,就能轻松的实现信息的识别了。这一过程主要参考了wxpy文档,参考如下:
@wrapped_send(TEXT)
def send_msg(self, msg=None):
"""
发送文本消息
:param msg: 文本内容
:rtype: :class:`wxpy.SentMessage`
"""
if msg is None:
msg = 'Hello from wxpy!'
else:
msg = str(msg)
return dict(msg=msg), dict(text=msg)
之后,对于招聘信息的识别,经过对很多招聘消息的研究,最终使用了这些识别关键字,代码如下:
if '招' in msg.text or '有偿' in msg.text or '实习' in msg.text or '工作' in msg.text or '帮转' in msg.text or '岗位' in msg.text or '劳务' in msg.text:
于是就完成了监听群内招聘消息的过程,测试结果如下: