官术网_书友最值得收藏!

2.8 微信提醒

隨著移動互聯網的普及,微信幾乎是人人必用的產品,使用程序來處理微信消息具有很廣泛的應用場景。本節介紹如何使用Python來處理微信消息,以及如何將警告信息發送到微信。

2.8.1 處理微信消息

Python處理微信消息的第三方模塊主要有wxpy、itchat等。wxpy在itchat的基礎上通過大量接口優化提升了模塊的易用性,并進行豐富的功能擴展,這里我們使用wxpy,使用itchat的讀者可參考官方文檔http://itchat.readthedocs.io/zh/latest/。這些模塊使用了Web微信的通信協議,實現了微信登錄、收發消息、搜索好友、數據統計等功能。

首先需要從官方源下載并安裝wxpy。

pip install wxpy

或者從豆瓣源安裝wxpy。

pip install -U wxpy -i “ttps://pypi.doubanio.com/simple”

安裝完成后,我們試一下幾個基本功能。


(1)查找好友、群、發送消息。

運行上面的程序會彈出二維碼,使用手機微信掃一掃即可實現登錄。開啟了cache_path =True之后,會將登錄信息保存下來,短時間內登錄不需要重新掃碼。


(2)接收消息、自動回復、轉發消息。

我們可以利用接收消息再轉發消息這一功能來保存重要人物(如老板)所發的消息。轉發消息實例如下:

(3)統計好友信息,如省份、城市、性別等。

運行結果如圖2.32所示。

圖2.32 運行結果

可以將上述代碼第6行中的"province"替換為"city","sex"用來統計城市和性別信息。利用Python的圖表模塊可以輕松將統計數據生成漂亮的圖表,在此不再詳述。


【示例2-33】我們還可以利用微信實現遠程控制:定義一個管理員,當收到管理員的消息命令時,執行相應的指令。

運行上面的程序,使用管理員向登錄號發送命令,結果如圖2.33所示。

圖2.33 實現微信遠程控制

2.8.2 將警告信息發送至微信

通過利用微信強大的通知能力,我們可以把程序中的警告/日志發到自己的微信上。wxpy提供了以下兩種方式來實現該需求。


(1)獲取專有的Logger。

wxpy.get_wechat_logger(receiver=None, name=None, level=30)

參數說明:


receiver:當為None、True或字符串時,將以該值作為cache_path參數啟動一個新的機器人,并發送到該機器人的“文件傳輸助手”;當為機器人時,將發送到該機器人的“文件傳輸助手”;當為聊天對象時,將發送到該聊天對象。

name:Logger名稱。

level:Logger等級,默認為logging.WARNING。


實例代碼如下:

(2)加入現有的Logger。

class wxpy.WeChatLoggingHandler(receiver=None)

可以將日志發送至指定的聊天對象。


參數說明:


receiver:當為None、True或字符串時,將以該值作為cache_path參數啟動一個新的機器人,并發送到該機器人的“文件傳輸助手”;當為機器人時,將發送到該機器人的“文件傳輸助手”;當為聊天對象時,將發送到該聊天對象。


實例代碼如下:

當然,我們也可以使用其他聊天對象來接收日志。比如,先在微信中建立一個群聊,并在里面加入需要關注這些日志的人員,然后將該群作為接收者。

from wxpy import *
# 初始化機器人
bot = Bot()
# 找到需要接收日志的群 -- 'ensure_one()' 用于確保找到的結果是唯一的,避免發錯地方
group_receiver = ensure_one(bot.groups().search('XX業務-警告通知'))
# 指定這個群為接收者
logger = get_wechat_logger(group_receiver)
logger.error('打擾大家了,但這是一條重要的錯誤日志...')

上述兩種方法都是wxpy官方提供監控程序的方法,該方法雖然簡單,但每次添加一個程序的微信監控都需要掃描二維碼重新登錄一次,這就顯得非常麻煩,有沒有一種方法能讓微信運行之后無論添加多少次程序都不需要重新掃描二維碼呢?當然有,社區的程序員已經為用戶想到了——wechat_sener模塊。

wechat_sender是基于wxpy和Tornado實現的一個可以將網站、爬蟲、腳本等其他應用中各種消息(日志、報警、運行結果等)發送到微信的工具。

安裝:

pip install wechat_sender

使用:

(1)只需要在原有的腳本中添加兩行代碼。

(2)然后在其他腳本中添加以下代碼即可實現消息發送至微信。

from wechat_sender import Sender
Sender().send('Hello From Wechat Sender')
# Hello From Wechat Sender 這條消息將通過(1)中登錄微信的文件傳輸助手發送給你

例如我們已有的wxpy腳本如下:

使用wechat_sender時只需要增加第3行和第10行代碼即可。

之后如果還想在其他程序或腳本中發送微信消息,只需要:

# coding: utf-8
from wechat_sender import Sender
Sender().send("test message")  #發送至已登錄微信的文件傳輸助手
Sender().send_to(“test_message”,”xxx”) #發送至xxx用戶,也可以發送至群聊等聊天對象

后續若有程序需要發送報警信息至微信,則不需要重新掃描二維碼,只要添加相應的發送語句即可,非常簡便。

以上就是本小節介紹的如何使用微信處理消息,以及如何將警告信息發送至微信,讀者可以依據具體需要定制自己的代碼。

主站蜘蛛池模板: 北流市| 哈尔滨市| 正镶白旗| 邯郸市| 互助| 嘉禾县| 临邑县| 大丰市| 邵阳县| 东城区| 嘉定区| 福鼎市| 沾益县| 武汉市| 呼玛县| 沙湾县| 邯郸市| 成安县| 昌图县| 宿松县| 武鸣县| 姚安县| 页游| 金秀| 新蔡县| 黎平县| 贺兰县| 平泉县| 德令哈市| 石渠县| 蒲江县| 青川县| 丰顺县| 岱山县| 阜康市| 柞水县| 平利县| 襄樊市| 弥渡县| 荆州市| 朝阳县|