首页 > 其他分享 >基于Nonebot2搭建QQ机器人(一)环境配置

基于Nonebot2搭建QQ机器人(一)环境配置

时间:2022-09-21 16:47:55浏览次数:122  
标签:QQ Nonebot2 nb nonebot cqhttp install pip 脚手架 搭建

目录

Nonebot2 搭建流程

一、 概述

1、 引言

在前面使用flask+gocqhttp实现一个qq机器人后,大家应该会觉得非常麻烦吧。那么有没有更加方便的方法去实现我的的qq机器人呢?

但是是有的。我们可以使用现成的框架来实现这个qq聊天机器人。那么,现在开始,我们就来开始学习如何使用Nonebot2框架来更简便的搭建一个我们期望中的机器人!

2、 框架简介

NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。

除了起到解析事件的作用,NoneBot 还为插件提供了大量实用的预设操作和权限控制机制。对于命令处理,它更是提供了完善且易用的会话机制和内部调用机制,以分别适应命令的连续交互和插件内部功能复用等需求。

得益于 Python 的 asyncio (opens new window)机制,NoneBot 处理事件的吞吐量有了很大的保障,再配合 WebSocket 通信方式(也是最建议的通信方式),NoneBot 的性能可以达到 HTTP 通信方式的两倍以上,相较于传统同步 I/O 的 HTTP 通信,更是有质的飞跃。

需要注意的是,NoneBot 仅支持 Python 3.7.3 以上版本

特色:

  • NoneBot2 的驱动框架 Driver 以及通信协议 Adapter 均可自定义,并且可以作为插件进行替换/添加!
  • 提供使用简易的脚手架
  • 提供丰富的官方插件
  • 提供可添加/替换的驱动以及协议选项
  • 基于异步 I/O
  • 同时支持 HTTP 和反向 WebSocket 通信方式
  • 支持多个机器人账号负载均衡
  • 提供直观的交互式会话接口
  • 提供可自定义的权限控制机制
  • 多种方式渲染要发送的消息内容,使对话足够自然

好啦,文字我就不在多赘述了,大家想要了解详情,可以到官方文档去了解,接下来开始我们的主题:环境搭建

二、 go-cqhttp配置

详细介绍还是不说了,我们直接来创建一个配置文件,选择反向Websocket通信直接生成配置文件,然后我们还是修改配置文件

第一处,修改用户名和密码

第二处,修改反向代理的链接

然后,go-cqhttp的配置就完成了,就让我们继续来完成Nonebot的配置吧!

三、 Nonebot安装

1、 搭建脚手架

Nonebot有两种安装形式:

  • 搭建脚手架安装
  • 纯净安装

这里我们使用脚手架安装,其更为方便

  • 脚手架安装其已经安装了驱动器和协议配置器等,其更适合新手使用

安装方式

conda create -n nonebot python=3.9  # 创建虚拟环境
conda activate nonebot  # 进入虚拟环境
pip install nb-cli  # 安装脚手架
# 安装一些需要用到的库
pip install pydantic loguru pygtrie
pip install nonebot2 
pip install nonebot-plugin-apscheduler nonebot-adapter-cqhttp

这时候我们就把框架搭建好了

初次使用

# 直接使用 nb 命令
nb
# 或使用 Python 执行 module
python -m nb_cli

2、 使用方式

nb-cli 具有两种使用方式:

  1. 命令行指令

    查看帮助信息:

    $ nb --helpUsage: nb [OPTIONS] COMMAND [ARGS]...
    Options:  -V, --version  Show the version and exit.  --help         Show this message and exit.
    ...
    

    Copy

    查看子命令帮助:

    $ nb plugin --helpUsage: nb plugin [OPTIONS] COMMAND [ARGS]...
      Manage Bot Plugin.
    Options:  --help  Show this message and exit.
    ...
    

    Copy

  2. 交互式选择(支持鼠标)

    交互式选择菜单:

    $ nbWelcome to NoneBot CLI![?] What do you want to do? (Use ↑ and ↓ to choose, Enter to submit)...
    

    Copy

    交互式子命令菜单:

    $ nb plugin[?] What do you want to do? (Use ↑ and ↓ to choose, Enter to submit)...
    

3、 环境配置

创建一个存储代码的目录,在使用脚手架生成代码

mkdir nb_bot  # 创建存储文件的目录
cd nb_bot  
nb create  # 生成项目

然后依次这样选择,当然也可以根据爱好自己选择:

创建完成后,如果使用nb run命令运行没有报错,说明nonebot配置成功

启动方式:

  1. 通过脚手架

    nb run [--file=bot.py] [--app=app]
    
  2. 直接通过python启动

    python bot.py
    

4、 修改配置文件

关于配置项,详细的可以看官方文档:https://v2.nonebot.dev/docs/tutorial/configuration#driver

修改配置文件的话,我们就使用vscode来远程修改

连接后的界面是这样的!

然后,我们将bot.py修改为:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import nonebot
from nonebot.adapters.cqhttp import Bot as CQHTTPBot

nonebot.init()
app = nonebot.get_asgi()

nonebot.load_plugins("src/plugins")
driver = nonebot.get_driver()
driver.register_adapter("cqhttp", CQHTTPBot)

nonebot.load_builtin_plugins()


if __name__ == "__main__":
    nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")
    nonebot.run(app="__mp_main__:app")

修改.env.dev为:

HOST=127.0.0.1
PORT=8890
LOG_LEVEL=DEBUG
FASTAPI_RELOAD=true
LOG_LEVEL=DEBUG

注意,由于版本兼容的问题,最好不要根据官方文档修改配置,就按照这个来,端口就是上面设置的反向代理的端口

修改.env.pord为:

HOST=127.0.0.1
PORT=8890

最后,输入nb run就可以运行了,向qq发送/echo 1,会回复一就说明设置成功

如果运行报错,请输入:

pip install nb-cli==0.5.0
pip install nonebot-adapter-cqhttp==2.0.0a16
pip install nonebot2==2.0.0a16

pip install nb-cli 的版本与cqhttp 的版本不兼容导致的,需要更换版本,换了那个版本就可以了。

标签:QQ,Nonebot2,nb,nonebot,cqhttp,install,pip,脚手架,搭建
From: https://www.cnblogs.com/liuzhongkun/p/16716123.html

相关文章

  • 私服仓库的搭建
    通过linux安装docker安装maven私服1、dockerrun-d-p8081:8081--namenexus-v/root/nexus-data:/var/nexus-data--restart=alwayssonatype/nexus32、curl12......
  • Redis集群搭建
    Redis集群本章是基于CentOS7下的Redis集群教程,包括:单机安装RedisRedis主从Redis分片集群 1.单机安装RedisLinux版安装首先需要安装Redis所需要的依赖:yu......
  • Dubbo的环境搭建
    Dubbo的环境搭建最近在复盘之前做过的项目,想重新整理一下各类技术点,那就先从这个印象最为深刻的Dubbo开始吧什么是DubboDubbo是一款开源的RPC架构,它主要有以下功能......
  • 使用containerlab搭建cilium BGP环境解析
    使用Containerlab+Kind快速部署CiliumBGP环境一文中使用Containerlab和Cilium实现了模拟环境下的CiliumBGP网络。它使用Containerlab模拟外部BGP路由器,使用Cilium......
  • elasticsearch集群搭建
    1、配置java环境2、配置内核参数vim/etc/security/limits.conf*softnofile65536*hardnofile65536*softnproc2048*hardnproc2048*softmemlockunlimi......
  • 使用qiankun搭建微服务 (通信部分)2
    本章介绍一下qiankun的主和子应用之间的通信,原理其实是发布订阅模式,类似vue的eventbus,首先主和子应用里面都要有一个初始化的action,如下:import{initGlobalState}from......
  • Centos 7 web 环境搭建
    1、Xshell5为了方便管理操作服务器,这里采用xshell5来连接服务器,使用ssh证书,端口号22,对于购买的与主机需要开放相应的端口。如下是连接成功的提示:[c:\~]$openCon......
  • 只需 6 步,你就可以搭建一个云原生操作系统原型
    简介: 当云原生和操作系统这两个热点话题相遇的时候,会发生什么故事?编者按:过去的三年对基础软件领域来说是不平凡的三年,是波涛汹涌的三年。随着国际形势和行业格......
  • 快速搭建 Git 服务器[Windows版]
    服务器搭建下载下载JDK:https://www.oracle.com/technetwork/java/javase/downloads/下载Gitblit:http://gitblit.com/解压解压缩下载的压缩包即可,无需安装。创......
  • nodeJs + npm 环境搭建
    目录1、安装nodeJS2、配置系统环境变量PATH=nodejs安装目录3、在nodejs安装根目录创建node_cache、node_global两个文件夹4、配置npm5、查看配置是否生效(win+R启动终端......