自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何用Python開發(fā)QQ機器人

開發(fā) 后端 機器人
雖然該文最終是達(dá)到以python開發(fā)mirai機器人的目的,但起步教程,尤其是環(huán)境配置上仍然有大量的相同操作,對其他編程語言仍有借鑒之處。

 前言

  •  雖然該文最終是達(dá)到以python開發(fā)mirai機器人的目的,但起步教程,尤其是環(huán)境配置上仍然有大量的相同操作,對其他編程語言仍有借鑒之處
  •  假設(shè)你已經(jīng)安裝好了 Java、Python等運行必須的環(huán)境

mirai生態(tài)

  • mirai官方生態(tài)文檔[1]
  •  要使用mirai開發(fā)QQ機器人,首先要對其生態(tài)有一定的了解,因為它太復(fù)雜了,坑特別多,所以多了解一點,遇到問題之后解決起來也會更快
  •  mirai生態(tài)匯總圖

  •  簡單來說,mirai生態(tài)的核心是Mirai框架,其中包含了mirai-core及mirai-core-api兩部分。
  •  其中,前者負(fù)責(zé)協(xié)議相關(guān)的內(nèi)容,而后者負(fù)責(zé)對外提供操作前者的接口。因此與程序員直接打交道的是mirai-core-api,而mirai-core,對我們是不可見的。
  •  使用mirai-core-api就已經(jīng)可以開發(fā)QQ機器人了,但對萌新來說難度還是太大,于是mirai官方開發(fā)組編寫了一個QQ機器人程序,mirai-console,它在 mirai 框架提供的基礎(chǔ)功能的基礎(chǔ)上進(jìn)行了封裝并進(jìn)一步提供了更方便的開放接口。
  •  有了mirai-console,我們就不用直接去開發(fā)mirai的QQ機器人了,而是去開發(fā)mirai-console的插件,如下面的模式: 

  •  尷尬的是,開發(fā)mirai-console的插件,又需要使用java或者kotlin。如果你跟我一樣,對他們都不熟悉,那么官方的另一個插件mirai-api-http,則可以解決這個問題。
  •  于是借助mirai-api-http開發(fā)QQ機器人,就成了下面這種模式:  

  •  可以看到,當(dāng)我們使用了mirai-api-http后,我們就有了更多的開發(fā)語言選擇。此處我選擇python。

起步

使用 mirai-console-loader 啟動 mirai-console

  •  根據(jù)上面的介紹,要開發(fā)一個mirai的QQ機器人,我們首先需要將mirai-console給運行起來,而要做到這一步,可難。例如你需要準(zhǔn)備mirai-core,mirai-console 和 mirai-console-terminal,然后還需要通過一大串指令來啟動它。
  •  而官方顯然考慮到這一點,為了挽回被這一高難度操作勸退的萌新,官方又推出了mirai-console-loader(簡稱mcl) —— mirai-console 的官方一鍵啟動器。因此你僅需要下載它即可(第一步說的都不用管0.0)。github倉庫位置:mirai-console-loader[2]
  • 下載完成mcl之后,解壓、打開cmd、切換到mcl所在目錄、運行mcl。如下圖:    

  •  不出意外的話,mirai-console就成功啟動了,如下圖:    

  •  然而,咱從官方下載的項目,運行時卻出錯了0.0 ( 如果你沒有出錯,忽略此步驟 )。原因是配置文件出錯 (太倒霉了 - -)。修改方式如圖:    

  •  然后再重新運行一下,mcl,不出意料的話,能成功運行。
  •  第一個大坎就邁過了…接下來是另一個大坎

使用 mirai-login-solver-selenium 處理滑塊驗證輔助登錄

  •  在成功啟動的mcl窗口,運行命令登錄qq:login 賬號 密碼
  •  應(yīng)該是會出錯的,因為mirai-console在登錄時,不能處理滑塊驗證:

 

  •  于是我們需要mirai的另一個項目 mirai-login-solver-selenium[3] 來輔助登錄
  •  mirai-login-solver-selenium安裝步驟 (需要先安裝 Chrome 瀏覽器)
  •  先結(jié)束掉之前運行的 mirai-console, 然后在命令行運行如下命令,添加該包 
  1. mcl --update-package net.mamoe:mirai-login-solver-selenium --channel nightly --type plugin 
  • 然后再重新運行mcl,這樣mcl就會去嘗試下載mirai-login-solver-selenium。
  •  然而,我這一步也出現(xiàn)問題了(如果你沒有問題,也請?zhí)^)。因為它用到了selenium,所以就要用chromedriver。但是chromedriver總是下載失敗,所以這一步需要手動下載chromedriver,然后替換到對應(yīng)目錄。步驟如下:

         1.  查看cmd窗口,找到mcl正在下載的chromedriver是什么版本        

         2.  然后去chromedriver的另一個鏡像源下載,推薦:chromedriver[4]

         3.  找到一個版本號相近的即可,例如我就下載 86.0.4240.22    

         4.   將下載好的文件解壓,再重命名成chromedriver-86.0.4240.198.exe,也就是剛剛我們在命令行窗口查看的文件名,一定要跟它想下載的文件名一致

         5.  結(jié)束之前運行的mcl命令行程序,然后將準(zhǔn)備好的chromedriver-86.0.4240.198.exe, 替換到以下目錄

        

         6.  重新運行mcl程序,如果一切順利,就可以繼續(xù)之前的步驟,輸入命令:login 賬號 密碼 嘗試登錄。接下來會彈出一個瀏覽器窗口,你只需要傻瓜式的完成登錄驗證即可。如果登錄成功,以后的每次登錄,應(yīng)該都是不需要再次驗證的。

  •  又跨過一個坎…接下來就到了另外一個坎

使用 mirai-api-http 增加語言拓展性 (為了能用其他語言來開發(fā))

  •  前面一直在說 mirai-api-http,但是到目前為止,我們都還沒有用上它。前面的工作就做了兩個事情

          1.  使用mcl運行mirai-console

          2.  使用 mirai-login-solver-selenium 輔助通過滑塊驗證碼,完成登錄

  •  那么接下來就開始用mirai-api-http,首先在mirai-api-http項目地址,下載mirai-api-http[5]
  •  然后將下載到的jar包,放在plugin文件夾下,如圖    

  • 然后再重啟mcl,重新進(jìn)行登錄。這樣準(zhǔn)備工作就完成了,但是我出現(xiàn)了一些錯誤,看意思應(yīng)該是簽名驗證的問題,錯誤如下:    

  •  四處咨詢后了解到,是oracle JDK的問題,因此只需要將orcaleJDK 替換成為 open JDK即可,步驟如下:

      1.  下載 open JDK[6],例如我下載如圖所示的版本:

      2.  解壓open JDK, 并放在你認(rèn)為合適的位置,例如我放在如下圖所示的位置:   

      3.  添加 jdk 所在路徑到環(huán)境變量:此電腦 ->右鍵屬性 -> 高級系統(tǒng)設(shè)置 -> 高級 -> 環(huán)境變量, 再按下圖操作  

通過 graia-application-mirai 使用 python 開發(fā) mirai 機器人

  •  前面的操作,直到該步為止,基本對所有使用除java/kotlin語言的程序員,都是通用的。而后面的操作,僅寫給使用python的程序員
  •  graia-application-mirai官方文檔[7]
  •  首先對mirai-api-http進(jìn)行配置,如圖:

  •  以下是參考,自己看著配就行 
  1. # file: mcl-1.0.3/config/net.mamoe.mirai.api.http/setting.yml  
  2. authKey: graia-mirai-api-http-authkey # 你可以自己設(shè)定, 這里作為示范  
  3. # 可選,緩存大小,默認(rèn)4096.緩存過小會導(dǎo)致引用回復(fù)與撤回消息失敗  
  4. cacheSize: 4096  
  5. enableWebsocket: true # 是否啟用 websocket 方式, 若使用 websocket 方式交互會得到更好的性能  
  6. host: '0.0.0.0' # httpapi 服務(wù)監(jiān)聽的地址, 錯誤的設(shè)置會造成 Graia Application 無法與其交互  
  7. port: 8080 # httpapi 服務(wù)監(jiān)聽的端口, 錯誤的設(shè)置會造成 Graia Application 無法與其交互 
  •  重啟mcl, 更新配置
  •  接著,安裝 python 操作 mirai-api-http 接口的模塊:graia-application-mirai

pip install graia-application-mirai

  •  將以下代碼復(fù)制到bot.py,按注釋提示,再結(jié)合剛剛對mirai-api-http的配置,稍作修改。然后運行 
  1. from graia.broadcast import Broadcast  
  2. from graia.application import GraiaMiraiApplication, Session  
  3. from graia.application.message.chain import MessageChain  
  4. import asyncio  
  5. from graia.application.message.elements.internal import Plain  
  6. from graia.application.friend import Friend  
  7. loop = asyncio.get_event_loop()  
  8. bcc = Broadcast(looploop=loop)  
  9. app = GraiaMiraiApplication 
  10.     broadcast=bcc 
  11.     connect_info=Session 
  12.         host="http://localhost:8080", # 填入 httpapi 服務(wù)運行的地址  
  13.         authKey="graia-mirai-api-http-authkey", # 填入 authKey 
  14.         account=5234120587, # 你的機器人的 qq 號  
  15.         websocket=True # Graia 已經(jīng)可以根據(jù)所配置的消息接收的方式來保證消息接收部分的正常運作.  
  16.     )  
  17.  
  18. @bcc.receiver("FriendMessage")  
  19. async def friend_message_listener(app: GraiaMiraiApplication, friend: Friend):  
  20.     await app.sendFriendMessage(friend, MessageChain.create([  
  21.         Plain("Hello, World!")  
  22.     ]))   
  23. app.launch_blocking() 
  •  然后向你的QQ機器人,隨便發(fā)送一條消息,如果它回復(fù)你Hello, World!,則表示運行成功
  •  成功所示如下:    

結(jié)語

上面的全部操作,不過是使用mirai進(jìn)行開發(fā)QQ機器人的起步教程而已,需要了解更多,還是去閱讀官方文檔,以學(xué)習(xí)更多的api。 

責(zé)任編輯:龐桂玉 來源: 馬哥Linux運維
相關(guān)推薦

2018-06-08 16:48:09

PythonQQ機器人

2021-07-22 10:17:55

加密機器人加密貨幣機器人

2020-10-15 15:42:00

人工智能

2016-08-04 10:04:49

PythonFlaskFacebook Me

2017-05-09 15:39:33

ensorFlow機器人機器學(xué)習(xí)

2020-12-31 06:55:37

機器人自然語言人工智能

2021-08-19 15:44:20

機器人人工智能機器學(xué)習(xí)

2015-07-28 09:36:11

機器人

2021-08-05 10:58:58

Facebook開源Droidlet

2017-03-28 12:21:21

機器人定義

2024-08-06 08:40:32

2015-12-10 21:49:32

IM機器人

2012-03-08 09:42:16

開源軟件Linux

2023-04-13 21:59:44

ChatGPT聊天機器人

2020-10-29 17:37:14

人工智能

2022-03-24 20:50:17

機器人人工智能

2024-09-26 10:05:57

2020-04-14 15:33:37

Python 釘釘機器人

2021-04-21 09:16:04

Python開發(fā)釘釘群機器人
點贊
收藏

51CTO技術(shù)棧公眾號