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创建一个项目,依次选择:
nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5_第1张图片
在确认创建后,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/
同样感谢交流群内的好心大佬们给予了很多关键的指点。
nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5_第2张图片

你可能感兴趣的:(nonebot2聊天机器人插件)