【Python简单QQ机器人】使用nonebot2与go-cqhttp构建

目录

一、前言

nonebot2-2.0.0b4 QQ机器人详细教程

二、准备

1.Python

2.Pycharm

3.nonebot2

4.go-cqhttp

三、配置

1.搭建go-cqhttp

2.创建nonebot2机器人

四、运行

五、nonebot2插件


一、前言

        闲着没事干,忽看到群里面的qq机器人,想要学习一下,用了两天实现了本体的搭建并添加了一些插件。期间遇到问题颇多,遂想总结下来,故本文章并非教程,而更倾向于个人总结,有想要学习的,可以参考这几篇文章,在我学习期间,帮助颇大。

【Re:从零开始的QQ机器人搭建】—— 基于go-cqhttp

nonebot2.0.0a16-qq机器人框架安装及搭建教程

nonebot2-2.0.0b4 QQ机器人详细教程

特别感谢博主:萌新源 的文章对于我学习插件的帮助。

二、准备

需要准备的共有四点:Python、可编辑.py文件的编译器(如Pycharm)、nonebot2、go-cqhttp

1.Python

不多介绍,下载连接:https://www.python.org/

特别注意,如果没有python下载经历,建议配合python安装教程Python教程,以免之后再出现问题。

2.Pycharm

同上,下载地址

安装教程

3.nonebot2

这是我在这一阶段遇到的最棘手的问题,在对其毫无了解的情况下,犯了许多错误。

教程nonebot2环境搭建

请优先按照教程操作

如遇到问题请按照nonebot2 安装与使用进行安装。

4.go-cqhttp

同上,【Re:从零开始的QQ机器人搭建】—— 基于go-cqhttp

此处说一说我安装配置go-cqhttp中遇到的问题与解决方案。

①、下载源,github加载很慢,甚至一直转圈,我尝试了许多方式,但碍于理论知识极端欠缺,都没有好的解决,于是我采取了效率最低的方法——不断刷新直到出现。最终它出现在我手机浏览器中,下载后传到电脑上,解压,解决问题。

②、在解压后目录中,在当前目录新建run.bat文件,右键编辑(此处参考nonebot2-2.0.0b4 QQ机器人详细教程

填入内容,保存退出

%Created by go-cqhttp. DO NOT EDIT ME!%
start cmd /K "go-cqhttp.exe"

双击运行

选择3(反向Websocker通信),回车。

在头几次的尝试中,我还选择了另外几个,结果出了一些问题,于是还是老老实实选择一个吧。

③、编辑在解压,运行run.bat后生成的 config.yml 

此处基本按照上面教程进行即可,但后续需再次对 config.yml 文件进行修改。

特别的:此段代码需进行如下更改,且需注意 9090(将8080改为9090) 这个数值可自取一万左右的数字,记住这个数字。

# 连接服务列表
servers:
  # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- ws:   # 正向 Websocket
  #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器
  # 反向WS设置
  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://127.0.0.1:8080/onebot/v11/ws #ws://your_websocket_universal.server
      # 反向WS API 地址
      api: ws://your_websocket_api.server
      # 反向WS Event 地址
      event: ws://your_websocket_event.server
      # 重连间隔 单位毫秒
      reconnect-interval: 3000
      middlewares:
        <<: *default # 引用默认中间件

三、配置

1.搭建go-cqhttp

1.首先,确定在config.yml 文件中输入了qq账号,密码可以不输入,扫码登录即可。(注:win10命令提示符窗口总会出不显示新文字的问题,此时拖动窗口边框,调整窗口大小即可,文字不是没有,只是没有显示)

2.登录后,这个窗口大概会不断运行,也不断有黄色的警告,大概是连接反向web服务器时出现错误什么的,不用管它。

以上及完成go-cqhttp搭建。

2.创建nonebot2机器人

在含有config.yml 的目录中新建文件夹随意命名,这里我把它命名为“mybot”

接下来进入此文件夹,在此文件夹内打开cmd窗口

注:是在此文件夹内打开cmd窗口!

打开后输入

nb create
#打开cmd窗口可以通过win+r,输入cmd回车后,输入X:(X为盘符)回车,cd 文件夹路径,回车进入
#也可以打开文件夹,在上方路径直接输入cmd回车进入。

回车后出现

Project Name:

随便输入机器人名字即可,回车

随后出现两个选项,↑↓操控,选择有“scr”的一项,回车

随后出现两个选项,按空格,回车(选择echo的一项)

随后出现一系列选项,选择OneBot V11的一项,回车

随后当前文件夹会生成你机器人名字的文件夹,打开,其中有一个 bot.py 的文件,我们一会儿再操作它。

先编辑 .env 文件,编辑为,保存

ENVIRONMENT=prod

编辑 .env.dev 文件,编辑为,保存

HOST=127.0.0.1
PORT=9090     # 端口,上面让你记住的数字
LOG_LEVEL=DEBUG
FASTAPI_RELOAD=true

编辑 .env.prod 文件,编辑为,保存

HOST=127.0.0.1
PORT=9090
SUPERUSER=["12345678"] # 超级用户
NICKNAME=["Name"] # 机器人名字
COMMAND_START=["/"] # 命令符

此时nonebot2配置完成

四、运行

bot.py 所在的文件夹中打开cmd窗口,输入

nb run    #回车

此时出现一堆蓝的绿的黄的字,最后一行有着:“connection open”,说明nonebot2运行正常。

保存nonebot2运行,返回 run.bat 所在文件夹,双击运行 run.bat 

此时之前显示失败的反向服务器显示连接成功。

机器人开始正常工作。

使用其他账号对机器人说

/echo hello!

机器人回复:hello!

说明机器人搭建成功。

五、nonebot2插件

此处我也一知半解,但相关文章较多,实际操作问题不大,以下是一些相关文章

提供了nonebot官网和插件名称从零开始在服务器上搭建QQ机器人——插件(二)

注:使用 nb plugin install 安装插件后会保存到 Python\Lib\site-packages文件夹中,此时复制到src/plugins中即可。

插件例子[QQ机器人]nonebot2 聊天插件

另外,特别感激 [QQ机器人]nonebot2 聊天插件 文章作者萌新源

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要用 Python 写一个基于 go-cqhttp 的 QQ 机器人,你可以使用第三方库,如 CoolQ HTTP API 插件的 Python SDK,它封装了 go-cqhttp 提供的 HTTP API,使用起来更方便。 以下是一个简单的示例: ``` from cqhttp import CQHttp bot = CQHttp(api_root='http://127.0.0.1:5700/') @bot.on_message() def handle_msg(context): # 实现你的机器人逻辑 return {'reply': '你好,我是机器人!'} bot.run() ``` 这段代码中,我们定义了一个 handle_msg 函数来处理消息,并返回一个回复。运行这段代码后,你的机器人就会自动对收到的消息进行回复。 当然,你还可以根据需要添加更多的处理逻辑,例如:处理私聊消息,实现智能问答等。 ### 回答2: 基于go-cqhttp使用Python编写QQ机器人可以通过与go-cqhttp插件的HTTP API进行交互来实现。 首先,将Python的requests库导入项目中,以便发送HTTP请求。 接下来,我们需要处理机器人收到的消息。通过模拟用户发送消息时,go-cqhttp发送的HTTP POST请求,我们可以使用Python的Flask框架来接收和处理这些消息。 在接收消息的路由上,我们可以使用Flask的`@app.route('/message')`来定义一个路由函数。在这个函数中,我们可以提取出消息中的关键信息,例如发送者QQ号码、发送的消息内容等。 接下来,我们可以使用条件语句对接收到的消息进行分类处理。例如,我们可以根据关键字回复不同的内容,或者调用外部API来进行一些其他操作。可以根据情况,编写不同的函数作为消息处理器。 在处理完消息后,我们需要将最终的回复发送给发送者。我们可以通过构造一个回复消息的字典,并将其转化为JSON格式,然后使用requests库发送POST请求到你自己的go-cqhttp插件上的HTTP API。 最后,我们可以利用go-cqhttp插件的事件上报功能,来处理一些其他的事件。例如好友申请、群聊消息等。 总结起来,基于go-cqhttp,用Python写一个QQ机器人可以通过与go-cqhttp插件的HTTP API进行交互,处理接收的消息和事件,并根据需要编写不同的函数作为消息处理器、事件处理器。最后,将回复消息发送给发送者。通过这些步骤,我们可以实现一个简单QQ机器人。 ### 回答3: 基于go-cqhttp,我们可以使用Python来编写一个QQ机器人。首先,我们需要使用Python的 requests 库与go-cqhttp建立通信。 首先,我们需要在go-cqhttp的配置文件中开启HTTP、WS(WebSocket)接口。然后,我们可以使用python的requests库向go-cqhttp发送HTTP请求来完成一些操作,例如发送私聊消息: ```python import requests url = "http://127.0.0.1:5700/send_private_msg" data = { "user_id": 你的QQ号, "message": "Hello, World!" } response = requests.post(url, json=data) ``` 这将向你的QQ号发送私聊消息"Hello, World!"。 然后,我们可以使用Python来监听go-cqhttp发送给QQ机器人的消息,这里我们可以使用WebSocket连接进行实时通信。我们可以使用Python的websocket库来实现WebSocket通信: ```python import websocket def on_message(ws, message): print(message) def on_error(ws, error): print(error) def on_close(ws): print("连接已关闭") def on_open(ws): print("连接已打开") # 创建WebSocket连接对象 ws = websocket.WebSocketApp("ws://127.0.0.1:6700") # 绑定回调函数 ws.on_message = on_message ws.on_error = on_error ws.on_close = on_close ws.on_open = on_open # 开始监听消息 ws.run_forever() ``` 这将打开一个WebSocket连接,接收go-cqhttp发送给QQ机器人的消息,并将其打印出来。 当然,以上只是一个简单的例子,对于一个完整的QQ机器人,我们还可以做很多其他的操作,例如发送群聊消息、处理命令、响应事件等等。这些操作都可以通过向go-cqhttp发送HTTP请求来实现。 综上所述,使用Python编写一个基于go-cqhttpQQ机器人是十分可行的,我们可以利用Python提供的各种库与go-cqhttp进行通信,实现丰富的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值