生命周期
注意
编写此文档时,GoneBot
版本为 v1.1.4
在 GoneBot
中,适配器的生命周期非常简单,开始,和结束。也就是适配器的启动和销毁。
在定义上,适配器需要实现 Start
方法和 Finalize
方法,这两个方法均不需要任何参数,其中 Start
方法会通过 goroutine
启动,适配器应当在 Start
方法中启动自己的业务逻辑,Finalize
方法会在 GoneBot
关闭时调用,适配器应当在此方法中释放资源,防止泄漏。
开始
在 Start
方法启动之后,适配器有一些不得不做的工作,以方便 GoneBot
能够正常工作:
适配器应当以自己的方式收取来自聊天平台的消息,并将消息转换为 GoneBot
规定的 Message
类型,并使用 ReceiveChannel.Push(msg, true)
将消息塞入适配器的收取消息队列,GoneBot
会从此队列中取出消息,并将消息传递给插件。
在经过插件的处理之后,插件的回复会被塞入适配器的发送消息队列 SendChannel
,适配器需要将这些回复以自己的方式发送到聊天平台。
如果聊天平台实现了一些自定义行为(如 QQ 的戳一戳等),插件可能会产生一些行为调用,GoneBot
会将这些调用塞入适配器的 ActionChannel
,适配器需要处理这些行为,并将处理结果塞入传入的 ActionCall
所指定的 ResultChannel
。
注意
无论调用结果如何,你都需要塞至少一个结果进入 ResultChannel
,否则调用该行为的插件会原地卡死!
我警告你!🫵🫵🫵
结束
在 GoneBot
关闭时,会依次调用所有适配器的 Finalize
方法,适配器应当在此方法中释放所有资源,防止泄漏。
注意
但这并不意味着你可以随意阻塞线程!否则会导致 GoneBot
不能正常关闭!
提示
直到 v1.1.4
版本,GoneBot
还无法在用户使用 Ctrl+C
时正常退出,在之后的版本中,GoneBot
将会尝试修复这个问题