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
-
目前社区正在有许多基于 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