AiursoftWeb / Kahla

Mirror of https://gitlab.aiursoft.cn/aiursoft/Kahla
https://www.kahla.app
Other
70 stars 21 forks source link

Refactor Bot SDK. #181

Closed Anduin2017 closed 4 years ago

Anduin2017 commented 4 years ago

重构了bot SDK

重构内容,主要是Bot的声明周期不再是单例了 主要是考虑到Bot可能依赖数据库上下文 Bot本身的声明周期,是每次被时间同步器调用一次Bot,都会实例化一个新Bot 所以对于线程安全也会更加有保证 另外,BotBase类被重构,拆分成了BotHost(用于承载Bot的内存线程)和BotBase(只提供给开发者一些有意义的开发用的方法) Bot本身无法自己启动自己,必须靠BotHost启动。BotHost中再耦合了BotFactory来生产Bot 不过这些都是SDK内部的工作逻辑了 另外BotHost重构了Bot的生命周期,采用了三线程工作方式 线程1:bot启动方法。 线程2:bot事件监视器。线程3:bot命令捕获器 三个线程都是单例,除了启动逻辑外,互相可保活,从而构建出Bot自动重连和自动重试 三个线程任意一个出现Exception,或三个线程全部退出后,Bot生命结束

这个PR改动挺大,我996了一星期…… 为了未来可以构建更丰富的Bot功能