概述
本篇博客主要介紹如何使用python的wxpy庫,在其他博客代碼的基礎上,通過網頁版微信,監聽某個好友或微信群中,滿足特定要求的消息,並集中轉發至制定好友處。
感謝作者”豬哥“(微信號IT--Pig)提供的教程與開源代碼!
配置機器介紹
python版本:Python 3.7.3
依賴庫:wxpy
安裝方法:安裝pip后,輸入在控制台輸入以下代碼進行安裝
pip3 install -U wxpy -i "https://pypi.doubanio.com/simple/"
常用功能測試
本篇博客在該博客的代碼基礎上進行更改。作者在文章中給出了開源代碼,地址如下:
該項目已經實現了很多功能,如自動化的好友管理功能、簡單的聊天機器人、群聊的消息監聽與轉發、公眾號的自動管理管理功能等。本篇博客主要闡述如何對其中的消息監聽功能進行自定義修改以滿足不同需求,並介紹個別所遇到問題的解決方法。
剛開始登錄微信時就遇到了一個問題,程序不能正確彈出二維碼以登錄微信,經查閱代碼發現,項目的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:
於是就完成了監聽群內招聘消息的過程,測試結果如下: