he0119 / CoolQBot

基于 NoneBot2 的聊天机器人
MIT License
89 stars 22 forks source link

单 QQ 如何 OneBot V11 与 V12 适配器共存? #264

Closed monsterxcn closed 1 year ago

monsterxcn commented 1 year ago

看到您在 #261 中已经将 Bot 同时支持 V11 和 V12 的 OneBot 适配器了,是一个 NoneBot2 + 一个 QQ 就可以了?

我想将自己的 Bot 也升级一下,部分简单的插件升级到 V12,剩余的仍然维持在 V11。但是我不太懂用一个 QQ 只运行一个 NoneBot2 是否可以(如何)同时支持 V11 和 V12。

我进行了以下尝试([BOTQQ] 为我的 Bot QQ 号码,[MYQQ] 为我的 QQ 号码):

这样配置之后,依次启动 go-cqhttp、walle-q、NoneBot2,查看 NoneBot2 日志发现 OneBot V11 连接后会报错一次 RuntimeError: Duplicate bot connection with id [BOTQQ],之后又正常建立了 OneBot V12 连接。再之后似乎就开始正常工作了,但我不知道这样是否正确。


除了正确同时使用 V11 和 V12 适配器的问题,我还在想一个问题,两个适配器都显示接收到了同一条消息,那样同一条消息应该会被处理两次?💦💦

he0119 commented 1 year ago

但是我不太懂用一个 QQ 只运行一个 NoneBot2 是否可以(如何)同时支持 V11 和 V12。

我现在其实是一个 QQ 用 go-cqhttp 走 v11,然后 kook 用 walle-k,telegram 用 teydacore 走 v12。其实我也不太懂,该怎么同时支持两个协议但是不同 QQ 号(就算是同一个协议,同时发两个一样的事件也不太好搞)。

除了正确同时使用 V11 和 V12 适配器的问题,我还在想一个问题,两个适配器都显示接收到了同一条消息,那样同一条消息应该会被处理两次?💦💦

是的,同时支持 ob11/12 其实只是指 matcher 收到任意事件都能处理,但是每个事件来了都会处理一次。

he0119 commented 1 year ago

这样配置之后,依次启动 go-cqhttp、walle-q、NoneBot2,查看 NoneBot2 日志发现 OneBot V11 连接后会报错一次 RuntimeError: Duplicate bot connection with id [BOTQQ],之后又正常建立了 OneBot V12 连接。再之后似乎就开始正常工作了,但我不知道这样是否正确。

寄,我发现 ob12 adapter 代码似乎写错了,按理来说,如果 nb 已经有一个 bot 的 id 是 123 的话,另外一个 123 的 bot 是不应该连接成功,并且处理事件的。

monsterxcn commented 1 year ago

😢那看来我还是需要把 v11 和 v12 的分开到两个 Bot QQ 上咯?

我其实主要就是想在一个 Bot QQ 上处理,那个 同一条消息被处理两次 想了想其实倒不是大问题,只要我单独导 nonebot.adapters.onebot.v11 或者 nonebot.adapters.onebot.v12 去写对应的插件就好了。

he0119 commented 1 year ago

😢那看来我还是需要把 v11 和 v12 的分开到两个 Bot QQ 上咯?

我其实主要就是想在一个 Bot QQ 上处理,那个 同一条消息被处理两次 想了想其实倒不是大问题,只要我单独导 nonebot.adapters.onebot.v11 或者 nonebot.adapters.onebot.v12 去写对应的插件就好了。

但是处理两次是 bug(

monsterxcn commented 1 year ago

确实是这样,所以有没有什么魔法🤣

在一个 QQ Bot 搞定 v11 和 v12,不觉得这很酷吗(

he0119 commented 1 year ago

确实是这样,所以有没有什么魔法🤣

在一个 QQ Bot 搞定 v11 和 v12,不觉得这很酷吗(

继续用现在这个版本不升级,不就能用了🤣

monsterxcn commented 1 year ago

很好的建议,谢谢。我觉得可以 close 了哈哈