本篇博客主要介绍如何使用python的wxpy库,在其余博客代码的基础上,经过网页版微信,监听某个好友或微信群中,知足特定要求的消息,并集中转发至制定好友处。html
感谢做者”猪哥“(微信号IT--Pig)提供的教程与开源代码!python
python版本:Python 3.7.3git
依赖库:wxpygithub
安装方法:安装pip后,输入在控制台输入如下代码进行安装shell
pip3 install -U wxpy -i "https://pypi.doubanio.com/simple/"
本篇博客在该博客的代码基础上进行更改。做者在文章中给出了开源代码,地址以下:api
该项目已经实现了不少功能,如自动化的好友管理功能、简单的聊天机器人、群聊的消息监听与转发、公众号的自动管理管理功能等。本篇博客主要阐述如何对其中的消息监听功能进行自定义修改以知足不一样需求,并介绍个别所遇到问题的解决方法。微信
刚开始登陆微信时就遇到了一个问题,程序不能正确弹出二维码以登陆微信,经查阅代码发现,项目的robot.py中的一个参数console_qr使其在控制台打印出了二维码,所以需对其做出修改:app
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:
因而就完成了监听群内招聘消息的过程,测试结果以下: