Jelajahi Sumber

add incoming channel

HoshinoTented 6 tahun lalu
induk
melakukan
cebdd40e76

+ 13 - 0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt

@@ -12,6 +12,8 @@
 package net.mamoe.mirai.event
 
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.ReceiveChannel
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.contact.isAdministrator
 import net.mamoe.mirai.contact.isOperator
@@ -125,6 +127,17 @@ inline fun <R> Bot.subscribeFriendMessages(crossinline listeners: MessageSubscri
     }.run(listeners)
 }
 
+/**
+ * 返回一个指定事件的接收通道
+ */
+inline fun <reified E : Event> Bot.incoming(): ReceiveChannel<E> {
+    return Channel<E>(8).apply {
+        subscribeAlways<E> {
+            send(this)
+        }
+    }
+}
+
 
 /**
  * 消息事件的处理器.