@@ -19,14 +19,13 @@ import org.ntqqrev.saltify.annotation.WithApiExtension
1919import org.ntqqrev.saltify.dsl.SaltifyPluginContext
2020import org.ntqqrev.saltify.dsl.config.SaltifyApplicationConfig
2121import org.ntqqrev.saltify.entity.InstalledPlugin
22+ import org.ntqqrev.saltify.entity.RegisteredCommandInfo
2223import org.ntqqrev.saltify.exception.ApiCallException
23- import org.ntqqrev.saltify.extension.plainText
2424import org.ntqqrev.saltify.model.EventConnectionState
2525import org.ntqqrev.saltify.model.EventConnectionType
2626import org.ntqqrev.saltify.model.SaltifyComponentType
2727import org.ntqqrev.saltify.util.coroutine.SaltifyComponent
2828import org.ntqqrev.saltify.util.coroutine.SaltifyExceptionHandlerProvider
29- import org.ntqqrev.saltify.util.coroutine.saltifyComponent
3029import kotlin.coroutines.CoroutineContext
3130import kotlin.time.Clock
3231
@@ -101,6 +100,8 @@ public sealed class SaltifyApplication(internal val config: SaltifyApplicationCo
101100
102101 private val loadedPlugins = mutableListOf<SaltifyPluginContext >()
103102
103+ internal val commandRegistry: MutableList <RegisteredCommandInfo > = mutableListOf ()
104+
104105 @PublishedApi
105106 internal val httpClient: HttpClient = HttpClient {
106107 install(ContentNegotiation ) {
@@ -125,14 +126,10 @@ public sealed class SaltifyApplication(internal val config: SaltifyApplicationCo
125126 }
126127 }
127128
128- private lateinit var loggingListenerJob: Job
129-
130129 public suspend fun start (): SaltifyApplication {
131130 logger.info(" Saltify 正在启动..." )
132131 val startInstant = Clock .System .now()
133132
134- loggingListenerJob = startLoggingListeners()
135-
136133 // 插件初始化
137134 config.installedPlugins.map { installed ->
138135 @Suppress(" UNCHECKED_CAST" )
@@ -198,64 +195,9 @@ public sealed class SaltifyApplication(internal val config: SaltifyApplicationCo
198195 loadedPlugins.forEach {
199196 it.onStopHooks.forEach { block -> block() }
200197 }
201- loggingListenerJob.cancel()
202198 httpClient.close()
203199 applicationScope.cancel()
204200
205201 logger.info(" Saltify 已关闭" )
206202 }
207203}
208-
209- private fun SaltifyApplication.startLoggingListeners () = applicationScope.launch {
210- // 事件服务状态日志
211- applicationScope.launch {
212- eventConnectionStateFlow.collect {
213- when (it) {
214- is EventConnectionState .Connected ->
215- logger.info(" 事件服务已连接, 使用协议:${it.type.name} " )
216- is EventConnectionState .Disconnected -> {
217- val error = it.throwable
218- if (error != null && error !is CancellationException ) logger.error(" 事件服务已断开" , error)
219- }
220- is EventConnectionState .Connecting ->
221- logger.info(" 事件服务正在连接..." )
222- is EventConnectionState .Reconnecting ->
223- logger.warn(" 事件服务断开, 将在 ${it.delay} ms 后尝试重连... (重试次数: ${it.attempt} )" , it.throwable)
224- }
225- }
226- }
227-
228- // 错误日志
229- applicationScope.launch {
230- exceptionFlow.collect {
231- val component = it.first.saltifyComponent!!
232- when (component.type) {
233- SaltifyComponentType .Application ->
234- logger.error(" Saltify 根组件异常" , it.second)
235- SaltifyComponentType .Plugin ->
236- logger.error(" Saltify 插件 ${component.name} 异常" , it.second)
237- SaltifyComponentType .Extension ->
238- logger.error(" Saltify 基础扩展组件异常" , it.second)
239- }
240- }
241- }
242-
243- // 事件日志
244- applicationScope.launch {
245- eventFlow.collect {
246- when (it) {
247- is Event .MessageReceive -> {
248- when (val data = it.data) {
249- is IncomingMessage .Group ->
250- logger.debug(
251- " ${data.groupMember.userId} (${data.group.groupId} ): ${it.segments.plainText} "
252- )
253- else ->
254- logger.debug(" ${it.peerId} : ${it.segments.plainText} " )
255- }
256- }
257- else -> {}
258- }
259- }
260- }
261- }
0 commit comments