2020年,手把手教你打造Python QQ機(jī)器人

都已經(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插件

github地址

進(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ù)更新~

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

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

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