Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)

简介: Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)

一、安装配置MIrai

image.png

安装配置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%,为什么这么说呢,后面就是写代码了。

视频教学

image.png

机器人的认证与绑定

代码

为了方便大家学习,我把视频中的代码也放在了下面,如下:

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)

视频教学

image.png

好友消息监听

这个大家可以跟着我视频一起敲代码。

四、发送好友消息

大家可以直接运行下面的代码,看自己的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库。


相关文章
|
7天前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
56 1
linux centos上安装python3.11.x详细完整教程
|
17天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的大学竞赛报名管理系统
基于Python+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
33 3
基于Python+Vue开发的大学竞赛报名管理系统
|
4天前
|
Linux Android开发 iOS开发
开源的Python库,用于开发多点触控应用程序
Kivy是一款开源Python库,专为开发多点触控应用设计,支持Android、iOS、Linux、OS X和Windows等平台。本文将指导你使用Kivy创建“Hello World”应用并打包成Android APK。首先通过`pip install kivy`安装Kivy,然后创建并运行一个简单的Python脚本。接着,安装Buildozer并通过`buildozer init`生成配置文件,修改相关设置后,运行`buildozer -v android debug`命令打包应用。完成构建后,你将在`./bin/`目录下找到类似`your-app-debug.apk`的文件。
12 2
|
6天前
|
Python Windows
python入门保姆级教程 | 13
python入门保姆级教程 | 13
|
8天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
29 3
|
9天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
35 3
|
12天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
10天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
41 1
|
15天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
16天前
|
IDE 数据挖掘 开发工具
python开发
python开发
13 3