From 70633a631abe142c35dc432134d65b384136d31a Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Fri, 8 Jan 2021 09:50:07 +0800
Subject: [PATCH] [Review] MessageSubscribersBuilder: stabilization.

---
 .../kotlin/event/MessageSubscribersBuilder.kt   | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/mirai-core-api/src/commonMain/kotlin/event/MessageSubscribersBuilder.kt b/mirai-core-api/src/commonMain/kotlin/event/MessageSubscribersBuilder.kt
index 24af872e0..d01091edb 100644
--- a/mirai-core-api/src/commonMain/kotlin/event/MessageSubscribersBuilder.kt
+++ b/mirai-core-api/src/commonMain/kotlin/event/MessageSubscribersBuilder.kt
@@ -20,6 +20,7 @@ import net.mamoe.mirai.event.events.*
 import net.mamoe.mirai.internal.event.*
 import net.mamoe.mirai.message.data.*
 import net.mamoe.mirai.message.data.MessageSource.Key.quote
+import kotlin.annotation.AnnotationTarget.CONSTRUCTOR
 
 
 /**
@@ -39,10 +40,10 @@ public typealias MessageListener<T, R> = @MessageDsl suspend T.(String) -> R
  * @param R 消息监听器内部的返回值
  * @param Ret 每个 DSL 函数创建监听器之后的返回值
  *
- * @see subscribeFriendMessages
+ * @see subscribeMessages
  */
 @MessageDsl
-public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, RR>(
+public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, RR> internal constructor(
     /**
      * 用于 [MessageListener] 无返回值的替代.
      */
@@ -53,17 +54,17 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
      */
     public val subscriber: (M.(String) -> Boolean, MessageListener<M, RR>) -> Ret
 ) {
-    @Suppress("DEPRECATION_ERROR")
+    @RequiresOptIn(level = RequiresOptIn.Level.ERROR)
+    @Target(CONSTRUCTOR)
+    private annotation class UseNewListenerFilterInstead
+
+    @OptIn(UseNewListenerFilterInstead::class)
     public open fun newListeningFilter(filter: M.(String) -> Boolean): ListeningFilter = ListeningFilter(filter)
 
     /**
      * 由 [contains], [startsWith] 等 DSL 创建出的监听条件, 使用 [invoke] 将其注册给事件
      */
-    public open inner class ListeningFilter @Deprecated( // keep it for development warning
-        "use newListeningFilter instead",
-        ReplaceWith("newListeningFilter(filter)"),
-        level = DeprecationLevel.ERROR
-    ) constructor(
+    public inner class ListeningFilter @UseNewListenerFilterInstead internal constructor(
         public val filter: M.(String) -> Boolean
     ) {
         /** 进行逻辑 `or`. */