本篇博客主要介紹如何使用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:
因而就完成了監聽羣內招聘消息的過程,測試結果以下: