初识Nonebot2

news2024/11/27 15:32:59

文章目录

    • 什么是nonebot2?
    • 机器人工作流程
    • WebSocket协议
    • OneBot标准
    • Nonebot2框架工作路径

什么是nonebot2?

关于NoneBot2,我们先来引用一下官方文档的描述

NoneBot2是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。
除了起到解析事件的作用,NoneBot 还为插件提供了大量实用的预设操作和权限控制机制。对于命令处理,它更是提供了完善且易用的会话机制和内部调用机制,以分别适应命令的连续交互和插件内部功能复用等需求。
得益于 Python 的 asyncio (opens new window)机制,NoneBot 处理事件的吞吐量有了很大的保障,再配合 WebSocket 通信方式(也是最建议的通信方式),NoneBot 的性能可以达到 HTTP 通信方式的两倍以上,相较于传统同步 I/O 的 HTTP 通信,更是有质的飞跃。
需要注意的是,NoneBot2 仅支持 Python 3.8 以上版本

废话那么多其实要点主要有以下几个:

  • Nonebot2是基于python3.8及以上运行的
  • 框架整体基于异步io
  • 有完善的预设指令,可减轻开发者的工作强度

Nonebot2具有以下特色:

  • 异步优先
    NoneBot2 基于 Python asyncio 编写,并在异步机制的基础上进行了一定程度的同步函数兼容。

  • 完整的类型注解
    NoneBot2 参考 PEP 484 等 PEP 完整实现了类型注解,通过 pyright/pylance 检查。配合编辑器的类型推导功能,能将绝大多数的 Bug 杜绝在编辑器中(编辑器支持)。

  • 开箱即用
    NoneBot2 提供了使用便捷、具有交互式功能的命令行工具–nb-cli,使得初次接触 NoneBot2 时更容易上手。详细使用方法请参考各文档章节以及使用脚手架。

  • 插件系统
    插件系统是 NoneBot2 的核心,通过它可以实现机器人的模块化以及功能扩展,便于维护和管理。

  • 依赖注入系统
    NoneBot2 采用了一套自行定义的依赖注入系统,可以让事件的处理过程更加的简洁、清晰,增加代码的可读性,减少代码冗余。

机器人工作流程

在本篇博客中介绍到的机器人,我们使用的的前端是go-cqhttp,后端是NoneBot2。
在这里插入图片描述

1.前端从腾讯的服务器上接收用户的信息(或其他)
2.将信息传递给后端
3.后端对信息进行分析,调用对应的模块进行处理
4.后端将处理结果推送给前端
5.前端将处理后的结果重新发送给腾讯的服务器(或其他)
6.腾讯服务器会在有消息变动之后将消息推送给用户

WebSocket协议

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在go-cqhttp与NoneBot的信息交互中,我们使用的就是反向WebSocket连接,也就是说go-cqhttp会主动去寻找nonebot2的程序,并将消息通过ws推送给nonebot2,因此相对于传统的HTTP连接,这种方法明显效率更高,延迟更低。

OneBot标准

OneBot标准是一个聊天机器人应用接口标准,旨在统一不同聊天平台上的机器人应用开发接口,使开发者只需编写一次代码即可应用到多种机器人平台。
在这里插入图片描述

在go-cqhttp与NoneBot的信息交互中,通讯的内容是基于OneBot的标准的改版,具体可以参考go-cqhttp的文档。

Nonebot2框架工作路径

The directory in which you are currently working. Path names that do not start with the root directory are assumed by the operating system to start from the working directory
————该解释出自 Webopedia

  • 相对路径
    相对于项目文件夹根目录的路径,没有盘符
  • 绝对路径
    一个计算机在能够使用之前会先进行分区,例如windows系统分为C盘、D盘,绝对路径就是从盘符出发定位一个文件。
  • 工作路径
    项目的程序入口所在的目录一般认定为工作路径。在nonebot中,工作路径位于bot.py的根目录。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建进度条 tqdm模块

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 创建进度条 tqdm模块 选择题 以下python代码最后输出错误的一项是? from tqdm import tqdm import time text{loss:0.2,learn:0.8} print(【开始执行】) for i in tqdm(range(50)…

python图像处理(图像缩放)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 图像缩放也是isp处理的一个基本功能。现在的camera像素越来越大,但是显示设备的分辨率是一定的,如果想把图像显示在显示器或者lcd上面,那就要符合对应显示设备的分辨率。一般来说…

【数据结构与算法理论知识点】5、图与贪心算法

5、图与贪心算法 逻辑结构 5.1、图的定义和术语 图:Graph(V,E) V:顶点(数据元素)的有穷非空集合; E:边的有穷集合。 **无向图:**每条边都是无方向的 有向图:每条边都是有方向的 完全图:任意两个点都有一条边相连 稀疏图:有很…

SSM 农产品销售管理系统

SSM 农产品销售管理系统 SSM 农产品销售管理系统 功能介绍 首页 用户登录注册 图片轮播 最新上架 农产资讯 产品商城 产品详情 在线留言 加入购物车 提交购买 评论 收藏 系统简介 系统公告 关于我们 友情链接 后台管理 登录 系统用户管理 修改密码 用户权限管理 产品信息管理…

Hadoop基础之《(4)—Yarn概述》

一、什么是Yarn YARN(Yet Another Resource Negotiator),简称YARN,另一种资源协调者,是Hadoop的资源管理器。 二、Yarn的组成 Yarn有两个核心组件,ResourceManager和NodeManager。 1、ResourceManager&am…

UE Operation File [ Read / Write ] DTOperateFile 插件说明

蓝图直接操作文件的功能节点 可以获取文件基本信息以及读写文件 目录 1. File Exists 2. File Size 3. File Delete 4. File Is Read Only 5. File Move 6. File Save By String 7. File Save By Array String 8. File Save By Array Binary 9. File Append By Strin…

Jenkins(一):什么是Jenkins?

目录 一、Jenkins是什么? 二、安装步骤 1.访问官网,下载安装包 2.解锁Jenkins 3.设置Jenkins的工作目录(可选) 总结 前言 近期在研究自动化部署,在这里对Jenkins做个笔记。 一、Jenkins是什么? Jenk…

数据挖掘,计算机网络、操作系统刷题笔记36

数据挖掘,计算机网络、操作系统刷题笔记36 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

泊松过程与排队论

全国同理:随机过程随机会过 ......唉 你说热统,他为什么要搭配着随机过程一起学 ......唉 你说数模比赛 为什么不能白送一个奖牌小摘要泊松过程泊松过程来到间隔与等待时间的分布来到时刻的条件分布M/G/1 忙期非齐次泊松过程复合泊松过程条件泊松过程排队系统输入常见的输入分布…

Python eval()和exec()函数详解

eval() 和 exec() 函数都属于 Python 的内置函数,由于这两个函数在功能和用法方面都有相似之处,所以将它们放到一节进行介绍。eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提…

Elasticsearch:深入理解 Elasticsearch 查询:过滤器查询 vs 全文搜索

如果我必须用一句话来描述 Elasticsearch,我会这样说: 当搜索遇到大规模分析时(近乎实时) Elasticsearch 是目前最受欢迎的 10 大开源技术之一。 公平地说,它包含许多本身并不独特的关键功能,但是&#xff…

ARP渗透与攻防(八)之ARP攻击防御

系列文章 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 ARP渗透与攻防(三)之流量分析 ARP渗透与攻防(四)之WireShark截获用户数据 ARP渗透与攻防(五)之Ettercap劫持用户流量 ARP渗透与攻防(六)之限制网速攻击 ARP渗透与攻防(七)之Ettercap Dns劫持 ARP攻击防御 …

【Linux】调试器-gdb使用

一、背景 程序的发布方式有两种,debug模式和release模式Linux gcc/g出来的二进制程序,默认是release模式要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 当我们不加 -g 选项的时候,我们生成的可执行文件的相关符…

python刷题-关于分词词频、数组排序,数组插数的题

目录标题1、对多种日期格式进行标准化2、实现英文分词计算词频-re.split、value_counts()3、中文文章分词4、统计《鹿鼎记》小说中的人名5、用1234能组成多少个互不相同且无重复数字的三位数6、两个矩阵相加7、用逗号分隔列表-join8、在升序的序列中插入一个数---重要9、对任意…

带滤波器的PID控制仿真-3(Simulink仿真)

在带滤波器的PID控制仿真-2的基础上对算例进行Simulink仿真。控制器采用积分分离PI控制,即当误差的绝对值小于等于0.80时,加入积分控制,仿真结果如图1和2所示。图1 加入滤波器时PID控制阶跃响应图2 无滤波器时PID控制阶跃响应初始化程序&…

03-你能不能自己写一个叫做java.lang.Object的类?

前言: 接着上一次02-为什么dex文件比class文件更适合移动端?的继续往下,距离上一篇已经过去快半年了,从我的博文记录中就可以清楚地看到: 转眼2023年新春假期接近尾声了,在这近半年的时间里,其…

2023英伟达显卡排名天梯图(已更新)

2023英伟达显卡排名天梯图 注意 这里没有更新4070Ti, 它的性能应该在3090和3090ti之间 Kelvin Kelvin 于 2001 年发布,是 Nvidia 千年以来第一个新的 GPU 微架构。最初的 Xbox 游戏机使用带有 Kelvin 微架构的 NV2A GPU。 GeForce 3 和 GeForce 4 系列 GPU 是采用…

nginx启动命令和停止命令

进入nginx的sbin目录下 cd /usr/local/nginx/sbin/ 1、启动nginx ./nginx 2、停止nginx两种方式 #待nginx进程处理任务完毕进行停止。 ./nginx -s quit #先查出nginx进程id再使用kill命令强制杀掉进程。 ./nginx -s stop 3、查看nginx端口 ps aux|grep nginx 4、查看ng…

机器学习——正则化线性回归和偏差/方差(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本文使用水库水位的变化来实现正则化线性回归,以预测大坝流出的水量。后续本文将对调试学习算法进行一些诊断&#…

2023需要重点关注的四大AI方向

2023需要重点关注的四大AI方向 过去10年,人工智能从实验室走向各行各业,成为一种普遍技术应用于众多领域。根据IDC的数据,2022年全球AI市场规模达到4328亿美元,增长近20%。而Precedence Research预计,到2030年&#xf…