前一段時間在微信群裡出現好多聊天"機器人" , 可以回答問題跟朋友互動。那麼微信上的聊天機器人是如何實現的呢?或者你是否期望每天定時給女神早安 ,晚安 ;每天早上提醒女神今天天氣如何等等。程式設計師樂進為大家提供一種實現方式。基於網頁版本微信以及 python 版本 itchat 。具體實現方式如下正文
正文安裝 itchat : pip3 install itchat
跑一下demo
import itchat, time
from itchat.content import *
def notiFilehelper():
itchat.auto_login(enableCmdQR=2,hotReload=True)
itchat.run(blockThread=False)
itchat.send('Hello, filehelper', toUserName='filehelper')
我的開發是mac ,因為最終是需要放到雲伺服器上運行的(雲伺服器為centos python運行在centos 與在mac上運行 環境差別不大),所以需要在terminal顯示微信登錄二維碼。(這裡需要注意 itchat.auto_login 方法參數需要設置 enableCmdQR=2 ,不然terminal 顯示二維碼不全或者無法識別;hotReload=True 可以保留一段時間登錄狀態,不用每次發消息都掃碼登錄。)微信掃碼登錄後本地跑一下 ,完美運行 , 文件傳輸助手如期收到了消息,很順利。接下來調試群消息。
def sendToGroup(content):
itchat.get_chatrooms(update=True)
roomNickName = 'YourGroupName'
candidates = itchat.search_chatrooms(roomNickName)
for room in candidates:
if room['NickName'] == roomNickName:
userName = room['UserName']
break
nowDateTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print('現在時間:' + nowDateTime + '\n' + content )
itchat.send(content, toUserName=userName)
遇到第一個報錯是找不到對應的群,後來發現需要把群保存在通訊錄中。然後Python的一些語法不熟悉的話還是要花一點時間調一下的。調通之後調定時任務。
首先想到的肯定是 crontab ,我搜了一下 Python也有一個包可以實現類似的功能,偷懶就用 Python 的 apscheduler , 當然這裡實現方案很多,大家可以根據自己個人喜好自行選擇 , 安裝 apscheduler
pip3 install apscheduler
使用也比較簡單
比如每天晚上9點提醒自己總結自己的一天
import time
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler()
scheduler.add_job(dailyReview, 'cron', day_of_week = '0-6',hour = 21,minute = 00 , second =0)
scheduler.start()
scheduler.add_job 第一個參數為要執行的python 方法, day_of_week 0-6 表示周一到周日 剩下的參數就不解釋了。
調試的時候可以用
scheduler = BlockingScheduler()
scheduler.add_job(dailyReview, 'interval', seconds=5)
每隔5秒執行一次dailyReview方法
注意: 目前微信安全策略會攔截一部分微信帳號登錄網頁版本微信, 請保證自己的微信帳號可以正常掃碼登錄 http://wx.qq.com
最新的可行方案請查閱