超详细教程:用Python制作QQ机器人!

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取!】

QQ机器人是一种自动化工具,可以用于群管理、自动回复、消息推送等功能。本文将详细介绍如何使用Python制作一个简单的QQ机器人。我们将使用NoneBot2框架和go-cqhttp工具来实现这一功能。

1. 环境准备
在开始之前,我们需要准备以下工具和库:

Python 3.7+

NoneBot2

go-cqhttp

1.1 安装Python
确保你已经安装了Python 3.7或更高版本。你可以通过以下命令检查Python版本:

python --version

如果未安装Python,请前往Python官网下载并安装。

1.2 安装NoneBot2
NoneBot2是一个基于Python的异步QQ机器人框架。你可以使用pip安装NoneBot2:

pip install nonebot2

1.3 下载go-cqhttp
go-cqhttp是一个用于与QQ服务器通信的工具。你可以从go-cqhttp的GitHub仓库下载适合你操作系统的版本。

2. 配置go-cqhttp

2.1 解压并运行go-cqhttp
下载并解压go-cqhttp后,进入解压目录,运行以下命令:

./go-cqhttp

首次运行时,程序会生成一个config.yml配置文件。

2.2 配置config.yml
打开config.yml文件,找到以下部分并进行配置:

account:
  uin: 你的QQ号
  password: '你的QQ密码'

message:
  post-format: array

servers:
  - http:
      host: 127.0.0.1
      port: 5700
      secret: ''
  - ws:
      host: 127.0.0.1
      port: 6700
      secret: ''

uin:填写你的QQ号。

password:填写你的QQ密码。

host和port:保持默认即可。

2.3 登录QQ
保存配置文件后,再次运行go-cqhttp:

./go-cqhttp

程序会提示你进行扫码登录或短信验证。登录成功后,go-cqhttp会开始监听消息。

3. 创建NoneBot2项目

3.1 初始化项目
使用以下命令创建一个新的NoneBot2项目:

nb create

按照提示输入项目名称和路径。项目创建完成后,进入项目目录:

cd 你的项目名称

3.2 配置NoneBot2
在项目目录中,找到pyproject.toml文件,添加以下配置:

[tool.nonebot]
plugins = []
adapters = ["nonebot.adapters.cqhttp"]

[tool.nonebot.adapter.cqhttp]
ws_url = "ws://127.0.0.1:6700"

3.3 编写插件
在项目目录中创建一个新的插件文件,例如hello.py:

from nonebot import on_command
from nonebot.adapters.cqhttp import Bot, Event

hello = on_command("hello")

@hello.handle()
async def handle_hello(bot: Bot, event: Event):
    await hello.finish("你好,我是QQ机器人!")

3.4 运行NoneBot2
在项目目录中运行以下命令启动NoneBot2:

nb run

4. 测试机器人

4.1 发送消息
在QQ中向机器人发送消息:

/hello

如果一切正常,机器人会回复:

你好,我是QQ机器人!

4.2 调试
如果机器人没有响应,请检查go-cqhttp和NoneBot2的日志,确保两者都已正确连接。

5. 扩展功能

5.1 添加更多命令
你可以通过编写更多插件来扩展机器人的功能。例如,添加一个天气查询命令:

from nonebot import on_command
from nonebot.adapters.cqhttp import Bot, Event
import requests

weather = on_command("weather")

@weather.handle()
async def handle_weather(bot: Bot, event: Event):
    city = event.get_plaintext().strip()
    if not city:
        await weather.finish("请输入城市名称")
    
    url = f"http://wthrcdn.etouch.cn/weather_mini?city={city}"
    response = requests.get(url)
    data = response.json()
    
    if data["status"] == 1000:
        weather_info = data["data"]["forecast"][0]
        result = f"{city}的天气:{weather_info['type']},温度:{weather_info['low']} ~ {weather_info['high']}"
        await weather.finish(result)
    else:
        await weather.finish("无法获取天气信息")

5.2 部署到服务器
如果你希望机器人24小时运行,可以将项目部署到云服务器上。推荐使用supervisor来管理进程。

6. 结语

通过本教程,你已经学会了如何使用Python和NoneBot2框架制作一个简单的QQ机器人。你可以根据需要扩展机器人的功能,例如添加定时任务、群管理功能等。希望本文对你有所帮助,祝你在开发QQ机器人的过程中取得成功!

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里领取!】
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

QQ机器⼈制作教程超详细 ⽬录 完整项⽬包括框架、代码和详细使⽤说明可以去链接下载(下载完只需要按照使⽤说明修改⼏处地⽅即可搭建成功!): 最新功能请看第⼆篇⽂章: 前期准备 1、机器⼈框架的下载和配置 (1)⾸先需要⼀个qq机器⼈框架,我使⽤的是基于mirai 以及 MiraiGo 开发的(⾥⾯有开发⽂档)。 windows推荐下载这个,linux我没试过⾃⼰去看⽂档哈。 下载后解压得到三个⽂件。 (2)双击exe⽂件,出现如下窗⼝,⼀直点击确定就⾏了(3次): 然后会⽣成⼀个批处理⽂件,双击它(以后也是直接⽤它) 输⼊0后回车,然后关闭,此时已经在原来的⽂件⽬录下⽣成了配置⽂件config.yml。 (3)双击config.yml,输⼊QQ号和密码(建议使⽤⽆登录保护的qq,否则可能出现滑块验证等问题)。 也可以不输⼊账号密码,直接运⾏那个bat⽂件会出现⼆维码扫码登录,这样更加安全。 再转到最后两⾏,把前⾯的#去掉使其⽣效。(很重要!!很重要!!) (4)配置完后直接双击bat⽂件。等待⼀段时间出现如下窗⼝: 这两个端⼝都应该出现(很重要): 更多问题请看。 补充:窗⼝可能会⼀直出现如下警告(这个不需要管,是正常现象): 窗⼝会⼀直显⽰接收到信息,不要关闭。 2、python的配置和安装 电脑没有python环境或者觉得配置太⿇烦可直接购买exe版本,只要有电脑就可以运⾏。 同样⾥⾯都有使⽤说明,配置更加⽅便 要实现⾃动回复功能的机器⼈需要借助⼀种语⾔,我选择的是python。 所以需要电脑配置好python环境和安装集成开发环境pycharm。安装教程可以看我的⽂章—>>> 当然在实现所有功能之前需要安装⼀些第三⽅库,这个不知道的也可以百度。 具体实现 1、发送信息 这包括发送私聊信息和发送群聊信息。下⾯的函数已经写好了,直接调⽤函数传⼊参数就⾏了。 import socket def send_msg(resp_dict): client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ip = '127.0.0.1' client.connect((ip, 5700)) msg_type = resp_dict['msg_type'] # 回复类型(群聊/私聊) number = resp_dict['number'] # 回复账号(群号/好友号) msg = resp_dict['msg'] # 要回复的消息 # 将字符中的特殊字符进⾏url编码 msg = msg.replace(" ", "%20") msg = msg.replace("\n", "%0a") if msg_type == 'group': payload = "GET /send_group_msg?group_id=" + str( number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n" elif msg_type == 'private': payload = "GET /send_private_msg?user_id=" + str( number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n" print("发送" + payload) client.send(payload.encode("utf-8")) client.close() return 0 (1)⽐如发送私聊信息(QQ⽤接收者的): resp_dict={'msg_type':'private','number':QQ号,'msg':'你好'} send_msg(resp_dict) (2)发送群聊信息(群号⾃⼰⽤⼀个): send_msg({'msg_type': 'group', 'number': QQ群号, 'msg': '⼤家好'}) (3)当然不⽌发送⽂本信息,还可以发表情、图⽚、⾳乐等。还可以艾特某⼈。 例如:发表情 send_msg({'msg_type': 'group', 'number': QQ群号, 'msg': '[CQ:shake]'}) 发窗⼝抖动 send_msg({'msg_type': 'group', 'number': QQ群号, 'msg': '[CQ:shake]'}) 2、获取群成员列表 import requests def get_group(id): response = requests.pos
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值