浏览代码

add incoming channel

HoshinoTented 6 年之前
父节点
当前提交
cebdd40e76
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt

+ 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)
+        }
+    }
+}
+
 
 /**
  * 消息事件的处理器.