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/
同样感谢交流群内的好心大佬们给予了很多关键的指点。