From d78f8fc0920ea273c7b20849cbe5fbcae00358b3 Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Thu, 13 Feb 2020 09:54:11 +0800
Subject: [PATCH] Add more examples

---
 .../java/demo/subscribe/SubscribeSamples.kt   | 28 +++++++++++++++----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/mirai-demos/mirai-demo-1/src/main/java/demo/subscribe/SubscribeSamples.kt b/mirai-demos/mirai-demo-1/src/main/java/demo/subscribe/SubscribeSamples.kt
index 972d6a399..07bea92a2 100644
--- a/mirai-demos/mirai-demo-1/src/main/java/demo/subscribe/SubscribeSamples.kt
+++ b/mirai-demos/mirai-demo-1/src/main/java/demo/subscribe/SubscribeSamples.kt
@@ -11,6 +11,7 @@
 
 package demo.subscribe
 
+import kotlinx.coroutines.CompletableJob
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.BotAccount
 import net.mamoe.mirai.alsoLogin
@@ -19,6 +20,7 @@ import net.mamoe.mirai.contact.sendMessage
 import net.mamoe.mirai.event.*
 import net.mamoe.mirai.message.FriendMessage
 import net.mamoe.mirai.message.GroupMessage
+import net.mamoe.mirai.message.data.AtAll
 import net.mamoe.mirai.message.data.Image
 import net.mamoe.mirai.message.data.PlainText
 import net.mamoe.mirai.message.data.firstOrNull
@@ -97,7 +99,7 @@ fun Bot.messageDSL() {
             // it: String (MessageChain.toString)
 
 
-            message[Image].download()
+            // message[Image].download() // 还未支持 download
             if (this is GroupMessage) {
                 //如果是群消息
                 // group: Group
@@ -119,6 +121,7 @@ fun Bot.messageDSL() {
         // 当收到 "我的qq" 就执行 lambda 并回复 lambda 的返回值 String
         "我的qq" reply { sender.id }
 
+        "at all" reply AtAll // at 全体成员
 
         // 如果是这个 QQ 号发送的消息(可以是好友消息也可以是群消息)
         sentBy(123456789) {
@@ -134,12 +137,27 @@ fun Bot.messageDSL() {
         }
 
 
-        // 当消息中包含 "复读" 时
-        val listener = (contains("复读1") or contains("复读2")) {
-            reply(message)
+        // listener 管理
+
+        var repeaterListener: CompletableJob? = null
+        contains("开启复读") {
+            repeaterListener?.complete()
+            bot.subscribeGroupMessages {
+                repeaterListener = contains("复读") {
+                    reply(message)
+                }
+            }
+
+        }
+
+        contains("关闭复读") {
+            if (repeaterListener?.complete() == null) {
+                reply("没有开启复读")
+            } else {
+                reply("成功关闭复读")
+            }
         }
 
-        listener.complete() // 停止监听
 
         // 自定义的 filter, filter 中 it 为转为 String 的消息.
         // 也可以用任何能在处理时使用的变量, 如 subject, sender, message