都已經(jīng)2020年了,smart qq早就于2019年光榮下線,伴隨著他的離開,qqbot也不再維護(hù),以往的基于smart qq和qqbot的QQ機(jī)器人的設(shè)計(jì)模式也已經(jīng)不復(fù)存在,今天,筆者將帶來一種全新的Python QQ機(jī)器人設(shè)計(jì)方式,基于python nonebot庫和cool Q打造QQ機(jī)器人。
組件介紹
cool q為何物?
酷Q官網(wǎng)
酷Q是一個(gè)“簡(jiǎn)潔,輕盈,強(qiáng)大,免費(fèi)”的qq機(jī)器人應(yīng)用程序,甚至可以在群暉上搭建這樣的一套系統(tǒng),非常實(shí)用。官方將酷Q分為兩種不同的版本,一個(gè)是酷Q Air,另一個(gè)是酷Q Pro。這種命名習(xí)慣與某果十分相似~
對(duì)于兩種不同版本的區(qū)別,官方給出了下圖的解釋
兩種版本在下載時(shí)都是免費(fèi)的,但是實(shí)際使用時(shí)pro版本是需要支付一定的費(fèi)用的,筆者在這里就用Air版本進(jìn)行QQ機(jī)器人的制作
nonebot庫為何物?
nonebot庫是一個(gè)基于酷Q的 Python 異步QQ機(jī)器人框架 ,官方給出了以下三種特性:
1.簡(jiǎn)潔——提供極其簡(jiǎn)潔易懂的 API,使你可以毫無壓力地開始驗(yàn)證你的絕佳創(chuàng)意,只需編寫最少量的代碼,即可實(shí)現(xiàn)豐富的功能。
2.易于擴(kuò)展——精心設(shè)計(jì)的消息處理流程及強(qiáng)大的 API 使得你可以很方便地將最簡(jiǎn)單的原型變?yōu)榫哂写罅繉?shí)用功能的完整聊天機(jī)器人,并持續(xù)保證擴(kuò)展性。
3.高性能——基于時(shí)下流行的 asyncio 模塊,利用 WebSocket 進(jìn)行通信,以獲得極高的性能;同時(shí),支持使用多個(gè)機(jī)器人賬號(hào)來負(fù)載均衡用戶消息,減少業(yè)務(wù)宕機(jī)的可能。
開始準(zhǔn)備
接下來就正式開始搭建!

筆者使用的是酷Q Air小i版,不過既然我們選擇使用Python來進(jìn)行機(jī)器人的開發(fā),所以具體選擇圖靈版還是小i版就顯得不那么重要了。
- 為酷Q安裝HTTP API插件

進(jìn)入GitHub中之后點(diǎn)擊第一項(xiàng)下載即可。下載完成之后,我們需要打開酷Q的文件夾,在\酷Q Air\app目錄下將我們下載的HTTP API插件粘貼進(jìn)去

之后,我們運(yùn)行酷Q應(yīng)用程序CQA.exe,并且輸入qq號(hào)和密碼登錄,之后在任務(wù)欄中找到酷Q的圖標(biāo)并用鼠標(biāo)右鍵點(diǎn)擊,找到【應(yīng)用】-【應(yīng)用管理】并進(jìn)入配置界面。

找到HTTP API插件,并且點(diǎn)擊右下側(cè)的【啟用】按鈕。由于筆者已經(jīng)啟用了,因此按鈕變成了停用。

-
配置酷Q HTTP API插件
完成上述步驟之后,我們?cè)诳酫文件夾中的
\酷Q Air\data\app\io.github.richardchien.coolqhttpapi\config目錄中找到<剛剛登錄的QQ號(hào)>.json文件,并且用記事本或者其他文本編輯器打開編輯。按照?qǐng)D中的標(biāo)注修改配置文件后保存退出。

至此為止,關(guān)于酷Q的準(zhǔn)備已經(jīng)完成。
-
安裝python庫
接下來使用pip安裝nonebot庫
pip install nonebot
安裝完成后,我們的所有工具準(zhǔn)備就已經(jīng)完成。
運(yùn)行Python demo程序
我們創(chuàng)建一個(gè)python文件,并且運(yùn)行官方的demo代碼
import nonebot
if __name__ == "__main__":
nonebot.init()
nonebot.load_builtin_plugins()
nonebot.run(host='127.0.0.1', port=8080)
運(yùn)行程序,如果在控制臺(tái)中出現(xiàn)下面的內(nèi)容,則表明配置成功,python正在監(jiān)聽qq消息

此時(shí)我們便可以測(cè)試運(yùn)行效果,向剛剛我們登錄酷Q的qq號(hào)發(fā)送一條消息
/echo <content>

這樣我們就可以看到機(jī)器人重復(fù)我們和它說的話了。
異常處理
有時(shí)候,我們本地的127.0.0.1 8080端口可能會(huì)被占用導(dǎo)致運(yùn)行python程序的時(shí)候產(chǎn)生如下錯(cuò)誤:
OSError [WinError 10013]以一種訪問權(quán)限不允許的方式做了一個(gè)訪問套接字的嘗試
這時(shí)候我們使用管理員模式運(yùn)行一個(gè)cmd窗口,輸入
netstat -ano|findstr 8080

這時(shí)候可以看到有一個(gè)進(jìn)程號(hào)為 18292 的進(jìn)程占用了我們的8080端口,我們需要將這個(gè)進(jìn)程kill掉,在cmd窗口中繼續(xù)輸入
taskkill /pid <進(jìn)程號(hào)> /F
如本例子中我們需要kill 18292進(jìn)程,所以輸入taskkill /pid 18292 /F
這樣重新運(yùn)行python程序就不會(huì)出現(xiàn)剛才的異常了。
結(jié)束語
以上就是打造qq機(jī)器人的基本步驟,本教程持續(xù)更新~
