From 68e060d4d40bbc80d092764dc39da0e66458df96 Mon Sep 17 00:00:00 2001 From: jie65535 Date: Fri, 15 Apr 2022 12:00:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/RunMiraiKt.run.xml | 21 ++--- README.md | 6 +- build.gradle.kts | 2 +- settings.gradle.kts | 2 +- .../example/mirai/plugin/JavaPluginMain.java | 51 ---------- src/main/kotlin/JRandomPlugin.kt | 46 +++++++++ src/main/kotlin/PluginMain.kt | 93 ------------------- ...t.mamoe.mirai.console.plugin.jvm.JvmPlugin | 2 +- src/test/kotlin/RunMirai.kt | 9 +- 9 files changed, 62 insertions(+), 170 deletions(-) delete mode 100644 src/main/java/org/example/mirai/plugin/JavaPluginMain.java create mode 100644 src/main/kotlin/JRandomPlugin.kt delete mode 100644 src/main/kotlin/PluginMain.kt diff --git a/.run/RunMiraiKt.run.xml b/.run/RunMiraiKt.run.xml index 50947c8..b6a9f76 100644 --- a/.run/RunMiraiKt.run.xml +++ b/.run/RunMiraiKt.run.xml @@ -1,15 +1,10 @@ - - - + + \ No newline at end of file diff --git a/README.md b/README.md index c0285b4..eb7e200 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# mirai-console-plugin-template +# mirai-console-jrandom-plugin -[Mirai Console](https://github.com/mamoe/mirai-console) 插件模板, 使用 Kotlin + Gradle. - -[如何使用](https://github.com/project-mirai/how-to-use-plugin-template) +随意作品 \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 79b8ba3..0ff37c8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { id("net.mamoe.mirai-console") version "2.10.0" } -group = "org.example" +group = "top.jie65535" version = "0.1.0" repositories { diff --git a/settings.gradle.kts b/settings.gradle.kts index e47c53b..eb92064 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1 @@ -rootProject.name = "mirai-console-plugin-template" \ No newline at end of file +rootProject.name = "mirai-console-jrandom-plugin" \ No newline at end of file diff --git a/src/main/java/org/example/mirai/plugin/JavaPluginMain.java b/src/main/java/org/example/mirai/plugin/JavaPluginMain.java deleted file mode 100644 index 6bba1d2..0000000 --- a/src/main/java/org/example/mirai/plugin/JavaPluginMain.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.example.mirai.plugin; - -import net.mamoe.mirai.console.plugin.jvm.JavaPlugin; -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription; -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescriptionBuilder; -import net.mamoe.mirai.event.Event; -import net.mamoe.mirai.event.EventChannel; -import net.mamoe.mirai.event.GlobalEventChannel; -import net.mamoe.mirai.event.events.FriendMessageEvent; -import net.mamoe.mirai.event.events.GroupMessageEvent; - - -/** - * 使用 Java 请把 - * {@code /src/main/resources/META-INF.services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin} - * 文件内容改成 {@code org.example.mirai.plugin.JavaPluginMain}
- * 也就是当前主类全类名 - * - * 使用 Java 可以把 kotlin 源集删除且不会对项目有影响 - * - * 在 {@code settings.gradle.kts} 里改构建的插件名称、依赖库和插件版本 - * - * 在该示例下的 {@link JvmPluginDescription} 修改插件名称,id 和版本等 - * - * 可以使用 {@code src/test/kotlin/RunMirai.kt} 在 IDE 里直接调试, - * 不用复制到 mirai-console-loader 或其他启动器中调试 - */ - -public final class JavaPluginMain extends JavaPlugin { - public static final JavaPluginMain INSTANCE = new JavaPluginMain(); - private JavaPluginMain() { - super(new JvmPluginDescriptionBuilder("org.example.mirai-example", "0.1.0") - .info("EG") - .build()); - } - - @Override - public void onEnable() { - getLogger().info("日志"); - EventChannel eventChannel = GlobalEventChannel.INSTANCE.parentScope(this); - eventChannel.subscribeAlways(GroupMessageEvent.class, g -> { - //监听群消息 - getLogger().info(g.getMessage().contentToString()); - - }); - eventChannel.subscribeAlways(FriendMessageEvent.class, f -> { - //监听好友消息 - getLogger().info(f.getMessage().contentToString()); - }); - } -} diff --git a/src/main/kotlin/JRandomPlugin.kt b/src/main/kotlin/JRandomPlugin.kt new file mode 100644 index 0000000..89da04c --- /dev/null +++ b/src/main/kotlin/JRandomPlugin.kt @@ -0,0 +1,46 @@ +package top.jie65535.jrandom + +import net.mamoe.mirai.console.command.CommandManager.INSTANCE.register +import net.mamoe.mirai.console.command.SimpleCommand +import net.mamoe.mirai.console.command.CommandSender +import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription +import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin +import net.mamoe.mirai.event.GlobalEventChannel +import net.mamoe.mirai.event.subscribeMessages +import net.mamoe.mirai.utils.info +import java.awt.image.* +import javax.imageio.ImageIO + +object JRandomPlugin : KotlinPlugin( + JvmPluginDescription( + id = "top.jie65535.mirai-console-jrandom-plugin", + name = "随意插件", + version = "0.1.0" + ) { + author("jie65535") + info("随意插件") + } +) { + override fun onEnable() { + logger.info { "Plugin loaded" } + + GlobalEventChannel + .parentScope(this) + .subscribeMessages { + "test" reply { + + "OK" + } + } + + object : SimpleCommand(this, "test", description = "test") { + @Handler + suspend fun CommandSender.onCommand() { + val bi = BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB) + val ig2 = bi.createGraphics() + ig2.drawString("Hello world", 10, 100) + ImageIO.write(bi, "PNG", dataFolderPath.resolve("test.PNG").toFile()) + } + }.register() + } +} diff --git a/src/main/kotlin/PluginMain.kt b/src/main/kotlin/PluginMain.kt deleted file mode 100644 index f7d51b4..0000000 --- a/src/main/kotlin/PluginMain.kt +++ /dev/null @@ -1,93 +0,0 @@ -package org.example.mirai.plugin - -import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription -import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin -import net.mamoe.mirai.event.EventChannel -import net.mamoe.mirai.event.GlobalEventChannel -import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent -import net.mamoe.mirai.event.events.FriendMessageEvent -import net.mamoe.mirai.event.events.GroupMessageEvent -import net.mamoe.mirai.event.events.NewFriendRequestEvent -import net.mamoe.mirai.event.globalEventChannel -import net.mamoe.mirai.message.data.Image -import net.mamoe.mirai.message.data.Image.Key.queryUrl -import net.mamoe.mirai.message.data.PlainText -import net.mamoe.mirai.utils.info - -/** - * 使用 kotlin 版请把 - * `src/main/resources/META-INF.services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin` - * 文件内容改成 `org.example.mirai.plugin.PluginMain` 也就是当前主类全类名 - * - * 使用 kotlin 可以把 java 源集删除不会对项目有影响 - * - * 在 `settings.gradle.kts` 里改构建的插件名称、依赖库和插件版本 - * - * 在该示例下的 [JvmPluginDescription] 修改插件名称,id和版本,etc - * - * 可以使用 `src/test/kotlin/RunMirai.kt` 在 ide 里直接调试, - * 不用复制到 mirai-console-loader 或其他启动器中调试 - */ - -object PluginMain : KotlinPlugin( - JvmPluginDescription( - id = "org.example.mirai-example", - name = "插件示例", - version = "0.1.0" - ) { - author("作者名称或联系方式") - info( - """ - 这是一个测试插件, - 在这里描述插件的功能和用法等. - """.trimIndent() - ) - // author 和 info 可以删除. - } -) { - override fun onEnable() { - logger.info { "Plugin loaded" } - //配置文件目录 "${dataFolder.absolutePath}/" - val eventChannel = GlobalEventChannel.parentScope(this) - eventChannel.subscribeAlways{ - //群消息 - //复读示例 - if (message.contentToString().startsWith("复读")) { - group.sendMessage(message.contentToString().replace("复读", "")) - } - if (message.contentToString() == "hi") { - //群内发送 - group.sendMessage("hi") - //向发送者私聊发送消息 - sender.sendMessage("hi") - //不继续处理 - return@subscribeAlways - } - //分类示例 - message.forEach { - //循环每个元素在消息里 - if (it is Image) { - //如果消息这一部分是图片 - val url = it.queryUrl() - group.sendMessage("图片,下载地址$url") - } - if (it is PlainText) { - //如果消息这一部分是纯文本 - group.sendMessage("纯文本,内容:${it.content}") - } - } - } - eventChannel.subscribeAlways{ - //好友信息 - sender.sendMessage("hi") - } - eventChannel.subscribeAlways{ - //自动同意好友申请 - accept() - } - eventChannel.subscribeAlways{ - //自动同意加群申请 - accept() - } - } -} diff --git a/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin b/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin index 0bed70b..1194d22 100644 --- a/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin +++ b/src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin @@ -1 +1 @@ -org.example.mirai.plugin.PluginMain \ No newline at end of file +top.jie65535.jrandom.JRandomPlugin \ No newline at end of file diff --git a/src/test/kotlin/RunMirai.kt b/src/test/kotlin/RunMirai.kt index 9fdb837..6098d84 100644 --- a/src/test/kotlin/RunMirai.kt +++ b/src/test/kotlin/RunMirai.kt @@ -1,4 +1,4 @@ -package org.example.mirai.plugin +package top.jie65535.jrandom import net.mamoe.mirai.alsoLogin import net.mamoe.mirai.console.MiraiConsole @@ -9,16 +9,13 @@ import net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader suspend fun main() { MiraiConsoleTerminalLoader.startAsDaemon() - //如果是Kotlin PluginMain.load() PluginMain.enable() - //如果是Java -// JavaPluginMain.INSTANCE.load() -// JavaPluginMain.INSTANCE.enable() val bot = MiraiConsole.addBot(123456, "") { fileBasedDeviceInfo() - }.alsoLogin() + } +// .alsoLogin() MiraiConsole.job.join() } \ No newline at end of file