在本教程中,我們將使用Python和Mirai來(lái)開(kāi)發(fā)一個(gè)QQ機(jī)器人,本文提供了三個(gè)教學(xué)視頻,包教包會(huì),本文也很貼心貼了代碼和相關(guān)文件。話不多說(shuō),直接開(kāi)始教學(xué)。
目錄
一、安裝配置MIrai
圖片驗(yàn)證碼報(bào)錯(cuò):
二、機(jī)器人的認(rèn)證與綁定
視頻教學(xué)
代碼
認(rèn)證和綁定
主程序
三、好友信息監(jiān)聽(tīng)
視頻教學(xué)
四、發(fā)送好友消息
調(diào)用庫(kù)
程序
五、總結(jié)
六、補(bǔ)充
http.client和requests庫(kù)異同
一、安裝配置MIrai
安裝配置MIrai
在本視頻中幾個(gè)下載地址如下:
https://github.com/mamoe/mirai
https://github.com/project-mirai/mirai-api-http
https://github.com/MrXiaoM/qsign
大家打不開(kāi)的話,可以用我的百度地址,里面有三個(gè)文件。
鏈接:https://pan.baidu.com/s/1Wi4AcMIwl373Xe8sbbFnJg?pwd=1111?
提取碼:1111
圖片驗(yàn)證碼報(bào)錯(cuò):
大家可以看Mirai文檔,有的登錄出現(xiàn)了要驗(yàn)證,可以看這個(gè)鏈接,詳細(xì)介紹了怎么填寫圖片驗(yàn)證碼返回值。
本人解決方法:
- 控制臺(tái)會(huì)返回一個(gè)滑塊地址,我們用瀏覽器打開(kāi)。
- 打開(kāi)開(kāi)發(fā)者工具,移動(dòng)滑塊,完成驗(yàn)證。
- 在?
Network
?中找到名為?cap_union_new_verify
?的請(qǐng)求, 在ticket 后那一坨就是要輸入回 mirai 的內(nèi)容 - 回到控制臺(tái)粘貼就可以了。
注意
- 復(fù)制的時(shí)候記得刪掉引號(hào)(
"
, 前后都有一個(gè)), 那個(gè)不是ticket內(nèi)容 - 速度要快
- 注意不要漏字符(沒(méi)復(fù)制完, 后面還有很長(zhǎng))
- 可以先開(kāi)一次試一下手(不輸入ticket) 然后重啟進(jìn)行滑塊
二、機(jī)器人的認(rèn)證與綁定
到這里,大家登錄成功就成功了99%,為什么這么說(shuō)呢,后面就是寫代碼了。
視頻教學(xué)
機(jī)器人的認(rèn)證與綁定
代碼
為了方便大家學(xué)習(xí),我把視頻中的代碼也放在了下面,如下:
class bot:
def __init__(self,host="localhost",port = 8080,verifyKey="ccbot"):
"""
:param host: 監(jiān)聽(tīng)地址
:param port: 監(jiān)聽(tīng)端口
:param verifyKey: key
"""
self.VisitHttpPath=http.client.HTTPConnection(host,port)
self.verifyKey=verifyKey
self.sessionKey = self.bind()
認(rèn)證和綁定
下面是http.client方法:
def bind(self):
auto = json.dumps({"verifyKey":self.verifyKey})
VisitHttpPath = self.VisitHttpPath
VisitHttpPath.request("POST","/verify",auto)
response = VisitHttpPath.getresponse()
session = response.read().decode("utf-8")
print("認(rèn)證成功:"+str(session))
sessionKey = json.loads(session)['session']
bind = json.dumps({"sessionKey":sessionKey,"qq":2368214676})
VisitHttpPath.request("POST",'/bind',bind)
response = VisitHttpPath.getresponse().read().decode("utf-8")
print("綁定成功:" + str(response))
return sessionKey
?大家可以用http.client或者request方法(文末介紹異同)。下面介紹requests方法。
url = "http://localhost:8080/verify"
data = {"verifyKey":"ccbot"}
res = requests.post(url,json=data)
print(res.text)
sessionKey = json.loads(res.text)['session']
url = "http://localhost:8080/bind"
bind = {"sessionKey":sessionKey,"qq":填你機(jī)器人QQ號(hào)}
res = requests.post(url,json=bind)
print(res.text)
主程序
if __name__ == '__main__':
b = bot()
三、好友信息監(jiān)聽(tīng)
你完成第二步,就成功了,后面就是收發(fā)信息了,大家可以對(duì)照文檔自行研究。Mirai | mirai (mamoe.net)
視頻教學(xué)
好友消息監(jiān)聽(tīng)
這個(gè)大家可以跟著我視頻一起敲代碼。
四、發(fā)送好友消息
大家可以直接運(yùn)行下面的代碼,看自己的QQ有沒(méi)有收到消息。
調(diào)用庫(kù)
import requests
import json
程序
url = "http://localhost:8080/verify"
data = {"verifyKey":"ccbot"}
res = requests.post(url,json=data)
print(res.text)
sessionKey = json.loads(res.text)['session']
url = "http://localhost:8080/bind"
bind = {"sessionKey":sessionKey,"qq":填你機(jī)器人QQ號(hào)}
res = requests.post(url,json=bind)
print(res.text)
url = "http://localhost:8080/sendFriendMessage"
send_message = {
"sessionKey":sessionKey,
"target":填你要接受消息的QQ號(hào)(須是好友),
"messageChain":[
{ "type":"Plain", "text":"你好" },
]
}
print(send_message)
res = requests.post(url,json=send_message)
print(res.text)
五、總結(jié)
看到這里,相信你們都成功,喜歡的話,給文章點(diǎn)點(diǎn)贊,有疑問(wèn)的話,可以加群討論或者評(píng)論區(qū)留言。
看看效果圖吧:
六、補(bǔ)充知識(shí)點(diǎn)
到這里,大家的功能基本上都實(shí)現(xiàn)了,這里就和搭建QQ機(jī)器人就沒(méi)有多大關(guān)系了,可以跳過(guò)。
http.client和requests庫(kù)異同
http.client和requests庫(kù)都可以用于發(fā)送HTTP請(qǐng)求,但它們有一些不同之處。
導(dǎo)入方式:
http.client
模塊是通過(guò)導(dǎo)入http.client
來(lái)使用的。requests
庫(kù)是通過(guò)導(dǎo)入requests
來(lái)使用的。發(fā)送請(qǐng)求的方式:
http.client
模塊提供了低級(jí)別的HTTP通信功能,可以創(chuàng)建不同類型的連接(如HTTP、HTTPS等),并使用request()
方法發(fā)送請(qǐng)求。requests
庫(kù)提供了更高級(jí)別的HTTP請(qǐng)求功能,可以更方便地發(fā)送不同類型的請(qǐng)求(如GET、POST等),而無(wú)需關(guān)注底層的通信細(xì)節(jié)。響應(yīng)處理方式:
http.client
模塊通過(guò)getresponse()
方法獲取響應(yīng),然后可以使用響應(yīng)對(duì)象的方法和屬性來(lái)獲取響應(yīng)的內(nèi)容。requests
庫(kù)返回一個(gè)Response對(duì)象,可以使用該對(duì)象的屬性和方法來(lái)獲取響應(yīng)的內(nèi)容。異步支持:
http.client
模塊提供了異步支持,但使用起來(lái)相對(duì)復(fù)雜。requests
庫(kù)本身不支持異步請(qǐng)求,但可以通過(guò)異步庫(kù)(如asyncio)結(jié)合使用。其他功能:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-701710.html
http.client
模塊提供了更多的低級(jí)別控制,例如設(shè)置頭部、處理重定向等。requests
庫(kù)提供了更簡(jiǎn)單和易用的API,例如處理Cookie、Session等。
總之,選擇使用哪種方法取決于你的需求和偏好。如果你需要更多的控制和靈活性,可以選擇使用http.client
模塊。如果你更關(guān)注易用性和簡(jiǎn)潔性,可以選擇使用requests
庫(kù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-701710.html
到了這里,關(guān)于Python基于Mirai開(kāi)發(fā)的QQ機(jī)器人保姆式教程(親測(cè)可用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!