国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何用Python開(kāi)發(fā)QQ機(jī)器人

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

 前言

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

mirai生態(tài)

  • mirai官方生態(tài)文檔[1]
  •  要使用mirai開(kāi)發(fā)QQ機(jī)器人,首先要對(duì)其生態(tài)有一定的了解,因?yàn)樗珡?fù)雜了,坑特別多,所以多了解一點(diǎn),遇到問(wèn)題之后解決起來(lái)也會(huì)更快
  •  mirai生態(tài)匯總圖

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

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

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

起步

使用 mirai-console-loader 啟動(dòng) mirai-console

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

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

  •  然而,咱從官方下載的項(xiàng)目,運(yùn)行時(shí)卻出錯(cuò)了0.0 ( 如果你沒(méi)有出錯(cuò),忽略此步驟 )。原因是配置文件出錯(cuò) (太倒霉了 - -)。修改方式如圖:    

  •  然后再重新運(yùn)行一下,mcl,不出意料的話,能成功運(yùn)行。
  •  第一個(gè)大坎就邁過(guò)了…接下來(lái)是另一個(gè)大坎

使用 mirai-login-solver-selenium 處理滑塊驗(yàn)證輔助登錄

  •  在成功啟動(dòng)的mcl窗口,運(yùn)行命令登錄qq:login 賬號(hào) 密碼
  •  應(yīng)該是會(huì)出錯(cuò)的,因?yàn)閙irai-console在登錄時(shí),不能處理滑塊驗(yàn)證:

 

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

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

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

         3.  找到一個(gè)版本號(hào)相近的即可,例如我就下載 86.0.4240.22    

         4.   將下載好的文件解壓,再重命名成chromedriver-86.0.4240.198.exe,也就是剛剛我們?cè)诿钚写翱诓榭吹奈募欢ㄒ胂螺d的文件名一致

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

        

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

  •  又跨過(guò)一個(gè)坎…接下來(lái)就到了另外一個(gè)坎

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

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

          1.  使用mcl運(yùn)行mirai-console

          2.  使用 mirai-login-solver-selenium 輔助通過(guò)滑塊驗(yàn)證碼,完成登錄

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

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

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

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

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

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

通過(guò) graia-application-mirai 使用 python 開(kāi)發(fā) mirai 機(jī)器人

  •  前面的操作,直到該步為止,基本對(duì)所有使用除java/kotlin語(yǔ)言的程序員,都是通用的。而后面的操作,僅寫(xiě)給使用python的程序員
  •  graia-application-mirai官方文檔[7]
  •  首先對(duì)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.緩存過(guò)小會(huì)導(dǎo)致引用回復(fù)與撤回消息失敗  
  4. cacheSize: 4096  
  5. enableWebsocket: true # 是否啟用 websocket 方式, 若使用 websocket 方式交互會(huì)得到更好的性能  
  6. host: '0.0.0.0' # httpapi 服務(wù)監(jiān)聽(tīng)的地址, 錯(cuò)誤的設(shè)置會(huì)造成 Graia Application 無(wú)法與其交互  
  7. port: 8080 # httpapi 服務(wù)監(jiān)聽(tīng)的端口, 錯(cuò)誤的設(shè)置會(huì)造成 Graia Application 無(wú)法與其交互 
  •  重啟mcl, 更新配置
  •  接著,安裝 python 操作 mirai-api-http 接口的模塊:graia-application-mirai

pip install graia-application-mirai

  •  將以下代碼復(fù)制到bot.py,按注釋提示,再結(jié)合剛剛對(duì)mirai-api-http的配置,稍作修改。然后運(yùn)行 
  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ù)運(yùn)行的地址  
  13.         authKey="graia-mirai-api-http-authkey", # 填入 authKey 
  14.         account=5234120587, # 你的機(jī)器人的 qq 號(hào)  
  15.         websocket=True # Graia 已經(jīng)可以根據(jù)所配置的消息接收的方式來(lái)保證消息接收部分的正常運(yùn)作.  
  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機(jī)器人,隨便發(fā)送一條消息,如果它回復(fù)你Hello, World!,則表示運(yùn)行成功
  •  成功所示如下:    

結(jié)語(yǔ)

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

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

2018-06-08 16:48:09

PythonQQ機(jī)器人

2021-07-22 10:17:55

加密機(jī)器人加密貨幣機(jī)器人

2016-08-04 10:04:49

PythonFlaskFacebook Me

2020-10-15 15:42:00

人工智能

2017-05-09 15:39:33

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

2020-12-31 06:55:37

機(jī)器人自然語(yǔ)言人工智能

2021-08-05 10:58:58

Facebook開(kāi)源Droidlet

2024-08-06 08:40:32

2017-03-28 12:21:21

機(jī)器人定義

2015-07-28 09:36:11

機(jī)器人

2021-08-19 15:44:20

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

2023-04-13 21:59:44

ChatGPT聊天機(jī)器人

2024-09-26 10:05:57

2022-03-24 20:50:17

機(jī)器人人工智能

2020-10-29 17:37:14

人工智能

2015-12-10 21:49:32

IM機(jī)器人

2012-03-08 09:42:16

開(kāi)源軟件Linux

2020-04-14 15:33:37

Python 釘釘機(jī)器人

2021-04-21 09:16:04

Python開(kāi)發(fā)釘釘群機(jī)器人
點(diǎn)贊
收藏

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

茄子视频成人在线观看 | 亚洲成人午夜影院| 国产精品自拍网| 中文字幕亚洲影视| 婷婷综合久久一区二区三区| 成人h动漫精品| 91黄色免费版| 国产成人手机视频| 免费国产自线拍一欧美视频| 欧美福利视频在线| a'aaa级片在线观看| 日韩毛片精品高清免费| 一区二区视频在线观看| 国产精品99在线观看| 欧美成年人视频网站| 中文在线免费| 高跟丝袜欧美一区| 亚洲综合在线网站| 国内精品第一页| 国产在线精品日韩| 欧美精品一二| 欧美大片免费观看| 肉色欧美久久久久久久免费看| 欧美图片一区二区三区| 国精产品999国精产品官网| 丁香啪啪综合成人亚洲小说 | 加勒比久久综合| 日韩中文理论片| 久久香蕉一区| 色婷婷av久久久久久久| 老司机很黄的视频免费| 国产欧美日韩精品在线| 777久久精品一区二区三区无码| 一区二区三区四区在线观看国产日韩| 欧美激情精品久久久久久黑人| 碰碰在线视频| 欧美一区二区在线免费播放| 国产女主播在线写真| 玉米视频成人免费看| 亚洲第一中文av| 久久久美女毛片| 欧美久久久久久久久久久久久| 美腿丝袜一区二区三区| 久久99九九| 在线视频观看日韩| 97人人模人人爽人人少妇| 欧美亚洲在线日韩| 国产精品高潮呻吟久久av无限| 激情视频极品美女日韩| 久久久久久久亚洲精品| 黄色网一区二区| 日本免费一区二区三区视频观看 | 91久久久久久久久久久久久| 日韩欧美黄色| 欧美一区二区三区……| 加勒比色老久久爱综合网| 欧美国产在线电影| 91精品丝袜国产高跟在线| 欧美激情xxxx| 国产精品一区二区三区美女| 久久人人爽人人| 中国av一区| 国产欧美日韩免费看aⅴ视频| 日韩精品2区| 国产精品久久久久久久久久久久冷| 欧美日韩三级| 免费一区二区三区在在线视频| 石原莉奈在线亚洲二区| 亚洲欧美日本国产有色 | 日韩无套无码精品| 国产精品国产三级国产三级人妇 | 日韩三级影院| 在线播放国产精品二区一二区四区| 成人在线免费看黄| 国产视频久久久久| 亚洲精品aaa| 欧美在线视频网站| 91精品天堂福利在线观看| 黄色99视频| 国产一区二区三区免费在线观看| 欧美丰满熟妇bbbbbb百度| 亚洲男同1069视频| 自拍视频在线网| 国产一区二区成人| 日韩激情啪啪| 欧美一区观看| 久久久91精品国产一区二区精品 | 欧美少妇xxx| 2020国产在线| 欧美精品生活片| 日本在线电影一区二区三区| 精品毛片久久久久久| 国产成人精品免费视频网站| 午夜激情福利在线| 欧美天天综合色影久久精品| h片在线观看视频免费| 久久免费在线观看| 亚洲在线观看| 91在线视频观看免费| 在线免费观看一区| 国产精区一区二区| 日韩视频第一页| 亚瑟国产精品| 成人高清在线观看| 岛国精品在线观看| 在线观看av影片| 日韩精品免费观看| 欧美freesex8一10精品| 韩国成人一区| 国产午夜精品久久| 成人免费观看视频大全| 亚州欧美日韩中文视频| 久久99伊人| 欧美承认网站| 日韩美女主播在线视频一区二区三区| 福利片一区二区| 欧美在线视频二区| 一区二区三区在线影院| 欧美日韩成人影院| 国产在线观看一区| 亚洲精品伦理在线| 欧美日韩女优| 精品久久久久久综合日本| 中文av字幕一区| 国产在线xxx| 91久久精品www人人做人人爽| 91在线小视频| 欧美a级在线观看| 不卡一区二区三区视频| 亚洲欧洲制服丝袜| 高清国产一区二区三区四区五区| 精品视频免费观看| 亚洲一区二区高清| 欧美国产中文高清| 日本丰满少妇xxxx| 亚洲国产精久久久久久 | 91社区在线观看| 日本亚洲欧洲色α| 99综合电影在线视频| 蜜臀av在线| 极品尤物一区二区三区| 亚洲成人免费电影| xxxx日韩| 动漫av网站免费观看| 在线观看国产成人av片| 亚洲精品在线二区| 爱久久·www| 成人国内精品久久久久一区| 日韩美女啊v在线免费观看| 电影91久久久| 国产激情片在线观看| 日韩av在线免费看| 日本不卡一区二区| 9999在线视频| 翔田千里亚洲一二三区| 91精品国产色综合久久久蜜香臀| 午夜日韩av| 日本精品专区| 亚洲一区二区三区sesese| 亚洲va天堂va国产va久| 日韩a一区二区| 无人视频在线观看免费| 91久久夜色精品国产网站| 日本精品一级二级| 激情另类综合| 欧美性猛交xxx乱大交3蜜桃| 国产精品我不卡| 7777精品伊人久久久大香线蕉| 99在线精品免费视频九九视| 9191在线| 午夜视频久久久| 日韩精品亚洲视频| 成人午夜在线播放| 国产精品日本一区二区不卡视频 | 人人狠狠综合久久亚洲婷婷| 国产激情99| 国产日本欧美视频| 狠狠色狠狠色综合日日五| 五月天久久久| 最新av在线| 国产一区在线免费| 精品福利视频一区二区三区| 国产黄色精品视频| 日韩精品一区二区三区中文在线 | 精品综合久久久久久97| 久久精品欧美一区二区三区不卡 | 羞羞视频网站在线免费观看| 国产精品免费久久久久久| 欧美性猛交视频| 久久在线精品| 成人国产网站| www 四虎| 成人欧美一区二区| 亚洲风情亚aⅴ在线发布| 99久久99精品久久久久久| 日韩激情毛片| 久做在线视频免费观看| 国产91在线亚洲| 78m国产成人精品视频| 欧美性生交片4|