我最近在Github上看到一個有趣的庫qqbot,感覺很有意思稀火,就像用圖靈機器人結(jié)合起來做一個群聊機器人。用了一晚上的時間就實現(xiàn)了赌朋,還是很簡單的凰狞。
準(zhǔn)備
首先我們要安裝qqbot這個庫用pip安裝就行了,只要輸入pip install qqbot
,就可以了沛慢,同時我們圖靈機器人部分需要用requests庫來調(diào)用圖靈機器人的API赡若,同樣我們輸入pip install requests
來安裝。然后我們創(chuàng)建兩個文件sample.py Turingrbot.py
圖靈機器人
我們這里不是自己訓(xùn)練一個能聊天的機器人团甲,那就太費勁了逾冬,重復(fù)造輪子是很蠢的事情,這里我們用別人做好的機器人來用躺苦,我們這里選用的是圖靈機器人粉渠,首先我們在圖靈機器人的官網(wǎng)里注冊一個賬號分冈,然后在創(chuàng)建一個機器人,然后機器人頁面霸株,要里面有個apikey很重要雕沉,這是我們調(diào)用我們的機器人的唯一憑證,后面有很重要的重要去件。一切都準(zhǔn)備好了坡椒,接下來我們就開始寫我們的代碼了。
Turingbot.py
首先我們先引入我們需要的庫:
import json
import requests
import re
然后構(gòu)造一個函數(shù)def answer(ask):
然后我們寫入我們圖靈機器人的apiurl以及你的請求的json
url = 'http://openapi.tuling123.com/openapi/api/v2'
body = {
"reqType":0,
"perception": {
"inputText": {
"text": ""
}
},
"userInfo": {
"apiKey": "#你的apikey",
"userId": "你的userid"
}
}
body['perception']['inputText']['text'] = ask
data = json.dumps(body)
記得要把aptKey和userid改成你自己的尤溜,接下來我們要寫一個post請求把json傳輸過去倔叼,來獲得圖靈機器人返回的值。
response = requests.post(url, data = data)
retext = response.text
這里傳回來的值不是json所以我們要用正則匹配宫莱,來找到我們的需要得到的回復(fù)丈攒,并處理返回結(jié)果
answ = re.compile('{.*?results":.*?values.*?text":"(.*?)"}', re.S)
text = re.findall(answ, retext)
text = str(text[0])
return text
這樣我們的圖靈機器人這部分就寫好了,接下來我們要寫qqbot插件部分
完整代碼為:
import json
import requests
import re
def answer(ask):
url = 'http://openapi.tuling123.com/openapi/api/v2'
body = {
"reqType":0,
"perception": {
"inputText": {
"text": ""
}
},
"userInfo": {
"apiKey": "#你的apikey",
"userId": "#你的uerid"
}
}
body['perception']['inputText']['text'] = ask
data = json.dumps(body)
response = requests.post(url, data = data)
retext = response.text
answ = re.compile('{.*?results":.*?values.*?text":"(.*?)"}', re.S)
text = re.findall(answ, retext)
text = str(text[0])
return text
sample.py
首先我們要引入我們上面寫的文件import TuringRobot as tr
授霸,然后再定義一個自己的消息響應(yīng)函數(shù)巡验,這個注冊的響應(yīng)函數(shù)的函數(shù)名必須為 “onQQMessage” ,函數(shù)參數(shù)也必須和下面的一致:
def onQQMessage(bot, contact, member, content):
answer = tr.answer(content)
if '@ME' in content:
bot.SendTo(contact, answer)
這里的意思就是如果機器人得到的對話中有@他的情況碘耳,就會觸發(fā)響應(yīng)显设,來調(diào)用我們寫的圖靈機器人的方法。
部署機器人
我們把我們寫好的兩個文件放到我們qqbot的插件文件夾內(nèi)(放到 ~/.qqbot-tmp/plugins/ 目錄下( ~ 代表用戶主目錄辛辨, win7 下為 C:\Users\xxx )捕捂,或系統(tǒng)中可以 import 到的目錄下(如 python 的安裝目錄下的 Lib/site-packages 目錄)。)然后在終端(或cmd)中輸入qqbot來打開qq機器人斗搞,程序運行后會自動跳出二維碼來讓我們掃描登錄指攒,登錄完畢后,再打開一個終端輸入qq plug sample
來加載我們寫的插件僻焚,這樣你在群里@機器人并說話幽七,他就會自動通過圖靈機器人來回復(fù)你了。