python:用itchat打造屬於自己的微信聊天機器人,24小時運行

前幾天逛GitHub看見python上的一個開源項目itchat,可以用來豐富個人微信號或者微信公眾號,於是乎點進去看了看,

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

這是成功的示意圖:

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

下面來具體介紹一下。

一.對itchat的調用

(源碼不是自己寫的,不用花費太多時間在看表面代碼上,知道大致的功能即可)

首先我們要安裝itchat包,使用代碼:

pip install itchat

雖然包的源碼不是我們寫的,但是還是要想一想,這個包為什麼能夠自動連接到微信號。 後來查詢得知,微信有網頁版的,這樣就顯而易見了。http協議的一些基本常識我們之前是瞭解過的。

首先看一下,如果我們要給文件助手發一條消息應該怎樣做。

import itchat
itchat.auto_login() #連接微信號
itchat.send('這是一個測試', toUserName='filehelper')#發送內容
python:用itchat打造屬於自己的微信聊天機器人,24小時運行

當執行上面的命令之後,會自動生成一個二維碼,你自己掃一下,之後就可以給文件助手發消息就行了。

如果需要自動回覆的話:

#!/usr/bin/python
#coding=utf8
import itchat
import time
# 自動回覆
# 封裝好的裝飾器,當接收到的消息是Text,即文字消息
@itchat.msg_register('Text')
def text_reply(msg):
# 當消息不是由自己發出的時候
return u"[主人暫時不在,我是周小祕]{}".format(msg['Text'])
# 回覆給好友
if __name__ == '__main__':
itchat.auto_login(enableCmdQR=2)#enablecmdqr參數是用於在命令行上生成二維碼,用於linux服務器
itchat.run(debug=True)

二.調用圖靈機器人接口

圖靈機器人接口:圖靈機器人-智能好用的聊天機器人,自己登錄註冊,然後就會生成一個apikey,如下圖(建議不要把密鑰打開,因為打開之後調用api需要進行算法加密,很複雜,沒有必要)

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

下面,我們來看看api接口的文檔

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

可以看見,請求方式是post請求,一共需要post4個參數:apikey,請求的內容(也就是收到好友所發的消息),自己的地理位置(用於調用高級功能,比如查看天氣等等,userid(自己隨意設置的一個唯一標識符)),看一下返回的狀態碼的意思:

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

下面,我們來自己寫一個調用函數:

import requests
import json
def tulin_robot(text):
url="http://www.tuling123.com/openapi/api"
data={
"key":"*****************",#自己機器人apikey值
"info":text,#從微信傳輸過來的文本內容
'userid': 'wechat-robot',
'loc':"武漢"
}
r=requests.post(url,data=data).json()
code=r["code"]
"""100000 文本類
200000 鏈接類
302000 新聞類
308000 菜譜類
313000 兒歌類
314000 詩詞類"""
if code== 302000:
return r["text"],r["list"]
if code== 100000:
return r["text"]
if code==200000:
return r["text"],r["url"]
if code==313000:
return r["text"],r["function"]
if code==314000:
return r["text"],r["function"]
if code==308000:
return r["text"],r["list"]
print(tulin_robot("武漢天氣"))#調用函數tulin_robot,並輸出返回內容

如上所示,當我輸入的內容是“武漢天氣”時,返回內容為:

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

也就是說,圖靈機器人的函數已經寫好了。(對requests不太熟悉的話,可以看看我之前的爬蟲文章)

將上面兩部分結合起來的話,代碼如下:

#!/usr/bin/python
#coding=utf8
import itchat
import time
import requests
import json
def tulin_robot(text):
url="http://www.tuling123.com/openapi/api"
data={
"key":"e4ad535f0eef4674a7b1ccd34643398b",
"info":text,
'userid': 'wechat-robot',
'loc':"武漢"
}
#!/usr/bin/python
#coding=utf8
import itchat
import time
import requests
import json
def tulin_robot(text):
url="http://www.tuling123.com/openapi/api"
data={
"key":"e4ad535f0eef4674a7b1ccd34643398b",
"info":text,
'userid': 'wechat-robot',
'loc':"武漢"
}
r=requests.post(url,data=data).json()
code=r["code"]
"""100000 文本類
200000 鏈接類
302000 新聞類
308000 菜譜類
313000 兒歌類
314000 詩詞類"""
if code== 302000:
return r["text"],r["list"]
if code== 100000:
return r["text"]
if code==200000:
return r["text"],r["url"]
if code==313000:
return r["text"],r["function"]
if code==314000:
return r["text"],r["function"]
if code==308000:
return r["text"],r["list"]
# 自動回覆
# 封裝好的裝飾器,當接收到的消息是Text,即文字消息
@itchat.msg_register('Text')
def text_reply(msg):
# 當消息不是由自己發出的時候
return u"[主人暫時不在,我是周小祕]{}".format(tulin_robot(msg['Text']))
# 回覆給好友
if __name__ == '__main__':
itchat.auto_login(enableCmdQR=2)
# 獲取自己的UserName
myUserName = itchat.get_friends(update=True)[0]["UserName"]
itchat.run(debug=True)

三.在Linux服務器上運行該腳本

自己花10塊錢在阿里雲或者騰訊雲上買一個Linux服務器,稍微配置一下

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

然後用vim創建一個auto_wechat.py文件,寫入上述代碼。

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

那麼最關鍵的一部分來了,如何讓程序在服務器上24小時運行呢?

我們知道如果僅僅是運行的話,只需

python3 auto_wechat.py

即可。

但是如果終端關閉的話,程序也會終止,那麼就要涉及到linux的一個十分強大的命令:screen。 按照我個人的理解,這個命令就是能夠在linux中創造出多個終端,在已有的窗口內部再創造更多的窗口,結合命令符號$,能夠讓內部終端保持在Linux的後臺運行,而不會因為終端的關閉而關閉。(個人linux才剛剛入門,可能理解不是特別深入,大家可以看看更多的攻略)

所以只需用命令:

screen python3 auto_wechat.py $

即可保持程序一直在服務器後臺運行。

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

掃描二維碼,即可登錄。

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

輸入ctrl+A切出終端,輸入命令

screen ls

即可看見後臺運行的screen進程

python:用itchat打造屬於自己的微信聊天機器人,24小時運行

弄到這裡,就大功告成啦!

原文:https://zhuanlan.zhihu.com/p/39017252

相關推薦

推薦中...