简介

本文是使用最新版使用NoneBot2(2.4版本) + 官方QQ 频道/群聊 机器人(需要在QQ 开放平台 申请创建机器人)。

欢迎来交流(QQ群号:710101225)

涉及文档:

NoneBot开发文档、QQ官方注册文档

准备步骤(基于你已经安装了 python)

NoneBot 仅支持 Python 3.9 以上版本(具体版本请参考官网),目前我使用的是 3.12版本 

  • 一、安装 NoneBot  与创建项目

### 参考快速上手 | NoneBot

使用powershell 安装并创建Nonebot项目

在你想创建项目的地方 右键菜单 点击在终端打开 打开powershell

 

 安装 pipx

python -m pip install --user pipx
python -m pipx ensurepath

 安装脚手架

pipx install nb-cli

安装完成后 输入 nb 出现以下界面 为安装成功

使用脚手架来创建一个项目:

输入 nb

选择创建一个 NoneBot 项目

模板选择bootstrap(初学者或用户)

输入你要创建的项目名称

选择适配器

选择 QQ(QQ官方机器人)

选择适配器

HTTPX、websocket

立刻安装依赖、创建虚拟环境都填 y

等待安装完成

选择内置插件 选择echo

根据他的提示启动机器人

此时发现已经启动完成了,安装和创建项目就完成了

这里不过多赘述,请参考官方注册流程

​注册完成后

进入管理端

资料提交成功后,即会生成appid,点击对应的应用即可跳转管理端。

进入管理端

 进入管理端 点击沙箱配置

按需配置(需要自己提前创建 测试用QQ群和测试用频道 你必须是该群的群主或者管理员)

然后就可以在对应QQ群或频道中选择到该机器人(请在手机QQ中添加 PC版不支持选择)

我是配置了QQ群和频道 管理员选择自己的qq号

开发设置

这里可以看到 机器人的相关参数设置 

AppSecret 首次需要手动生成 请务必保存好,因为生成之后只能查看一次

IP白名单设定 这个就是你本机IP ,建议使用 本机IP去查询 

把这个IP放到你的IP白名单(注:IP并不是一成不变,所以你的QQ机器人服务启动后@无响应的话 并且报 ip地址错误 那就是IP地址变化了 需要重新设置 IP地址白名单)

 


  • 三、修改NoneBot配置

  1. 使用IDE工具打开项目 我这里是使用 Pycharm (看个人喜好)

2. 修改  .env.prod 文件 具体参考 nonebot-adapter-qq · PyPI

然后自行替换QQ 的id、token、secret   具体参考本文档 的 QQ机器人的开发设置 

use_websocket : 请务必设置成 true ,因为nonebot是 websocket 心跳连接

3.在项目文件夹中创建一个 bot.py 文件,并写入以下内容:

import nonebot
from nonebot.adapters.qq import Adapter as QQAdapter

nonebot.init()

driver = nonebot.get_driver()
driver.register_adapter(QQAdapter)

nonebot.load_builtin_plugins('echo', 'single_session')

nonebot.load_from_toml("pyproject.toml")



if __name__ == "__main__":
    nonebot.run()

4.运行机器人

点击运行 会发现报错 跑不起来

这是因为httpx 的最新版本需要通过 transport 参数传递代理设置。因此,当前报错的原因是 httpx.AsyncClient 不再支持直接通过 proxies 参数传递代理。所以我们需要把这个参数给注释掉 

找到 左边 .venv依赖下的 Lib

Lib下的site-packages

 点击打开 找到 nonebot

 找到nonebot 包下的 drivers

drivers包下的 httpx.py 打开

 

 ctr+f 搜索  proxies 并把这个参数注释掉

 这时候在启动,会发现可以启动了 并且 控制台打印出 已经连接上 QQ机器人 

 

  • 四、测试连通

打开QQ @机器人  使用内置测试插件 echo

可以看到机器人已经连通并且已经回复消息

五、简单示例(示例来源于NoneBot官方示例 事件处理 | NoneBot

创建自己的插件位置 建立 weather.py 文件

 编写 weather 插件

from nonebot.rule import to_me
from nonebot.plugin import on_command

weather = on_command("天气", rule=to_me(), aliases={"weather", "查天气"}, priority=10, block=True)

@weather.handle()
async def handle_function():
    # await weather.send("天气是...")
    await weather.finish("天气是...")

配置插件位置(插件路径配置参考)

打开  pyproject.toml 配置文件在这写上自己的 插件文件夹路径

然后 重启机器人 

输入 插件编写的关键词

现在简单的搭建机器人及其简单的用法到这就结束啦 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐