当前位置: 首页 > news >正文

nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5

nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5

  • 1. 版本升级
  • 2. go-cqhttp后端调整
  • 3. nonebot2前端改动
    • 3.1 导入库方式改变
    • 3.2 命令信息的改变

该插件涉及知识点:将旧插件迁移至高版本
插件合集:nonebot2聊天机器人插件

该系列为用于QQ群聊天机器人的nonebot2相关插件,不保证完全符合标准规范写法,如有差错和改进余地,欢迎大佬指点修正。
前端:nonebot2
后端:go-cqhttp
插件所用语言:python3

在被版本差异折磨了几个月后,终于在这个国庆假期决定抽出时间,将nonebot2==2.0.0a15迁移到新版本的nonebot2==2.0.0b5,以避免与新版本代码的各种不兼容问题。

1. 版本升级

更新的方式其实很简单,只需要安装nb-cli:
pip install nb-cli
然后运行nb创建一个项目,依次选择:
在这里插入图片描述
在确认创建后,nb-cli会自动从pip下载新版本的库。

2. go-cqhttp后端调整

打开后端的go-cqhttp文件夹,找到config.yml文件,找到反向WS服务的部分,将原本的

universal: ws://127.0.0.1:36604/cqhttp/ws

修改为

universal: ws://127.0.0.1:36604/onebot/v11/ws

3. nonebot2前端改动

3.1 导入库方式改变

全部写下来是不可能的,因此只是记录最常用的改动,更多请自己查文档。

# 原本的写法
from nonebot.adapters.cqhttp import MessageSegment
# 修改的写法
from nonebot.adapters.onebot.v11 import MessageSegment

3.2 命令信息的改变

举个例子,如果原本让机器人计算1+1的命令是/计算1+1
其中,/是命令字符, 计算是命令内容, 1+1才是输入字符串。
那么原本的写法:

from nonebot.adapters import Bot, Event

calculator = on_command("计算", priority=Config.priority)
@calculator.handle()
async def handle_first_receive(event: Event):
    msg = str(event.get_message())

此时获得的msg是1+1

但是,在升级后的nonebot2.0.0b5版本,获得的是msg将会是/计算1+1,即完整的原始信息内容。
如果仍然需要和之前一样只获得1+1的msg,则需要换成新的写法:

from nonebot.adapters.onebot.v11 import Message, MessageSegment
from nonebot.params import CommandArg

calculator = on_command("计算", priority=Config.priority)
@calculator.handle()
async def handle_first_receive(msg: Message = CommandArg()):
    msg = str(msg)

对于on_message类型的非命令字符串响应,仍然可以兼容之前的写法,小心别顺手把它们也一起改掉,导致了出现新的bug。别问我怎么知道的,也别问我发生了什么

此外,新版本还有很多新特性,具体的请查看相关文档:https://v2.nonebot.dev/
同样感谢交流群内的好心大佬们给予了很多关键的指点。
请添加图片描述

相关文章:

  • 高速度结构设计
  • Java(六)——常用类 --- 大数运算
  • 【对比Java学Kotlin】协程-异步流
  • 基于Vue+SSM+SpringCloudAlibaba的英雄管理系统
  • 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
  • 女篮亚军,为啥男篮那么水?
  • 发动机曲轴及曲柄连杆机构受力有限元分析
  • 进程概念(Linux)
  • 国庆弯道超车之最长递增子序列衍生的一类题
  • 30. Python 修改列表的元素
  • Redis入门-下载-安装-启动服务测试
  • 一个C#开发的、跨平台的服务器性能监控工具
  • ARM - LED灯实验(cortex A7核/cortex M4核)
  • 【云原生之Docker实战】使用Docker部署Lsky Pro个人图床平台
  • 【剑指Offer】--->详解二分查找相关练习
  • [NodeJS] 关于Buffer
  • HashMap ConcurrentHashMap
  • Intervention/image 图片处理扩展包的安装和使用
  • java中的hashCode
  • Koa2 之文件上传下载
  • markdown编辑器简评
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Protobuf3语言指南
  • SOFAMosn配置模型
  • sublime配置文件
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 闭包--闭包之tab栏切换(四)
  • 回流、重绘及其优化
  • 前端面试之闭包
  • 思维导图—你不知道的JavaScript中卷
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 通过调用文摘列表API获取文摘
  • ​Spring Boot 分片上传文件
  • #FPGA(基础知识)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (11)MATLAB PCA+SVM 人脸识别
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Java数据结构)ArrayList
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (三)c52学习之旅-点亮LED灯
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net 4.0发布后不能正常显示图片问题
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net core 控制台应用程序读取配置文件app.config
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NetCore项目nginx发布
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @RunWith注解作用
  • [100天算法】-目标和(day 79)
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [Android 13]Input系列--获取触摸窗口
  • [android] 请求码和结果码的作用