Skip to content

Commit 37b53c3

Browse files
authored
fix(milky): handle transform error per event (#57)
1 parent d34c6ca commit 37b53c3

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

  • acidify-milky/src/commonMain/kotlin/org/ntqqrev/acidify/milky

acidify-milky/src/commonMain/kotlin/org/ntqqrev/acidify/milky/MilkyContext.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package org.ntqqrev.acidify.milky
22

33
import io.ktor.server.application.*
4+
import io.ktor.server.plugins.di.*
45
import kotlinx.coroutines.CoroutineScope
56
import kotlinx.coroutines.channels.BufferOverflow
67
import kotlinx.coroutines.flow.Flow
78
import kotlinx.coroutines.flow.MutableSharedFlow
8-
import kotlinx.coroutines.flow.mapNotNull
99
import kotlinx.coroutines.launch
10+
import org.ntqqrev.acidify.AbstractBot
1011
import org.ntqqrev.acidify.event.AcidifyEvent
1112
import org.ntqqrev.acidify.milky.transform.transformAcidifyEvent
1213
import org.ntqqrev.milky.Event
@@ -33,9 +34,15 @@ open class MilkyContext(
3334
)
3435

3536
internal fun pipeBotEventFlow(flow: Flow<AcidifyEvent>) = launch {
36-
flow.mapNotNull { transformAcidifyEvent(it) }
37-
.collect {
38-
eventFlow.emit(it)
37+
val bot = application.dependencies.resolve<AbstractBot>()
38+
val logger = bot.createLogger(this@MilkyContext)
39+
flow.collect {
40+
try {
41+
val milkyEvent = transformAcidifyEvent(it) ?: return@collect
42+
eventFlow.emit(milkyEvent)
43+
} catch (e: Exception) {
44+
logger.w(e) { "处理事件 ${it::class.simpleName} 时发生错误" }
3945
}
46+
}
4047
}
4148
}

0 commit comments

Comments
 (0)