拓冰建站拓冰建站
首页 / 资讯中心 / 正文

NoneBot2 更新日志解读:从 v2.0 到 v2.5 的框架演进与核心能力升级

后端即时通讯【免费下载链接】nonebot2跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python项目地址https://gitcode.com/gh_mirrors/no/nonebot2点击查看免费下载导读本文以 NoneBot2 官方文档站维护的完整更新日志website/src/changelog/changelog.md为主体结合仓库源码梳理该跨平台 Python 异步聊天机器人框架从 v2.0 早期预览版到 v2.5.0 的完整演进脉络。你将了解到驱动层、依赖注入、事件响应器、配置系统等核心机制的每一次关键变更以及这些变更在源码中的实际落点——既能当作版本升级排查手册也能作为理解框架内部架构的索引。更新日志的组织方式与定位在仓库中更新日志有双份入口完整日志本体位于 website/src/changelog/changelog.md由 Docusaurus 文档站直接渲染前 4 行为 FrontMatterdescription: Changelog、toc_max_heading_level: 2从文档站可直达在线版本根目录 CHANGELOG.md 仅作为入口占位正文只有一行说明指引读者查看完整日志。日志按版本倒序组织顶部是最近更新区块当前未发布变更其后依次为 v2.5.0、v2.4.4、v2.4.3、v2.4.2、v2.4.1、v2.4.0、v2.3.3、v2.3.2、v2.3.1、v2.3.0、v2.2.1、v2.2.0、v2.1.3、v2.1.2、v2.1.1、v2.1.0、v2.0.1、v2.0.0、v2.0.0rc4、v2.0.0rc3、v2.0.0rc2、v2.0.0-rc.1、v2.0.0-beta.5、v2.0.0-beta.4、v2.0.0-beta.3、v2.0.0-beta.2、v2.0.0-beta.1以及更早的 v2.0.0a16 至 v2.0.0a5 系列 alpha 版本。每个版本条目内使用固定 emoji 分类体系便于快速扫描分类含义 破坏性变更不兼容旧版本的改动Remove / 破坏性 Feature 新功能新增 Feature、能力扩展 Bug 修复Fix 各类缺陷 文档Docs 文档站更新 杂项CI、Dev、Lint、插件信息维护等 插件发布 / 机器人发布 / 适配器发布社区生态在商店的新增与更新从 v2.0.0-beta.1 起单条记录统一遵循类型: 简述 [贡献者] (PR 编号)的格式贡献者与 PR 均可在对应平台追溯更早期的 beta.2 之前的版本则使用自由文本列表。日志的自动维护由 NoneFlow 工作流与更新日志自动更新 action支撑相关改动记录在 v2.0.0-beta.3 的杂项中。版本演进主线从 alpha 到 2.x 稳定版框架雏形期v2.0.0a5 – v2.0.0a16早期 alpha 版本奠定了今日框架的地基日志中反复出现的关键动作包括项目结构拆分v2.0.0a11 将项目结构重组分离所有 adapterv2.0.0a16 将 adapter 基类拆分为单独文件v2.0.0-beta.2 进一步调整项目结构分离内部定义与用户接口——这与当前仓库nonebot/internal/与nonebot/adapters/、nonebot/drivers/的物理分层一一对应插件加载机制v2.0.0a11 改用 PEP 302 import hook 加载插件新增json、toml两种插件声明方式v2.0.0-beta.1 将 toml 键名规范为tool.nonebot驱动抽象v2.0.0a14 重构 Driver 及连接信息抽象新增正向客户端Driver 支持引入aiohttp正向 DriverfastapiDriver 增加正向能力v2.0.0a10 新增 Quart Driver 支持消息与模板v2.0.0a16 引入MessageTemplate并让matcher.got/send/pause/reject/finish全面支持模板事件与权限v2.0.0a11 移除 4 种内置事件类型限制允许自定义事件类型v2.0.0a9 增加好友添加、加群请求事件的approve、reject方法新增 shell like command 支持安全考量v2.0.0a8 出于 CQ 码安全性考虑使用 cqhttp 的bot.send或matcher.send时默认对字符串进行转义。稳定版成型期v2.0.0-beta.1 – v2.0.1beta 阶段完成了对开发者体验影响深远的几件事统一 Handler 体系v2.0.0-beta.1 统一Processor、Rule、Permission使用Handler并将内置规则/权限如startswith、command改为 class 实现v2.0.0-beta.3 新增文本完整匹配规则on_fullmatch的前身与CommandStart依赖注入参数依赖注入深化v2.0.0-beta.3 支持 WebSocket 连接同时获取str或bytes修复依赖注入默认值在__eq__被重写时的报错v2.0.0rc4 为子依赖添加 PEP 593Annotated支持正式版 v2.0.0新增插件元数据字段type、homepage、supported_adapters支持re.Match依赖注入为消息类添加has、join、include、exclude方法支持主动停止none系列驱动器v2.0.1CommandGroup 支持命令别名添加前缀选项添加内置插件的插件元数据插件商店适配最新的插件元数据格式。现代特性期v2.1 – v2.52.1 之后的更新逐步转向生态成熟与底层现代化v2.1.x细化 driver 职责类型、支持子依赖定义 Pydantic 类型校验、为事件响应器添加更多源码信息v2.1.2 新增多消息段命令解析支持v2.2.x这是框架底层的一次大换血——使用自定义配置加载替代pydantic-settings、全面兼容 Pydantic v2、为内置驱动器添加流式请求方法v2.3.x支持 HTTP 客户端会话、优化调用栈识别、嵌套插件名称作用域优化同时作为破坏性变更出现v2.4.x迁移至结构化并发框架 AnyIO跳过部分非必要的 task group 创建允许插件从环境变量读取配置项并支持 alias更新 NB-CLI 新版插件加载格式v2.5.0移除 Python 3.9 支持当前 pyproject.toml 声明requires-python 3.10, 4.0放宽 pydantic compat model dump 类型。破坏性变更兼容性边界如何一步步收缩更新日志中的 破坏性变更区块是升级前必须阅读的清单历次主要收缩如下Python 版本支持v2.0.0-rc.1 移除 Python 3.7v2.3.0 移除 Python 3.8v2.5.0 移除 Python 3.9。配合日志中测试矩阵加入 Python 3.11 / 3.12 / 3.13的 CI 条目可以看到框架持续跟进 CPython 新版本发布节奏过时 API 清理v2.0.0-rc.1 移除过时的 State 注入参数、过时的nonebot.pluginstoml 配置、删除过时的 Export 功能v2.0.0-beta.1 移除插件加载的 NameSpace 模式与 Matcherstate_factory支持v2.0.0-beta.3 为 export 方法添加 Deprecation 警告依赖替换v2.0.0rc2 使用importlib.metadata替换pkg_resources对应日志中的破坏性变更条目行为收紧v2.0.0rc4 修复适配器能断开非自身所有的 Bot 对象的问题v2.3.0 中嵌套插件名称作用域优化同时出现在新功能与破坏性变更两个区块说明它对既有插件命名行为产生了影响。核心新功能的源码级解读httpx2 驱动器的引入最近更新区块中的第一条新功能是添加 httpx2 驱动器支持。该驱动的实现位于 nonebot/drivers/httpx2.py它是一个纯客户端驱动模块 docstring 明确本驱动仅支持客户端 HTTP 连接通过Driver combine_driver(NoneDriver, Mixin)组合none基础驱动与HTTPClientMixin得到最终 DriverMixin.type返回httpx2安装方式为nb driver install httpx2或pip install nonebot2[httpx2]对应 pyproject.toml 中的可选依赖httpx2 [httpx2[http2] 2.0.0, 3.0.0]它实现了完整的HTTPClientSession接口包括普通request与流式stream_request支持自定义chunk_size并把 NoneBot 的Timeout配置映射为 httpx2 的connect/read/total超时。WebSocket 的 ping interval / timeout 配置另一条新功能是WS 支持 ping interval/timeout 配置。其底层实现在 nonebot/internal/driver/model.pyTimeoutdataclass 提供total/connect/read/close/ping五个超时维度其中ping即 WebSocket 心跳超时默认值DEFAULT_TIMEOUT Timeout(totalNone, connect5.0, read30.0, close10.0, ping20.0)Request增加ping_interval: PingIntervalTypes | UnsetType UNSET参数PingIntervalTypes float | None允许逐请求设置心跳间隔nonebot/drivers/websockets.py 中Mixin.websocket将上述配置映射到websockets.connect()的open_timeout、close_timeout、ping_timeout、ping_interval关键字参数并使用exclude_unset过滤未设置项该模块同样通过combine_driver(NoneDriver, Mixin)组装仅支持客户端 WebSocket 连接。结构化并发AnyIO 迁移v2.4.0 的迁移至结构化并发框架 AnyIO是近年来最影响内部架构的变更之一源码中可以清晰看到落点nonebot/dependencies/init.py 在依赖注入执行处使用anyio.create_task_group()组织并发子任务nonebot/drivers/none.py 使用anyio.run(self._serve)启动驱动主循环并用anyio.create_task_group()管理信号处理任务配合anyio.Event实现优雅退出nonebot/internal/driver/_lifespan.py 用anyio.abc.TaskGroup类型管理生命周期任务组pyproject.toml 将anyio 4.4.0, 5.0.0列为硬依赖。配套的修复条目修复结构化并发子依赖取消缓存问题v2.4.0则说明迁移并非一蹴而就。配置系统与 Pydantic v2 兼容v2.2.0 同时完成兼容 Pydantic v2与使用自定义配置加载替代 pydantic-settingsv2.4.4 又跟进兼容 pydantic v2.12FieldInfo改动、修复log level 配置项无法使用 int 类型配置。v2.4.4 允许插件从环境变量中读取配置项并支持 alias。这些条目对应 nonebot/config.py 与 nonebot/dependencies/utils.py 中大量 pydantic 兼容函数model_dump、type_validate_json等的存在——日志中 v2.2.1优化 pydantic 兼容函数、v2.5.0放宽 pydantic compat model dump 类型均是这一演进的注脚。Bug 修复中的典型问题模式更新日志的修复条目往往指向框架的真实痛点几类高频主题值得开发者留意WebSocket 稳定性v2.2.0 修复 websockets 驱动器连接关闭 code 获取错误v2.4.4 修复 aiohttp 驱动未处理WSMsgType.CLOSED类型最近更新中还修复了 WebSocket 基类 typo超时与流式响应v2.5.0 修正 http/websocket client timeout、修复 aiohttp 流式响应分块大小不固定问题v2.4.1 修复 httpx proxy 与 aiohttp timeout 参数随新版本库的变更消息与命令解析v2.4.2 修复 shell command 词法解析错误未捕获v2.2.0 修复MessageTemplate禁止访问私有属性、修复echo发送空消息v2.2.1 修复Message.__contains__()未考虑bool(MessageSegment)为 False 的异常结果依赖注入边界v2.1.2 修复依赖注入对 Literal 检查报错v2.1.1 修复bot.call_api在 called api hook mock 后应忽略 exceptionv2.3.2 修复 ForwardRef eval 时参数recursive_guard缺失pydantic 版本战争v2.4.1 屏蔽 pydantic 2.10.0pyproject.toml 中可见!2.5.0, !2.5.1, !2.10.0, !2.10.1的排除列表这正是多个修复条目的最终形态。生态发布插件、机器人与适配器更新日志的 插件发布 / 机器人发布 / 适配器发布区块记录了社区商店的动态。从 v2.0 到 v2.5适配器发布覆盖了 Discord、RedProtocol、Satori、Mail、WXMP、黑盒语音、B站直播间、VoceChat、EFChat、Milky、Gewechat、Matrix、WxClaw、Mirai、Tailchat、Kritor、RocketChat、DoDo、Ntchat、OneBot V12、BilibiliLive、Spigot、云湖 等数十个平台机器人发布则包括 LittlePaimon、GenshinUID、Pallas-Bot、Muicebot 等社区项目。插件发布数量随版本递增趋势明显v2.5.0 之前每个版本约 20~50 个插件而最近更新区块单次集中收录了上百个新插件覆盖 AI 聊天/绘图、游戏查分、订阅推送、管理工具、娱乐互动等类别并伴随多个移除不再维护插件的清理条目——这表明 NoneFlow 商店自动化流程已成为社区发布的主通道。对普通使用者而言这些区块的实践价值在于新插件发布往往意味着新适配器或新库的可用性信号可在 assets/plugins.json5、assets/adapters.json5、assets/bots.json5、assets/drivers.json5 等商店数据文件中找到对应元数据。文档与工程实践的持续投入日志中 文档与 杂项区块反映了文档站与工程基建的持续演进文档框架层面经历了升级到 Docusaurus V3v2.4.0、升级 docusaurus 3.8.1 / 3.9.2 / 3.10v2.4.4 / v2.5.0 / 最近更新、更新到 nonepress 3.8.0 等多次迭代内容层面持续新增与修正适配器编写教程、依赖注入文档、Alconna 最佳实践、数据库最佳实践、插件发布教程、OSPP 2024/2025 项目说明等工程基建方面迁移使用 uv 管理项目依赖v2.4.3对应根目录 uv.lock 与 pyproject.toml 中的[tool.uv]配置、完全使用 ruff 替代 isort 与 blackv2.4.1、添加 Pyright 检查v2.0.1、测试矩阵覆盖 Python 3.11/3.12/3.13、CI 使用 pull_request 替代 pull_request_target最近更新等。如何利用这份更新日志对开发者而言这份日志可以这样使用升级前检查先读目标版本的 破坏性变更确认 Python 版本与 API 兼容性要求定位新能力在 新功能中检索关键词如 driver、timeout、dependency再到对应源码模块nonebot/drivers/、nonebot/internal/driver/、nonebot/internal/matcher/验证实现排查已知问题遇到 WebSocket、超时、pydantic 校验等异常时对照 Bug 修复确认是否已被修复及修复版本跟进生态动态关注 适配器发布判断是否有你所用平台的新适配器。需要说明的是日志中所有 PR 均链接到 NoneBot2 官方 GitHub 仓库的 Pull Request 页面如 #4194、#3964本仓库为镜像仓库在线版本的更新日志可通过文档站 changelog 页面访问完整原文则以 website/src/changelog/changelog.md 为准根目录 CHANGELOG.md 只是它的跳转入口。由于镜像仓库只读若需跟进最新变更建议在 NoneBot2 官方仓库中跟踪后续版本发布。赞分享后端即时通讯【免费下载链接】nonebot2跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python项目地址https://gitcode.com/gh_mirrors/no/nonebot2点击查看免费下载相关推荐Video2X深度解析基于机器学习的视频超分辨率与帧插值架构设计Video2X深度解析基于机器学习的视频超分辨率与帧插值架构设计 Video2X是一个基于机器学习的视频超分辨率放大与帧插值框架采用C/C语言完全重写音视频视频处理图像处理深度学习7个实战Dify工作流模板从场景痛点到高效解决方案7个实战Dify工作流模板从场景痛点到高效解决方案 当你在构建AI应用时是否遇到过这些挑战智能对话总是缺乏上下文记忆数据处理流程复杂难以维护API集成示例工程fully-local-pdf-chatbot版本更新日志v1.0到v2.0核心功能演进fully local pdf chatbot版本更新日志v1.0到v2.0核心功能演进 版本概述 fully local pdf chatbot是一款完全本上一篇TDgpt Windows 打包本地二进制缓存bin/ 目录机制解析WinSW 与 uv 的缓存策略下一篇在 Kind 上部署 Cilium依赖安装、集群创建与验证完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门