Replies: 1 comment
-
|
abrahum/walle-core:基于此抽象模型做的 OneBotLib |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
目前社区正在有许多基于 OneBot 的实现端 libonebot 和应用端 SDK 都在开发中,这里仅对 OneBot 协议的底层抽象做一个个人理解的展示,供各位开发者参考讨论。
首先目前对于 OneBot 来说其实可以把一个 libonebot 或者 SDK 分解为三个部分:
其中 OneBot 数据协议(既 Event Action ActionResponse MessageSegment)各个语言的序列化与反序列化存在较大差异,在此不做过多讨论。
对于一个 OneBot 实例(无论实现端还是应用端),我的抽象模型如下:
对于任何一个 OneBot 实例均存在一个 EventHandler 和一个 ActionHandler,其中 EventHandler 产生 Action 并处理 Event;而 ActionHandler 与之相反。
具体来说对于一个实现端来说, ActionHandler 就是实现平台的对接逻辑代码,它产生来自平台的 Event 并接收 Action 传递到平台进行处理;而 EventHandler 就可以是 OneBot Connect,它接收平台产生的 Event 通过连接对外分发,然后从连接接收 Action(产生 Action )并传递。
而对于应用端来说,情况正好与之相反
这个模型可以最大程度上的解耦 OneBot 协议的各个部分,让各部分代码增加可复用性,避免重复工作。
我想到的可能应用到的场景:
抛砖引玉,欢迎讨论
Beta Was this translation helpful? Give feedback.
All reactions