用qqbot實現(xiàn)圖靈機器人

我最近在Github上看到一個有趣的庫qqbot,感覺很有意思,就像用圖靈機器人結(jié)合起來做一個群聊機器人。用了一晚上的時間就實現(xiàn)了,還是很簡單的。

準備

首先我們要安裝qqbot這個庫用pip安裝就行了,只要輸入pip install qqbot,就可以了,同時我們圖靈機器人部分需要用requests庫來調(diào)用圖靈機器人的API,同樣我們輸入pip install requests來安裝。然后我們創(chuàng)建兩個文件sample.py Turingrbot.py

圖靈機器人

我們這里不是自己訓練一個能聊天的機器人,那就太費勁了,重復造輪子是很蠢的事情,這里我們用別人做好的機器人來用,我們這里選用的是圖靈機器人,首先我們在圖靈機器人的官網(wǎng)里注冊一個賬號,然后在創(chuàng)建一個機器人,然后機器人頁面,要里面有個apikey很重要,這是我們調(diào)用我們的機器人的唯一憑證,后面有很重要的重要。一切都準備好了,接下來我們就開始寫我們的代碼了。

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所以我們要用正則匹配,來找到我們的需要得到的回復,并處理返回結(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來加載我們寫的插件,這樣你在群里@機器人并說話,他就會自動通過圖靈機器人來回復你了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,353評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 車上聽著一首歌《往后余生》 旁邊是帶著孩子的媽媽,帶孩子回八步,抱著孩子睡著了。 朋友圈里,一位搭乘順風車的女乘客...
    十字街向西閱讀 445評論 4 2
  • 孤獨,前行。 迷茫,無所畏懼。 樂觀,永不放棄。 走著,分離。 相聚,永別。 追求,虛無。 虛無,擁有。 擁有,失...
    Try星星之火閱讀 128評論 0 1
  • 原來,被噩夢嚇醒了真的會冒冷汗,然后,望著漆黑的天花板發(fā)呆,腦子里一幀一幀地回放噩夢的場景,再度陷入恐懼中,自虐循...
    長發(fā)長短發(fā)短君閱讀 470評論 14 7

友情鏈接更多精彩內(nèi)容