From a4d78b3d210069baef4affd56dd39baf452a530c Mon Sep 17 00:00:00 2001
From: "jiahua.liu" <n@mamoe.net>
Date: Sun, 19 Jan 2020 19:30:18 +0800
Subject: [PATCH] plugin supporting

---
 .../net/mamoe/mirai/plugin/PluginBase.kt      |  9 ++++-
 .../mirai/imageplugin/ImagePluginMain.java    | 20 -----------
 .../mirai/imageplugin/ImageSenderMain.kt      | 36 +++++++++++++++++++
 .../src/main/resources/plugin.yml             |  2 +-
 4 files changed, 45 insertions(+), 22 deletions(-)
 delete mode 100644 mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImagePluginMain.java
 create mode 100644 mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImageSenderMain.kt

diff --git a/mirai-console/src/main/kotlin/net/mamoe/mirai/plugin/PluginBase.kt b/mirai-console/src/main/kotlin/net/mamoe/mirai/plugin/PluginBase.kt
index 071e4a854..3e75e0083 100644
--- a/mirai-console/src/main/kotlin/net/mamoe/mirai/plugin/PluginBase.kt
+++ b/mirai-console/src/main/kotlin/net/mamoe/mirai/plugin/PluginBase.kt
@@ -2,6 +2,7 @@ package net.mamoe.mirai.plugin
 
 import kotlinx.coroutines.*
 import net.mamoe.mirai.utils.DefaultLogger
+import net.mamoe.mirai.utils.MiraiLogger
 import net.mamoe.mirai.utils.io.encodeToString
 import java.io.File
 import java.net.URL
@@ -58,6 +59,12 @@ abstract class PluginBase(coroutineContext: CoroutineContext) : CoroutineScope {
         this.pluginDescription = pluginDescription
         this.onLoad()
     }
+
+    fun getPluginManager() = PluginManager
+
+    val logger: MiraiLogger by lazy {
+        DefaultLogger(pluginDescription.name)
+    }
 }
 
 class PluginDescription(
@@ -125,7 +132,7 @@ object PluginManager {
         File(it).mkdirs()
     }
 
-    private val logger = DefaultLogger("Mirai Plugin Manager")
+    val logger = DefaultLogger("Mirai Plugin Manager")
 
     //已完成加载的
     private val nameToPluginBaseMap: MutableMap<String, PluginBase> = mutableMapOf()
diff --git a/mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImagePluginMain.java b/mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImagePluginMain.java
deleted file mode 100644
index 47b9b45aa..000000000
--- a/mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImagePluginMain.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package net.mamoe.mirai.imageplugin;
-
-import net.mamoe.mirai.plugin.PluginBase;
-
-public class ImagePluginMain extends PluginBase {
-    static {
-        System.out.println("Static Loaded");
-    }
-
-    @Override
-    public void onLoad() {
-        System.out.println("Loaded");
-    }
-
-    @Override
-    public void onEnable() {
-        System.out.println("Enabled");
-
-    }
-}
diff --git a/mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImageSenderMain.kt b/mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImageSenderMain.kt
new file mode 100644
index 000000000..576509634
--- /dev/null
+++ b/mirai-plugins/image-sender/src/main/kotlin/net/mamoe/mirai/imageplugin/ImageSenderMain.kt
@@ -0,0 +1,36 @@
+import kotlinx.coroutines.GlobalScope
+import net.mamoe.mirai.event.events.BotLoginSucceedEvent
+import net.mamoe.mirai.event.subscribeAlways
+import net.mamoe.mirai.event.subscribeMessages
+import net.mamoe.mirai.message.data.At
+import net.mamoe.mirai.plugin.PluginBase
+import net.mamoe.mirai.utils.MiraiExperimentalAPI
+
+class ImageSenderMain : PluginBase() {
+
+    @MiraiExperimentalAPI
+    override fun onEnable() {
+        logger.info("Image Sender plugin enabled")
+        GlobalScope.subscribeAlways<BotLoginSucceedEvent> {
+            logger.info("${this.bot.uin} login succeed, it will be controlled by Image Sender Plugin")
+            this.bot.subscribeMessages {
+
+                case("at me") {
+                    (At(sender) + " ? ").reply()
+                }
+
+                (contains("image") || contains("图")) {
+                    (At(sender) + " ? ").reply()
+                }
+            }
+        }
+    }
+
+    override fun onLoad() {
+        logger.info("loading...")
+    }
+
+    override fun onDisable() {
+
+    }
+}
\ No newline at end of file
diff --git a/mirai-plugins/image-sender/src/main/resources/plugin.yml b/mirai-plugins/image-sender/src/main/resources/plugin.yml
index 4f08b0986..1e6b39b29 100644
--- a/mirai-plugins/image-sender/src/main/resources/plugin.yml
+++ b/mirai-plugins/image-sender/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
 name: ImageSender
-main: net.mamoe.mirai.imageplugin.ImagePluginMain.kt.kt
+main: net.mamoe.mirai.imageplugin.ImagePluginMain
 version: 1.0.0
 author: mamoe
 info: a demo plugin of mirai