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

在本教程中,我们将使用Python和Mirai来开发一个QQ机器人,本文提供了三个教学视频,包教包会,本文也很贴心贴了代码和相关文件。话不多说,直接开始教学。


目录

一、安装配置MIrai

图片验证码报错:

二、机器人的认证与绑定

视频教学

代码

认证和绑定

主程序

三、好友信息监听

视频教学

四、发送好友消息

调用库

程序

五、总结

六、补充

http.client和requests库异同


一、安装配置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=verifyKeyself.sessionKey = self.bind()

认证和绑定

下面是http.client方法:

def bind(self):auto = json.dumps({"verifyKey":self.verifyKey})VisitHttpPath = self.VisitHttpPathVisitHttpPath.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请求,但它们有一些不同之处。

  1. 导入方式:

    • http.client模块是通过导入http.client来使用的。
    • requests库是通过导入requests来使用的。
  2. 发送请求的方式:

    • http.client模块提供了低级别的HTTP通信功能,可以创建不同类型的连接(如HTTP、HTTPS等),并使用request()方法发送请求。
    • requests库提供了更高级别的HTTP请求功能,可以更方便地发送不同类型的请求(如GET、POST等),而无需关注底层的通信细节。
  3. 响应处理方式:

    • http.client模块通过getresponse()方法获取响应,然后可以使用响应对象的方法和属性来获取响应的内容。
    • requests库返回一个Response对象,可以使用该对象的属性和方法来获取响应的内容。
  4. 异步支持:

    • http.client模块提供了异步支持,但使用起来相对复杂。
    • requests库本身不支持异步请求,但可以通过异步库(如asyncio)结合使用。
  5. 其他功能:

    • http.client模块提供了更多的低级别控制,例如设置头部、处理重定向等。
    • requests库提供了更简单和易用的API,例如处理Cookie、Session等。

总之,选择使用哪种方法取决于你的需求和偏好。如果你需要更多的控制和灵活性,可以选择使用http.client模块。如果你更关注易用性和简洁性,可以选择使用requests库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/123838.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java - lua - redis 完成商品库存的删减

java调用lua脚本完成对商品库存的管理 主页链接 微风轻吟挽歌的主页 如若有帮助请帮忙点赞 //lua脚本 获取到内存不够的商品StringBuilder sb new StringBuilder();//定义一个数组存储可能缺少库存的值sb.append(" local table {} ");//获取值sb.append(" …

2023全国大学生数学建模ABCDE选题建议,思路模型,小白要怎么选?难度怎么样

首先最重要的&#xff0c;难度C<B<A&#xff0c;D、E题推荐选E题 大家可以查看我们的视频讲解&#xff0c;在这里&#xff1a;【2023全国大学生数学建模竞赛选题建议&#xff0c;难度分析&#xff0c;小白应该怎么选】 https://b23.tv/S6O26uc 选题建议视频播放​b23.t…

【Git】01-Git基础

文章目录 Git基础1. 简述1.1 版本管理演变1.2 Git的特点 2. Git安装2.1 安装文档2.1 配置user信息 3. 创建仓库3.1 场景3.2 暂存区和工作区 4. 重命名5. 常用git log版本历史5.1 查看当前分支日志5.2 简洁查看日志5.3 查看最近指定条数的日志 6. 通过图形界面工具查看版本7. 探…

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3稳定性

在当今的互联网时代,稳定性是所有系统和应用程序的关键要素。无论是大型数据中心还是个人电脑,稳定性都是保证正常运行和用户体验的基础。在这个背景下,我们来谈谈 Milvus,一个开源的向量数据库,它在 2.1.0 版本中引入了内存多副本的概念。 Milvus 是一个开源的向量数据库…

Golang专题精进

Golang专题精进 Golang单元测试Golang错误处理Golang正则表达式Golang反射Golang验证码Golang日期时间处理库CarbonGolang发送邮件库emailGolang log日志Golang log日志框架logrusGolang加密和解密应用Golang访问权限控制框架casbinGolang使用swagger生成api接口文档Golang jwt…

抓包工具fiddler的基础知识

目录 简介 1、作用 2、使用场景 3、http报文分析 3.1、请求报文 3.2、响应报文 4、介绍fiddler界面功能 4.1、AutoResponder(自动响应器) 4.2、Composer(设计请求) 4.3、断点 4.4、弱网测试 5、app抓包 简介 fiddler是位于客户端和服务端之间的http代理 1、作用 监控浏…

Python实现猎人猎物优化算法(HPO)优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

stm32f4_奇怪的bug_串口数据错乱,一个串口收到另一个串口的数据

1、开发环境简介 芯片型号&#xff1a;stm32f407igt6 官方库函数&#xff1a;HAL库 2、bug现象描述和原因推测 使用了2个串口&#xff0c;一个是串口5-波特率115200&#xff0c;一个是串口4-波特率9600&#xff0c;但是串口4时不时会收到上一次发给串口5的数据。不是同一个串…

Java8特性-Lambda表达式

&#x1f4d5;概述 在Java 8中引入了Lambda表达式作为一项重要的语言特性&#xff0c;可以堪称是一种语法糖。Lambda表达式使得以函数式编程的方式解决问题变得更加简洁和便捷。 Lambda表达式的语法如下&#xff1a; (parameters) -> expression (参数) -> {代码}其中&…

算法笔记:堆

【如无特别说明&#xff0c;皆为最小二叉堆】 1 介绍 2 特性 结构性&#xff1a;符合完全二叉树的结构有序性&#xff1a;满足父节点小于子节点&#xff08;最小化堆&#xff09;或父节点大于子节点&#xff08;最大化堆&#xff09; 3 二叉堆的存储 顺序存储 二叉堆的有序…

c高级 day2

1.写一个1.sh脚本&#xff0c;将以下内容放到脚本中&#xff1a; 在家目录下创建目录文件&#xff0c;dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中&#xff0c; 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.…

TypeScript断言

什么是断言&#xff1f; 一个编译时语法&#xff0c;用于告诉编译器用户比编译器更加确定变量的类型&#xff0c;进而解除编译错误&#xff0c;类型断言有点类似于其他语言的类型转换&#xff0c;但它没有运行时的影响&#xff0c;只是在编译阶段起作用。所以&#xff0c;即使通…

028:vue上传解析excel文件,列表中输出内容

第028个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

机器学习笔记之最优化理论与方法(五)凸优化问题(上)

机器学习笔记之最优化理论与方法——凸优化问题[上] 引言凸优化问题的基本定义凸优化定义&#xff1a;示例 凸优化与非凸优化问题的区分局部最优解即全局最优解凸优化问题的最优性条件几种特殊凸问题的最优性条件无约束凸优化等式约束凸优化非负约束凸优化 引言 本节将介绍凸优…

windows打包uniapp应用p12证书和证书profile文件的制作方法

参考文章1&#xff1a; uniapp打包ios app所需的证书的制作流程-腾讯云开发者社区-腾讯云使用uniapp进行开发&#xff0c;既可以打包小程序&#xff0c;也可以打包app&#xff0c;假如需要打包app&#xff0c;需要p12格式的证书和一个证书profile文件&#xff0c;这个在uniapp…

php - fpm 请求达到max_children最大值后,新进入的请求工作流程

前言 偶然之间想了解下&#xff0c;php-fpm 请求达到max_children最大值后&#xff0c;新进入的请求怎么办&#xff1f;是抛出502还是等待前面的请求完成后&#xff0c;再将请求交给处理完毕的进程处理呢。 准备工作 运行环境&#xff1a;LNMP php 版本&#xff1a;php8.1 …

Elasticsearch:自动使用服务器时间设置日期字段并更新时区

在大多数情况下&#xff0c;你的数据包含一个以 create_date 命名的字段。 即使没有日期字段&#xff0c;处理各种格式和时区的日期对数据仓库来说也是一个重大挑战。 与此类似&#xff0c;如果要检测变化的数据&#xff0c;则必须准确设置日期字段。 在 Elasticsearch 中还有…

OJ练习第165题——修车的最少时间

修车的最少时间 力扣链接&#xff1a;2594. 修车的最少时间 题目描述 给你一个整数数组 ranks &#xff0c;表示一些机械工的 能力值 。ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n2 分钟内修好 n 辆车。 同时给你一个整数 cars &#xff0c;表示总…

《TCP/IP网络编程》阅读笔记--getsockopt和setsockopt的使用

目录 1--Socket的多种可选项 2--getsocketopt() 3--setsockopt() 4--代码实例 1--Socket的多种可选项 Socket 拥有多种可选项&#xff0c;其可分为 SOL_SOCKET 层&#xff0c;IPPROTO_IP 层和IPPROTO_TCP 层等&#xff0c;一般通过 getsocketopt() 和 setsockopt() 函数进行…

python趣味编程-太空入侵者游戏

在 Python 中使用 Turtle 的简单太空入侵者游戏免费源代码 使用 Turtle 的简单太空入侵者游戏是一个用Python编程语言编码的桌面游戏应用程序。该项目包含克隆实际太空入侵者游戏的多种功能。该项目可以使正在学习计算机相关课程的学生受益。该应用程序易于学习,可以帮助您发现…