一、安装配置MIrai
安装配置MIrai
在本视频中几个下载地址如下:
https://github.com/mamoe/mirai
https://github.com/project-mirai/mirai-api-http
https://github.com/MrXiaoM/qsign
大家打不开的话,可以用我的百度地址,里面有三个文件。
链接:https://pan.baidu.com/s/1Wi4AcMIwl373Xe8sbbFnJg?pwd=1111
提取码:1111
图片验证码报错:
大家可以看Mirai文档,有的登录出现了要验证,可以看这个链接,详细介绍了怎么填写图片验证码返回值。
本人解决方法:
- 控制台会返回一个滑块地址,我们用浏览器打开。
- 打开开发者工具,移动滑块,完成验证。
- 在
Network
中找到名为cap_union_new_verify
的请求, 在ticket 后那一坨就是要输入回 mirai 的内容 - 回到控制台粘贴就可以了。
注意
- 复制的时候记得删掉引号(
"
, 前后都有一个), 那个不是ticket内容 - 速度要快
- 注意不要漏字符(没复制完, 后面还有很长)
- 可以先开一次试一下手(不输入ticket) 然后重启进行滑块
二、机器人的认证与绑定
到这里,大家登录成功就成功了99%,为什么这么说呢,后面就是写代码了。
视频教学
机器人的认证与绑定
代码
为了方便大家学习,我把视频中的代码也放在了下面,如下:
class bot: def __init__(self,host="localhost",port = 8080,verifyKey="ccbot"): """ :param host: 监听地址 :param port: 监听端口 :param verifyKey: key """ self.VisitHttpPath=http.client.HTTPConnection(host,port) self.verifyKey=verifyKey self.sessionKey = self.bind()
认证和绑定
下面是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("认证成功:"+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":填你机器人QQ号} res = requests.post(url,json=bind) print(res.text)
主程序
if __name__ == '__main__': b = bot()
三、好友信息监听
你完成第二步,就成功了,后面就是收发信息了,大家可以对照文档自行研究。Mirai | mirai (mamoe.net)
视频教学
好友消息监听
这个大家可以跟着我视频一起敲代码。
四、发送好友消息
大家可以直接运行下面的代码,看自己的QQ有没有收到消息。
调用库
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":填你机器人QQ号} res = requests.post(url,json=bind) print(res.text) url = "http://localhost:8080/sendFriendMessage" send_message = { "sessionKey":sessionKey, "target":填你要接受消息的QQ号(须是好友), "messageChain":[ { "type":"Plain", "text":"你好" }, ] } print(send_message) res = requests.post(url,json=send_message) print(res.text)
五、总结
看到这里,相信你们都成功,喜欢的话,给文章点点赞,有疑问的话,可以加群讨论或者评论区留言。
看看效果图吧:
六、补充知识点
到这里,大家的功能基本上都实现了,这里就和搭建QQ机器人就没有多大关系了,可以跳过。
http.client和requests库异同
http.client和requests库都可以用于发送HTTP请求,但它们有一些不同之处。
导入方式:
http.client模块是通过导入http.client来使用的。
requests库是通过导入requests来使用的。
发送请求的方式:
http.client模块提供了低级别的HTTP通信功能,可以创建不同类型的连接(如HTTP、HTTPS等),并使用request()方法发送请求。
requests库提供了更高级别的HTTP请求功能,可以更方便地发送不同类型的请求(如GET、POST等),而无需关注底层的通信细节。
响应处理方式:
http.client模块通过getresponse()方法获取响应,然后可以使用响应对象的方法和属性来获取响应的内容。
requests库返回一个Response对象,可以使用该对象的属性和方法来获取响应的内容。
异步支持:
http.client模块提供了异步支持,但使用起来相对复杂。
requests库本身不支持异步请求,但可以通过异步库(如asyncio)结合使用。
其他功能:
http.client模块提供了更多的低级别控制,例如设置头部、处理重定向等。
requests库提供了更简单和易用的API,例如处理Cookie、Session等。
总之,选择使用哪种方法取决于你的需求和偏好。如果你需要更多的控制和灵活性,可以选择使用http.client模块。如果你更关注易用性和简洁性,可以选择使用requests库。