8000 [skip ci] [draft] refactor: 完全重构 Onebot11 适配器 by PaienNate · Pull Request #1245 · sealdice/sealdice-core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

[skip ci] [draft] refactor: 完全重构 Onebot11 适配器 #1245

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

PaienNate
Copy link
Contributor
@PaienNate PaienNate commented Mar 30, 2025

对Onebot11适配器进行重构。思路及选型目前如下:

思路

采用类似SocketIO的事件驱动机制,结合一点“消息队列”的思路实现。Onebot请求首先被区分为“上报事件”和“API回应”,之后根据不同的事件,分发给不同的代码进行处理。

处理消息时,采用gjson来避免序列化成结构体,可读性相对于结构体降低,但极大的增强了适配性。当数据只要包含关键信息时,就能保证进行处理。

处理结构目前为:serveOnebotEvent(分发不同的事件)->onXXXXEvent(针对某一个事件的处理)->handleXXXX(针对某一个事件的子类进行处理)->messageQueueXXXXX(如需要,是否需要有一个消息队列等待消费后做进一步处理,比如加群,加好友,发送好友致辞等)

在API响应处理的实现上,针对需要API响应的数据检查其回应,并根据echo字符串进行切分,若发现其是某个流程(如:加群时,首先确认是否允许加群,而后获取群信息,将群信息的群名称拿到LOG内)的数据,则将其转发到对应的消息队列中。

目前已有两个5s消费一次数据的消息队列(加好友和加群),使用这种方式保证所有加好友/群信息能恒速被处理,避免了同一时间同意过多导致崩溃的问题。

进度

目前功能完成度:

页面

  • 前端页面

对接功能

控制和连接

  • 断线重连
  • 正向WS
  • 反向WS
  • WS单个连接控制

可能会考虑的额外功能

可能相关的主题

似乎考虑设计一种回调。感觉和目前我的部分设计有相似之处。(怎么之前我没看见这个issue额)#520

@PaienNate PaienNate requested a review from fy0 March 31, 2025 03:54
@PaienNate PaienNate self-assigned this Mar 31, 2025
@Fripine
Copy link
Member
Fripine commented May 29, 2025

非常好的重构,把gocq adapter收拾的很干净。有个疑问,对于处理失败的事件,是打算仅在主页滚动日志里打印吗

@PaienNate
Copy link
Contributor Author

非常好的重构,把gocq adapter收拾的很干净。有个疑问,对于处理失败的事件,是打算仅在主页滚动日志里打印吗

有没有什么更好的建议?目前尚且对此没有什么思路。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0